2017-01-03 5 views
1

J'ai fait une application Android qui a connecté et lu entrée bien avec Wii Balance Board, basé sur Fitscales code. Mon application a fonctionné comme un charme avec SDK 15 & 16 jusqu'à Android 4.4 (KitKat), lorsque Android a arrêté le support Wii. Le support Wii est maintenant réactivé, en commençant par Android 5.1.1. J'ai également mis en œuvre le nouveau schéma d'autorisation pour l'obtention des autorisations de connectivité Bluetooth (ACCESS_COARSE_LOCATION inclus)android 6+ Comment connecter la carte d'équilibre wii?

Mon problème est que je ne peux plus lire l'entrée de la Wii Balance Board.

je peux découvrir, créer le socket et lors de la connexion à la prise je reçois le message: read failed, socket might closed or timeout, read ret: -1

réponse qui m'a aidé à ce jour et ne fonctionne plus:

Create wiimote socket

How to connect

Certains codes:

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)); 
    } 
} 

Merci pour votre aide à l'avance.

Répondre

1

Il est intéressant de regarder les réponses à cette question - https://android.stackexchange.com/a/105285

Il semblerait que Android 4.1 et ci-dessous donne accès au protocole L2CAP pour se connecter à périphériques Bluetooth classiques (vers 2005 et plus), qui a été retiré de des versions plus récentes d'Android.