Непрерывное сканирование для устройств BLE - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть устройство BLE, которое пытается передавать данные в течение 20 секунд с интервалом от 15 минут до часа.Это устройство сопряжено с мобильным телефоном, поэтому используется шифрование.Я надеялся, что из-за сопряжения будет запущена трансляция BluetoothDevice.ACTION_ACL_CONNECTED, так что я смогу просто получить данные с помощью IntentService.

К сожалению, трансляция не запускается, я думаю, что это потому, что нет реальноготребуется соединение с устройствами BLE, в отличие от традиционных устройств Bluetooth.

Насколько я могу судить, единственный способ выполнить эту работу - использовать BluetoothLeScanner в службе.Продолжительность передачи мала по сравнению с интервалом, поэтому необходимо непрерывное сканирование.Тайм-аут сканирования составляет 30 минут, поэтому сканирование необходимо периодически перезапускать.Кроме того, поскольку в Android 8 больше не работают фоновые службы, это означает, что я должен либо использовать службу переднего плана, либо использовать JobScheduler для выполнения 30 минут сканирования каждые 30 минут.

Так что теперь вопросявляется: Какова лучшая практика в этом случае?

Я нашел похожий вопрос ( Создание фоновых служб для Bluetooth с низким энергопотреблением на Android ), но ему более 4 лет, так что, возможно, былинекоторые изменения в Android, чтобы сделать это проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...