Правильное использование диапазона Wi-Fi RTT в Android 9

Android 9 (Pie) представляет ранжирование Wi-Fi RTT для на основе геолокации.

В версиях до Android 8 (Oreo) приложения периодически запрашивали сканирование Wi-Fi. Эта функция массово заблокирована в Android 9: приложение переднего плана. теперь может запрашивать максимум 4 сканирования в 2-минутном окне; фоновые приложения ограничены одним сканированием в 30 минут для всех фоновых приложений вместе взятых. Единственный способ избежать этого дросселирования — это разрешение NETWORK_SETTINGS, которое, однако, является разрешением подписи (я понимаю, что оно должно быть подписано тем же ключом, что и сборка ОС, независимо от того, является ли это системным приложением) и, таким образом, недоступны для сторонних приложений.

Я понимаю, что диапазон Wi-Fi RTT может быть инициирован только с помощью ScanResult, поэтому мне нужно сначала запустить сканирование Wi-Fi. Тем не менее, я мог бы, по-видимому, обойти ограничение, повторно используя один и тот же результат сканирования для пары запросов на диапазон RTT, за счет отсутствия новых Wi-Fi в течение некоторого времени.

Тем не менее, в документах также упоминается регулирование диапазона Wi-Fi RTT, однако без указания ограничений.

Наконец, WifiManager.startScan() устарело, и приложения больше не могут возможность запуска сканирования в будущих версиях.

Вопросы:

  • Каковы ограничения для запроса диапазона Wi-Fi RTT?
  • Как правильно получить ScanResult, который мне нужен, чтобы запустить запрос диапазона RTT?

person user149408    schedule 20.08.2018    source источник
comment
Извините, если спрашиваю вне контекста. Можно ли обойти дросселирование с помощью собственных вызовов драйвера WiFi? Или это невозможно? Спасибо.   -  person Gregory Stein    schedule 28.11.2018


Ответы (1)


Я не видел никакой документации об ограничениях, но из исходного кода Android вы видите по крайней мере это:

  • фоновые приложения ограничены диапазоном один раз в 30 минут
  • максимум 20 запросов на ранжирование могут быть в очереди на каждое приложение

Исходный код реализации службы Wifi RTT находится здесь: https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/android-9.0.0_r3/service/java/com/android./server/wifi/rtt/RttServiceImpl.java

Google закрыл большинство тем, связанных с регулированием Wi-Fi, в отслеживаемых проблемах с комментарием «будет использован для улучшения будущей версии Android», но есть такие активные: https://issuetracker.google.com/issues/112688545 Не могли бы вы задать свой вопрос там?

person marko.tm    schedule 21.08.2018