studio scanner recibir para libreria dispositivos detectar datos buscar bluetoothadapter app android bluetooth bluetooth-lowenergy

scanner - Android BLE ACTION_ACL_CONNECTED no llamado para dispositivo vinculado



libreria bluetooth android (1)

Estoy usando Android 4.4. Tengo 2 dispositivos Bluetooth, un Bluetooth de la vieja escuela y uno 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 presionan.

Tengo permisos de Bluetooth activados y registro un BroadcastReceiver en mi manifiesto, como tal

... <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 están emparejados con el teléfono, pero solo 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 datos con éxito desde el dispositivo BLE si busco activamente conexiones BLE usando

mBluetoothAdapter.startLeScan(mLeScanCallback);

¿Debo escanear explícitamente los dispositivos BLE para que puedan conectarse? ¿Los dispositivos BLE generan difusiones ACTION_ACL_CONNECTED / ACTION_ACL_DISCONNECTED cuando no se escanean explícitamente los dispositivos BLE? ¿O deberían conectarse automáticamente si están vinculados al teléfono?


ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED transmisiones ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED solo son para BR / EDR (Bluetooth clásico), no para BLE.

Para BLE debe trabajar con las API y devoluciones de llamada proporcionadas por las versiones más recientes de Android.