Android erreur du GATT (133) lors de la connexion à l'appareil
j'essaie de me connecter à un périphérique BLE en utilisant L'adresse MAC.
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(rememberedDeviceAddress)
bluetoothDevice.connectGatt(context, false, bluetoothGattCallback);
je reçois un rappel à BluetoothGattCallback.onConnectionStateChange
status = 133
et newState = 2
même quand mon appareil est éteint.
newState = 2 se réfère à BluetoothProfile.STATE_CONNECTED
ce qui signifie que je suis connecté au périphérique et que status = 133 est GATT_ERROR (au lieu de status = 0 SUCCESS)
je n'ai pas l' Échec pour enregistrer callback erreur.
appareil: un plus un (Android 4.4)
toute indication sur ce qui pourrait causer ce problème serait utile.
Note: le problème ne se produit pas sur tous les appareils. Tout semble bien fonctionner sur Nexus 5 avec Android 5.0
Veuillez trouver ci-dessous la trace de la pile:
03-06 13:00:11.994: D/BluetoothGatt(26771): registerApp()
03-06 13:00:11.994: D/BluetoothGatt(26771): registerApp() - UUID='uuid comes here'
03-06 13:00:12.004: D/BluetoothGatt(26771): onClientRegistered() - status=0 clientIf=5
03-06 13:00:42.004: D/BluetoothGatt(26771): onClientConnectionState() - status=133 clientIf=5 device='device id comes here'
1 réponses
certains périphériques nécessitent des interactions Bluetooth LE pour être exécutées sur le thread de L'interface utilisateur. Je recommande donc d'essayer quelque chose comme ceci:
// Create handler for main thread where mContext is application context
mHandler = new Handler(mContext.getMainLooper());
...
// Connect to BLE device from mHandler
mHandler.post(new Runnable() {
@Override
public void run() {
mBTGatt = mBTDevice.connectGatt(mContext, false, mGattCallback);
}
});
bien sûr, vous pouvez utiliser de l'Activité.runOnUiThread aussi. Source:https://stackoverflow.com/a/23478737