1

经过一些测试,我注意到当手机进入睡眠模式或锁定模式时,Wi-Fi 信号强度(RSSI)和 Wi-Fi 链接速度不再变化(我正在运行 aa 服务并记录强度和后台链接速度)另一方面,即使手机进入睡眠模式,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;
}
4

2 回答 2

3

您需要从系统获取 WIFI_MODE_FULL_HIGH_PERF WifiLock 以便在系统进入低功耗状态时继续接收对 wifi 事件的响应。

请查看 wifi 锁的 Android SDK 文档:https ://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html

请务必查看此堆栈溢出问题的答案,以调整设置以确保 wifi 不会休眠: 如何在手机休眠时保持 Wifi 不断开连接?

XDA 在这里为您提供了一些有用的信息:http: //forum.xda-developers.com/showthread.php?t=1625705

于 2013-02-25T22:10:07.710 回答
2

解释是,当设备进入睡眠状态时,它会尝试通过关闭非必要功能来节省电量。您可能可以获取WakeLock以继续跟踪信号强度和速度,但您会耗尽电池电量......所以请谨慎使用。

于 2013-02-25T22:04:55.953 回答