在做了一些测试之后,我注意到当手机进入睡眠模式或锁定模式时,Wi-Fi信号强度(RSSI)和Wi-Fi链接速度不再变化(我正在运行一个服务和记录力量和背景中的链接速度) 另一方面,即使手机进入睡眠模式,GPS位置也会发生变化。
为什么Wi-Fi强度会发生这种情况有什么解释吗?如果是这样,是否有解决办法?
以下是我用来获取Wi-Fi信息的功能:
private int getStrengthFromWifi() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo Info = cm.getActiveNetworkInfo();
if (Info == null || !Info.isConnectedOrConnecting()) {
Log.i("MyAppLog - no data (Wifi or Cellular)",
"No data (Wifi or Cellular)");
return 0;
} else {
int netType = Info.getType();
if (netType == ConnectivityManager.TYPE_WIFI) {
WifiManager wifiManager = (WifiManager) getApplicationContext()
.getSystemService(Context.WIFI_SERVICE);
int linkSpeed = wifiManager.getConnectionInfo().getLinkSpeed();
int wifiStrength = wifiManager.getConnectionInfo().getRssi();
Log.i("MyAppLog - Link Speed + Wifi Strength",
"Wifi Connection : linkSpeed " + linkSpeed
+ " and Wifi Strength " + wifiStrength);
return wifiStrength;
}
}
return 0;
}
答案 0 :(得分:3)
您需要从系统获取WIFI_MODE_FULL_HIGH_PERF WifiLock,以便在系统进入低功耗状态时继续接收对wifi事件的响应。
请查看有关wifi锁的Android SDK文档:https://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html
请务必查看此堆栈溢出问题的答案,以便调整设置以确保wifi不会睡眠: How do I keep Wifi from disconnecting when phone is asleep?
XDA在这里为您提供了一些有用的信息:http://forum.xda-developers.com/showthread.php?t=1625705
答案 1 :(得分:2)
解释是当设备进入休眠状态时,它会尝试通过关闭非必要功能来节省电量。你可以拿一个WakeLock来保持跟踪信号的强度和速度,但你会耗尽电池......所以请谨慎使用。