Después de actualizar a la versión 6.0 de Android Bluetooth Low Energy (BLE), el escaneo solo funcionará si los servicios de ubicación están habilitados en el dispositivo. Consulte aquí como referencia: Bluetooth Low Energy startScan en Android 6.0 no encuentra dispositivos
Básicamente, debe tener el permiso habilitado para la aplicación y también para el teléfono. ¿Es esto un error? ¿Es posible escanear sin que los servicios de ubicación estén realmente habilitados? No quiero tener la ubicación de todas mis aplicaciones.
EDITAR
No mencioné que estoy usando el startScan()
método BluetoothLeScanner
proporcionado en API 21. Estoy de acuerdo con el curso y los permisos de ubicación fina en el manifiesto que requiere este método. Simplemente no quiero que los usuarios de mi aplicación tengan que habilitar los servicios de ubicación en su dispositivo (GPS, etc.) para usar mi aplicación.
Anteriormente, el startScan()
método se ejecutaba y devolvía resultados con los servicios de ubicación deshabilitados en el teléfono. En Marshmallow, sin embargo, la misma aplicación "escaneaba" pero fallaba silenciosamente y no devolvía ningún resultado cuando los servicios de ubicación no estaban habilitados en el teléfono y los permisos del curso / ubicación fina todavía estaban en el manifiesto.