Я пытаюсь сканировать сети Wi-Fi каждые 2 минуты. Я использую сервис для этого. Когда телефон «активен» или «используется» после звонка startscan()
, я получаю SCAN_RESULTS_AVAILABLE_ACTION
через 6 секунд. Так что я могу периодически сканировать Wi-Fi. Но после того, как к телефону в течение определенного времени (10 мин) никто не прикасался, startscan() перестает "работать" и только через 10 мин получает результат. Кто-нибудь испытал это?
startcan() имеет результат через 10 минут, когда телефон переходит в состояние ожидания
Ответы (1)
В соответствии с это я нашел решение - это потому, что политика сна Wi-Fi. Вы можете настроить ваше Wi-Fi-устройство так, чтобы оно никогда не переходило в спящий режим:
Settings.System.putInt(getContentResolver(),
Settings.System.WIFI_SLEEP_POLICY,
Settings.System.WIFI_SLEEP_POLICY_NEVER);
Убедитесь, что вы добавили это разрешение в файл AndroidManifest.xml
:
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
период сканирования будет 5-15с - и это автоматически - startscan()
звонить не нужно. дополнительную информацию о процессе сканирования Android можно найти здесь..
Изменить:
возможно, это даже лучшее решение, если вы хотите сканировать только горячие точки:WIFI_MODE_SCAN_ONLY
— его можно активировать:
WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiLock wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_SCAN_ONLY , "MyWifiLock");
if(!wifiLock.isHeld()){
wifiLock.acquire();
}
не забудьте выпустить его, больше информации о WifiLock
здесь
также определите это разрешение:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Edit2 это тоже работает:
вы можете периодически включать и отключать Wi-Fi:
WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if(wm.isWifiEnabled() == false) {
wm.setWifiEnabled(true);
}
затем сканируйте после того, как ваш широковещательный приемник получит действие, содержащее WIFI_STATE_ENABLED
дополнительных
getScanResults();
здесь. Кроме того, предположим, что вы включили беспроводную связь, а затем хотите снова отключить ее после сканирования — что, если пользователь включил ее во время сканирования (поэтому вам не следует ее отключать)? Есть ли способ узнать?
- person Mr_and_Mrs_D; 22.04.2013