android 6+ Как подключить балансную плату wii?
Я сделал приложение для Android, которое подключало и прекрасно считывало данные с баланса Wii на основе кода Fitscales. Мое приложение работало как шарм с SDK 15 и 16 до Android 4.4 (KitKat), когда Android прекратил поддержку Wii. Поддержка Wii теперь включена, начиная с Android 5.1.1. Я также реализовал новую схему разрешений для получения разрешений подключения Bluetooth (в том числе ACCESS_COARSE_LOCATION)
Моя проблема в том, что я не могу больше читать информацию о балансе Wii.
Я могу обнаружить, создать сокет и при подключении к сокету я получаю сообщение: read failed, socket might closed or timeout, read ret: -1
Ответ, который помог мне до сих пор и больше не работает:
Некоторый код:
private BluetoothSocket createBluetoothSocket(
int type, int fd, boolean auth, boolean encrypt, String address, int port){
try {
Constructor<BluetoothSocket> constructor = BluetoothSocket.class.getDeclaredConstructor(
int.class, int.class,boolean.class,boolean.class,String.class, int.class);
constructor.setAccessible(true);
BluetoothSocket clientSocket = constructor.newInstance(type,fd,auth,encrypt,address,port);
return clientSocket;
} catch (Exception e) {
Log.v(TAG,"createBluetoothSocket failed: "+errorMsg(e));
return null;
}
}
private connectWii(String MAC) {
try {
// MAC is the MAC address of Wiiboard
int TYPE_L2CAP=3;
sk = createBluetoothSocket(TYPE_L2CAP, -1, false,false, MAC, 0x13);
// this fires read failed, socket might closed or timeout, read ret: -1
sk.connect();
} catch (Exception e) {
Log.v(TAG,"Failed : "+errorMsg(e));
}
}
Заранее благодарю за помощь.
1 ответ
Стоит посмотреть ответы на этот вопрос - https://android.stackexchange.com/a/105285
Похоже, что Android 4.1 и ниже обеспечивает доступ к протоколу L2CAP для подключения к классическим устройствам Bluetooth (около 2005 года и старше), который был удален из более поздних сборок Android.