Я хочу, чтобы мое приложение Android сканировало периферийные устройства BLE в фоновом режиме на неопределенный срок.
ПРИМЕЧАНИЕ. Я пытаюсь добиться того же, что и при сохранении и восстановлении состояния iOS, что отлично работает для меня.,Даже если система приостанавливает, приостанавливает (Android) или удаляет приложение из памяти, я хочу забрать рекламу.
Вся моя система обратного вызова BLE работает отлично, если обнаружено периферийное устройство.Проблема в том, что после нескольких минут работы (5 на некоторых устройствах) рекламные объявления больше не видны.Я могу сказать, потому что я взломал небольшой инструмент в реальном времени, чтобы увидеть, когда происходят открытия.
Вещи, которые я пробовал
Создание службы и ее продвижение вслужба переднего плана
Intent intent = new Intent(getApplicationContext(), DataCollectionService.class);
startService(intent);
//... and then from the service itself...
@Override
public void onCreate() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder
.setContentTitle("Adrich is running.")
.setContentText("You're all set. Keep an eye on your email inbox for sweet discounts.")
.setSmallIcon(R.drawable.adrich_android_notify_icon);
startForeground(1, builder.build());
}
Я также попытался (но затем удалил) систему таймера, которая перезапускает BLE через 10 секунд или около того.Я читал, что после Android 7.0 BLE останавливается через 30 минут .
Дело в том, что мое фоновое сканирование останавливается примерно через 5 минут.
Вопрос
Я беспокоюсь, что мне здесь не хватает чего-то действительно очевидного, поскольку фоновое сканирование работает так плохо.Любые рекомендации?Какие вещи можно попробовать, чтобы BLE фоновое сканирование работало лучше?