Сканирование BLE на Android 8.0

Я разработал приложение, которое может сканировать близлежащие устройства (несколько видов маяков вокруг). Я сканирую, используя BluetoothLeScanner с CALLBACK_TYPE_ALL_MATCHES и пустым массивом ScanFilter (так как я хочу получить обратные вызовы для всех соседних устройств).

Мое приложение прекрасно работало на моем устройстве OnePlus 5 Android 7.x (и на нескольких других устройствах) - до тех пор, пока на моем устройстве не произойдет обновление до Android 8.0 OTA.

Я не уверен, что это проблема Android 8.0 или ошибка OnePlus Oxygen, но я сталкиваюсь со следующей ситуацией: вокруг меня много разных маяков, некоторые рекламируют стандартные пакеты ibeacon/eddystone, а другие рекламируют пользовательские пакеты.

Я получаю обратные вызовы (onScanResult) только для стандартных пакетов ibeacon/eddystone, а не для пользовательских. Перед обновлением я получил обратные вызовы для всех типов пакетов - стандартных и нестандартных.

Что-то изменилось в фильтре подчеркивания полученных пакетов в Android 8.0? Это ошибка в последней версии Oxygen OS? Должен ли я добавить какой-нибудь флаг для получения нестандартных пакетов?

Любая идея будет высоко ценится. Благодарю.

1 ответ

Решение

После изучения пакетов, отправленных каждым маяком, я выяснил, что один из пользовательских маяков отправил пакет с байтом неправильной длины данных. Это привело к тому, что пакет отфильтровывался ОС 8 (Android ИЛИ Oxygen) - для старых версий это не имело значения.

Теперь мне нужно поговорить с компанией по прошивке для исправления...

Другие вопросы по тегам