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.onConnectionStateChangestatus = 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'
12
demandé sur Dheerubhai Bansal 2015-03-06 10:33:40

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

3
répondu Emeritus 2017-05-23 12:34:09