фоновый сервис используется для сканирования маяка? - PullRequest
0 голосов
/ 03 июля 2018

Я могу сканировать Маяк на переднем плане, используя beaconManager.startScan();, так что он дает информацию о маяках, доступную в этой области. тот же код, который я использую для сканирования маяка, и там я также получаю информацию о маяке. Но для сканирования маяка в фоновом режиме, я должен запустить службу. Так что это правильная практика для сканирования маяка с помощью службы .?

1 Ответ

0 голосов
/ 04 июля 2018

Тема выполнения сканирования Bluetooth в фоновом режиме на Android довольно… интересная / сложная в наши дни…

  1. Использование фоновой службы больше не является хорошим вариантом. Начиная с API 26 (Android 8.0), фоновые службы продолжают работать еще несколько минут, как только пользователь покидает приложение.

    (Возможно, это даже не хороший вариант на старых Android. В Estimote мы обнаружили, что некоторые именитые производители смартфонов на Android включают свои собственные «оптимизации» управления питанием в свои настраиваемые версии Android, которые, как правило, убивают фон услуги.)

  2. Вы можете использовать службу foreground , которая не имеет ограничений, но требует, чтобы вы показывали уведомление, информирующее пользователя о том, что ваше приложение все еще выполняет некоторую работу.

  3. Наконец, хорошие новости заключаются в том, что в Android 8.0 появился новый API для сканирования Bluetooth, где результаты сканирования BLE доставляются через PendingIntent, а не через стандартный обратный вызов. Это будет работать, даже если приложение тем временем было приостановлено / остановлено.

    ,%20android.bluetooth.le.ScanSettings,%20android.app.PendingIntent)" rel="nofollow noreferrer">startScan(List<ScanFilter> f, ScanSettings s, PendingIntent i)

    Плохая новость, конечно, поскольку это API 26 (Android 8.0) и выше, вы пока не можете на него сильно полагаться, так как переход на Android 8 все еще очень низок. Будущее для фонового сканирования BLE на Android выглядит светлым, но оно еще не совсем здесь.

-

Естественно, если вы используете готовую сканирующую библиотеку, лучше проконсультироваться с ее авторами о ее фоновых возможностях и о том, как их использовать.

Библиотека https://github.com/ufobeacons/Android-SDK (на первый взгляд, по крайней мере) не имеет собственной поддержки фона, поэтому, вероятно, лучше всего обернуть ее в службу переднего плана.

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