Как некоторая информация от здесь и здесь . Мы знаем в Android P
Каждое приложение переднего плана может сканировать 4 раза за 2 минуты
Все фоновые приложения могут сканироваться один раз за 30 минут
После тестирования я вижу, что с 5-го сканирования (через 2 минуты) сканирование регулируется как
WifiService: startScan uid=10085
WifiScanRequestProxy: Scan request from vn.linh.androidwifiscanner throttled
Возвращает старое значение немедленно (в onReceive
) без любой ошибки или исключения. Тогда я не знаю, какое значение из дросселированного сканирования.
В настоящее время я хочу показать всплывающее окно с обратным отсчетом через 2 минуты после сканирования пользователем более 4 раз (после сканирования с дросселированием).
Конечно, я могу посчитать общее время сканирования пользователя за 2 минус вручную , но я думаю, что это не очень эффективно (например: если приложение поддерживает рабочий фон, нам нужно проверить другим способом или даже в следующем Android они позволяют 5 вместо 4, ...)
Кто-нибудь сталкивался с этой проблемой и нашел эффективный способ ее решения?
Вот мой текущий код
class MainActivity : AppCompatActivity() {
lateinit var wifiManager: WifiManager
public override fun onCreate(savedInstanceState: Bundle?) {
...
button_scan.setOnClickListener {
scanWifiNetworks()
}
wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
}
private fun scanWifiNetworks() {
registerReceiver(wifiReceiver, IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
val success = wifiManager.startScan()
if (!success) {
scanFailure()
}
Toast.makeText(this, "Scanning", Toast.LENGTH_SHORT).show()
}
private fun scanFailure() {
Toast.makeText(this, "Scan failure", Toast.LENGTH_SHORT).show()
}
private var wifiReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
Log.d(TAG, "onReceive " + wifiManager.scanResults.size)
unregisterReceiver(this)
}
}
}
https://github.com/PhanVanLinh/AndroidWifiScanner
Любая помощь или предложение будут с благодарностью.