removed unsed files
This commit is contained in:
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
Copyright 2008 Nedim Jackman
|
||||
|
||||
This file is part of Wiiboard Simple
|
||||
|
||||
Wiiboard Simple is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Wiiboard Simple is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with Wiiboard Simple. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.example.fitbot.bluetooth;
|
||||
|
||||
/**
|
||||
* In very basic structure, all bluetooth devices have an address that the connection
|
||||
* is associated with.
|
||||
*/
|
||||
public interface BluetoothDevice {
|
||||
|
||||
/**
|
||||
* The fixed address of the device.
|
||||
* Constant throughout the connection of the device.
|
||||
*/
|
||||
public String getBluetoothAddress();
|
||||
|
||||
}
|
@@ -1,133 +0,0 @@
|
||||
package com.example.fitbot.bluetooth;
|
||||
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothSocket;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.UUID;
|
||||
|
||||
public class BluetoothManager {
|
||||
|
||||
private BluetoothAdapter bluetoothAdapter;
|
||||
private Context context;
|
||||
|
||||
public BluetoothManager(Context context) {
|
||||
this.context = context;
|
||||
this.bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||
}
|
||||
|
||||
public boolean isBluetoothSupported() {
|
||||
return bluetoothAdapter != null;
|
||||
}
|
||||
|
||||
public boolean isBluetoothEnabled() {
|
||||
return bluetoothAdapter.isEnabled();
|
||||
}
|
||||
|
||||
public void startDiscovery() {
|
||||
if (!isBluetoothEnabled()) {
|
||||
Log.e("BluetoothManager", "Bluetooth is not enabled");
|
||||
return;
|
||||
}
|
||||
|
||||
if (bluetoothAdapter.isDiscovering()) {
|
||||
bluetoothAdapter.cancelDiscovery();
|
||||
Log.d("BluetoothManager", "Cancelling current discovery process...");
|
||||
}
|
||||
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(BluetoothDevice.ACTION_FOUND);
|
||||
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
|
||||
context.registerReceiver(receiver, filter);
|
||||
|
||||
bluetoothAdapter.startDiscovery();
|
||||
Log.d("BluetoothManager", "Starting discovery process...");
|
||||
}
|
||||
|
||||
public final BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
|
||||
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
if (device.getName() != null && device.getName().contains("Nintendo RVL-WBC-01")) {
|
||||
Log.d("BluetoothManager", "Wii Balance Board found: " + device.getName() + " [" + device.getAddress() + "]");
|
||||
connectToDevice(device);
|
||||
}
|
||||
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
|
||||
context.unregisterReceiver(this);
|
||||
Log.d("BluetoothManager", "Discovery finished.");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public void connectToDevice(BluetoothDevice device) {
|
||||
new Thread(() -> {
|
||||
BluetoothSocket socket = null;
|
||||
final int MAX_RETRIES = 3;
|
||||
final long RETRY_DELAY_MS = 1000;
|
||||
boolean isConnected = false;
|
||||
|
||||
for (int attempt = 1; attempt <= MAX_RETRIES; attempt++) {
|
||||
try {
|
||||
UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
|
||||
socket = device.createRfcommSocketToServiceRecord(SPP_UUID);
|
||||
bluetoothAdapter.cancelDiscovery();
|
||||
|
||||
byte[] pinBytes = getPinBytes(device.getAddress());
|
||||
try {
|
||||
Method setPinMethod = device.getClass().getDeclaredMethod("setPin", byte[].class);
|
||||
setPinMethod.invoke(device, pinBytes);
|
||||
Log.d("BluetoothManager", "PIN set successfully");
|
||||
} catch (Exception e) {
|
||||
Log.e("BluetoothManager", "Failed to set PIN", e);
|
||||
}
|
||||
|
||||
socket.connect();
|
||||
Log.d("BluetoothManager", "Connected to Wii Balance Board");
|
||||
isConnected = true;
|
||||
break;
|
||||
} catch (IOException e) {
|
||||
Log.e("BluetoothManager", "Connection attempt " + attempt + " failed", e);
|
||||
if (attempt < MAX_RETRIES) {
|
||||
try {
|
||||
Thread.sleep(RETRY_DELAY_MS);
|
||||
} catch (InterruptedException ie) {
|
||||
Thread.currentThread().interrupt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (!isConnected && socket != null) {
|
||||
try {
|
||||
socket.close();
|
||||
} catch (IOException ex) {
|
||||
Log.e("BluetoothManager", "Could not close the client socket", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!isConnected) {
|
||||
Log.e("BluetoothManager", "All connection attempts failed.");
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
private byte[] getPinBytes(String address) {
|
||||
String[] addrParts = address.split(":");
|
||||
byte[] pin = new byte[addrParts.length];
|
||||
for (int i = 0; i < addrParts.length; i++) {
|
||||
pin[i] = (byte) Integer.parseInt(addrParts[addrParts.length - 1 - i], 16);
|
||||
}
|
||||
Log.i("BluetoothManager", "PIN: " + pin);
|
||||
return pin;
|
||||
}
|
||||
}
|
@@ -1,48 +0,0 @@
|
||||
package com.example.fitbot.wiiboard;
|
||||
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothSocket;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public class WiiBoard {
|
||||
private static final String TAG = "WiiBoard";
|
||||
|
||||
public static void connectToExtension(String address) {
|
||||
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(address);
|
||||
BluetoothSocket socket = null;
|
||||
final int maxTries = 3;
|
||||
int currentTry = 0;
|
||||
|
||||
while (currentTry < maxTries) {
|
||||
try {
|
||||
// Use reflection to create a BluetoothSocket without UUID
|
||||
Method m = device.getClass().getMethod("createRfcommSocket", new Class[]{int.class});
|
||||
socket = (BluetoothSocket) m.invoke(device, 1);
|
||||
|
||||
bluetoothAdapter.cancelDiscovery();
|
||||
socket.connect();
|
||||
|
||||
Log.i(TAG, "Connected to WiiBoard");
|
||||
// Handle your communication here
|
||||
|
||||
return; // Exit the method upon successful connection
|
||||
} catch (Exception e) { // Catching Exception to handle reflection exceptions too
|
||||
Log.e(TAG, "Attempt " + (currentTry + 1) + " failed to connect", e);
|
||||
currentTry++;
|
||||
try {
|
||||
// Wait a bit before retrying
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ie) {
|
||||
Log.e(TAG, "Interrupted while waiting to retry connection", ie);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Log.e(TAG, "Could not connect to WiiBoard after " + maxTries + " attempts.");
|
||||
}
|
||||
}
|
@@ -1,66 +0,0 @@
|
||||
package com.example.fitbot.wiiboard;
|
||||
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.util.Log;
|
||||
|
||||
public class WiiBoardDiscoverer {
|
||||
private BluetoothAdapter bluetoothAdapter;
|
||||
private Context context;
|
||||
private String discoveredAddress;
|
||||
private boolean isSearching;
|
||||
|
||||
private final BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
|
||||
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
String name = device.getName();
|
||||
if ("Nintendo RVL-WBC-01".equals(name)) {
|
||||
discoveredAddress = device.getAddress();
|
||||
Log.i("WiiBoardDiscoverer", "Discovered " + name + " " + discoveredAddress + ".");
|
||||
isSearching = false;
|
||||
bluetoothAdapter.cancelDiscovery();
|
||||
context.unregisterReceiver(this); // Important to unregister
|
||||
WiiBoard.connectToExtension(discoveredAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public WiiBoardDiscoverer(Context context) {
|
||||
this.context = context;
|
||||
this.bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||
if (bluetoothAdapter == null) {
|
||||
Log.i("WiiBoardDiscoverer", "Device doesn't support Bluetooth. Exiting.");
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
public void startWiiBoardSearch() {
|
||||
if (!isSearching && !bluetoothAdapter.isDiscovering()) {
|
||||
isSearching = true;
|
||||
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
|
||||
context.registerReceiver(receiver, filter);
|
||||
bluetoothAdapter.startDiscovery();
|
||||
Log.i("WiiBoardDiscoverer", "WiiBoard Discovery Started");
|
||||
}
|
||||
}
|
||||
|
||||
public void stopWiiBoardSearch() {
|
||||
if (bluetoothAdapter.isDiscovering()) {
|
||||
bluetoothAdapter.cancelDiscovery();
|
||||
}
|
||||
isSearching = false;
|
||||
try {
|
||||
context.unregisterReceiver(receiver);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// This can happen if the receiver was not registered or already unregistered
|
||||
Log.i("WiiBoardDiscoverer", "Receiver was not registered or already unregistered");
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,13 +0,0 @@
|
||||
package com.example.fitbot.wiiboard;
|
||||
|
||||
/**
|
||||
* Implement this interface to be notified of WiiBoards that are connected to. Register your
|
||||
* listener with an instance of WiiBoardDiscoverer.
|
||||
*/
|
||||
public interface WiiBoardDiscoveryListener {
|
||||
|
||||
/**
|
||||
* Is called by a WiiBoardDiscoverer when a WiiBoard has been found and successfully connected to.
|
||||
*/
|
||||
public void wiiBoardDiscovered(WiiBoard wiiboard);
|
||||
}
|
Reference in New Issue
Block a user