У меня есть очень простое приложение, которое периодически проверяет результаты сканирования wifiManager и запускает функцию, если определенный SSID находится в диапазоне, и другую функцию, если он находится вне диапазона. Мне нужно, чтобы это работало как можно ближе к реальному времени.
До 9.0 я использовал приемник вещания Wi-Fi, и он работал прекрасно. Но с 9.0 все изменилось. Я отошел от приемника вещания и попробовал WorkManager, но, что бы я ни пытался, я не могу получить последовательные результаты.
Я понимаю, что интервал повторения не гарантирован, но сейчас я использую 20 минут, а иногда он будет срабатывать только 2-3 раза за целый день. В большинстве случаев все идет хорошо, но иногда это может продолжаться часами без срабатывания, что делает его бесполезным для моих целей.
Как вы, ребята, справляетесь с фоновым сканированием wifi в мире post 9.0?
Вот мой код для WorkManager:
Constraints constraints =
new Constraints.Builder()
.setRequiresCharging(false)
.setTriggerContentMaxDelay(15, TimeUnit.MINUTES)
.build();
PeriodicWorkRequest connectWorker = new PeriodicWorkRequest.Builder(ConnectWorker.class, 20, TimeUnit.MINUTES)
.setConstraints(constraints)
.build();
WorkManager.getInstance(getApplicationContext()).enqueueUniquePeriodicWork("Scan Wifi", ExistingPeriodicWorkPolicy.REPLACE, connectWorker);