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

Ответ, который помог мне до сих пор и больше не работает:

Создать гнездо wiimote

Как подключиться

Некоторый код:

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.

Другие вопросы по тегам