Android 8+ фоновое сканирование BLE для всех новых маяков - PullRequest
0 голосов
/ 07 сентября 2018

В прошлом мы успешно использовали AlarmManager для периодического сканирования маяков BLE (рекламодателей), но мы сталкиваемся с очень распространенными проблемами с Android 8.1+. В частности - наш BroadcastReceiver не запускается AlarmManager, когда наше приложение некоторое время находилось в фоновом режиме.

У Дэвида Янга есть отличная запись в блоге, описывающая эту общую проблему здесь: http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8

В нем поясняется, что Android 8.1+ можно настроить с помощью StartScan для вызова BroadcastReceiver, когда ОС проверяет новый маяк. Все хорошо. Далее в записи блога поясняется, что, хотя этот новый маяк все еще можно сканировать, триггеры BroadcastReceiver не будут срабатывать - даже при сканировании новых маяков (с идентификаторами, отличными от первого сканированного маяка). Нехорошо. Далее в записи блога описывается, как может происходить явное сканирование приложения, но такое сканирование может запускаться только планировщиком заданий с интервалами до 25 минут.

В нашем приложении нам нужно видеть, когда каждый маяк сканируется заново (то есть он только что включен или попал в зону действия). Нам не нужно отслеживать, если он все еще сканируется. Критически важно - мы должны быть в состоянии найти дополнительные маяки, которые попадают в зону действия или включаются, пока оригинальный маяк еще можно сканировать. Также важно то, что мы можем быстро получить BroadcastReceiver для этих дополнительных маяков (думаю, 30 секунд или меньше).

Существует ли метод, который поддерживает перезапуск сканирования для получения BroadcastReceiver для каждого маяка при его новом сканировании (т. Е. При первом сканировании)? Например, можем ли мы остановить и возобновить сканирование при первом сканировании маяка? Должен быть способ сделать это. Я не могу поверить, что Android ограничил бы обнаружение нового маяка каждые 25 минут, если другой маяк уже был отсканирован и все еще сканируем.

...