根据this,我找到了解决方案-这是因为the Wifi sleep policy。
您可以设置您的 wifi 设备永不休眠:
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 扫描过程的更多信息,请参见 here。
编辑:
如果您只想扫描热点,这可能是更好的解决方案:
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();
}
别忘了发布它,更多关于WifiLockhere的信息
还要定义这个权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Edit2 这也可以:
您可以定期启用和禁用 wifi:
WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if(wm.isWifiEnabled() == false) {
wm.setWifiEnabled(true);
}
然后在您的广播接收器收到包含WIFI_STATE_ENABLED extra 的操作后进行扫描