scanner - modulo bluetooth en android studio
Dispositivo BLE desconectado con dispositivo Android automáticamente. BLE de Android (2)
Estoy usando Android Nexus 7 para conectar un dispositivo a través del enlace Bluetooth Low Energy. Puedo conectar el dispositivo y permanecer conectado si no hago ninguna comunicación con el dispositivo.
Sin embargo, si habilito la notificación de una característica específica haciendo clic en un botón, el dispositivo se desconectará con la tableta luego de unos pocos segundos de transmisión de datos.
¿Alguien sabe cuál podría ser el problema? ¡Muchas gracias!
Aquí está mi código:
public boolean setCharacteristicNotification(boolean enabled){
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return false;
}
BluetoothGattService Service = mBluetoothGatt.getService(UUID_MY_SERVICE);
if (Service == null) {
Log.e(TAG, "service not found!");
return false;
}
BluetoothGattCharacteristic characteristic = Service.getCharacteristic(UUID_MY_CHARACTERISTIC);
final int charaProp = characteristic.getProperties();
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
return true;
}
return false;
}
Problema: estaba teniendo el mismo problema en Tesco Hudl 2, si transmito algunos datos tan pronto como Bluetooth está conectado, se desconectará.
Solución: espere unos segundos después de la conexión, parece funcionar bien.
(Respondida en una edición de pregunta. Convertida a una respuesta wiki de la comunidad. Consulte ¿Cuál es la acción adecuada cuando se agrega la respuesta a una pregunta a la pregunta en sí? )
El OP escribió:
Resolví este problema hoy.
Simplemente cambie
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
a
descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
Seguir:
Después de hacer algunas investigaciones y pruebas, descubrí que el problema de la desconexión automática tiene algo que ver con la interferencia entre Bluetooth y WIFI en el Nexus 7. Si apago el WIFI, el problema de desconexión de Bluetooth desapareció. Y este problema no ocurrió en Galaxy 3.4.5.