Android Bluetooth Scan para dispositivos clásicos y BTLE
La documentación de Android indica:
Note: You can only scan for Bluetooth LE devices or scan for Classic Bluetooth devices, as described in Bluetooth. You cannot scan for both Bluetooth LE and classic devices at the same time.
Sin embargo, estoy notando que llamar a mBtAdapter.startDiscovery (); Está devolviendo clásicos y btle dispositivos. ¿Alguien sabe lo que es correcto aquí?
- Implementación del perfil de soporte de protocolo de Internet (IPSP) para Bluetooth Low Energy en Android
- La publicidad de Bluetooth LE falla cuando se inicia y se detiene cíclicamente
- Android 4.4.4 Moto G Bluetooth LE vuelve a conectar el problema
- Obtención de datos de byte scanRecord diferentes para el mismo dispositivo BLE al escanear con diferentes versiones del dispositivo android
- Suscribirse a una notificación BLE Gatt Android
- Seguridad de emparejamiento BLE
- ¿Cómo enviar datos a través de un enlace Bluetooth Low Energy (BLE)?
- Conexiones Bluetooth y Bluetooth LE simultáneas, ¿es posible?
- ¿Cómo reiniciar BluetoothLeScanner?
- Android Lollipop BLE scan - obtener periféricos sin duplicaciones
- ¿Es posible conectar iOS y dispositivos Android con Bluetooth?
- Android Ble desconexión de tiempo
- Desconexión del dispositivo BLE con el dispositivo Android automáticamente. Android BLE
A mi entender lo que significa la documentación es que no puedes tener un startLeScan () y un startDiscovery () ejecutándose al mismo tiempo. La razón puede ser que sólo hay un objeto BluetoothAdapter (el objeto que representa el hardware Bluetooth local), por lo que no puede realizar dos operaciones diferentes que usen BluetoothAdapter al mismo tiempo (si alguien sabe algo diferente en cuanto a cómo funciona en el Fondo, háganoslo saber)
StartLeScan () -> escanea sólo para dispositivos BLE
StartDiscovery () -> descubre todos los dispositivos Bluetooth, también sólo escanea durante 12 segundos y esto no se puede cambiar (tener una lectura a través de la descripción del método)
Nota: Después de realizar una exploración de consulta startDiscovery () cuando se encuentra un dispositivo BT, puede obtener el tipo de dispositivo para identificar qué es cada dispositivo. Por ejemplo:
int deviceType = device.getType(); if(deviceType == BluetoothDevice.DEVICE_TYPE_CLASSIC) { } else if(deviceType == BluetoothDevice.DEVICE_TYPE_LE) { } else if(deviceType == BluetoothDevice.DEVICE_TYPE_DUAL) { } else if(deviceType == BluetoothDevice.DEVICE_TYPE_UNKNOWN) { }
- No puedo mostrar la lista en un diálogo con setMultiChoiceItems en Android
- Lista de capas de Android XML: cómo colocar la capa superior