Android BLE ACTION_ACL_CONNECTED no se llama para dispositivos emparejados
Estoy usando Android 4.4. Tengo 2 dispositivos Bluetooth, uno de la vieja escuela de Bluetooth y un BLE. Ambos son idénticos funcionalmente en cuanto a los datos que transmiten. Ambos tienen un solo botón que conecta y transmite datos cuando se presiona.
Tengo permisos de Bluetooth activado y registrado un BroadcastReceiver en mi manifiesto, así
- ¿Cómo puedo volver a conectar mi aplicación en cada apertura al mismo dispositivo bluetooth de baja energía?
- Navegación en interiores y seguimiento de personas usando BLE
- Intención de recibir notificación sobre el evento de conexión BLE en el periférico Android
- Intervalo de tiempo de conexión BLE de Android
- Android BLE- ¿Cómo se llama al método onScanResult en ScanCallback?
... <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> ... <receiver android:name=".BluetoothBroadcastReceiver"> <intent-filter> <action android:name="android.bluetooth.device.action.ACL_CONNECTED" /> <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" /> <action android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" /> </intent-filter> </receiver>
Para probar, simplemente estoy registrando las llamadas a onReceive en BroadcastReceiver
@Override public void onReceive(Context context, Intent intent) { Log.d(TAG, intent.getAction()); }
Aquí está el problema: ambos dispositivos se emparejan con el teléfono, pero sólo el dispositivo Bluetooth de la vieja escuela genera las transmisiones ACTION_ACL_CONNECTED / ACTION_ACL_DISCONNECTED cuando se presiona el botón del dispositivo Bluetooth. No ocurre nada cuando el dispositivo BLE intenta conectarse y transmitir.
Puedo conectar y recibir correctamente los datos del dispositivo BLE si estoy buscando activamente conexiones BLE usando
mBluetoothAdapter.startLeScan(mLeScanCallback);
¿Tengo que buscar explícitamente dispositivos BLE para permitirles conectarse? ¿Los dispositivos BLE generan emisiones ACTION_ACL_CONNECTED / ACTION_ACL_DISCONNECTED cuando no explora explícitamente dispositivos BLE? ¿O deberían conectarse automáticamente si están emparejados con el teléfono?
- La lectura de BLE de Android falla
- Desactivación del periférico que provoca un comportamiento inesperado
- Lista de dispositivos BLE para Android después de escanear dispositivos
- Dispositivos con Android 4.2 (Jelly Bean) compatible con Bluetooth de baja energía (BLE)
- Cómo obtener datos de un dispositivo Bluetooth LE
- Android Bluetooth LE - Leer las características que no funcionan en Samsung
- Android lolipop java.lang.SecurityException: Ni el usuario ni el proceso actual tiene android.permission.BLUETOOTH_PRIVILEGED
- La devolución de llamada de BLE start de Android BLE no se dispara incluso con permisos de ubicación
ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED
transmisiones ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED
solo son para BR / EDR (Classic Bluetooth), no para BLE.
Para BLE, debe trabajar con las API y devoluciones de llamada proporcionadas por las versiones más recientes de Android.