Сканирование Bluetooth не работает в фоновом режиме на Android10 - PullRequest
0 голосов
/ 17 июня 2020

В настоящее время я разрабатываю приложение, которое подключает Bluetooth на Android10 и сканирует вокруг него маяки.

Я создал службу под названием Publi c class MyService extends Service выполняет BeaconConsumer Чтобы использовать BeaconManager в MyService, это объявлено следующим образом, защищенный stati c BeaconManager beaconManager;

в части onStartCommand Он настроен на использование в качестве службы переднего плана с помощью beaconManager.enableForegroundServiceScanning.

MyService запускается из start Activity, MainActivity , как startService. Когда окно Активности открыто, функция сканирования работает без проблем. Однако функция сканера не работает в режиме ожидания приложения или во всех режимах дремоты. Щелкните значок уведомления еще раз, чтобы активировать окно «Активность», и сканер заработает.

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

1 Ответ

2 голосов
/ 19 июня 2020

Если у вас есть служба переднего плана, ваше сканирование должно работать правильно.

Но если вы использовали не службу переднего плана, а только простую службу, ваше решение не будет работать, потому что, начиная с Android 23, режим DOZE очистит все задания и службы, которые вы запускаете в фоновом режиме.

Кстати, пробуждение в режиме DOZE - это настоящая проблема, и иногда даже setAndAllowWhileIdle() или setExactAndAllowWhileIdle() не помогут избежать этого.

Подробнее о работе можно найти Режим дремоты со сканированием по Bluetooth в этой статье .

Также здесь - это информация о режиме DOZE от Google.

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