Android:手机睡眠时Wifi强度没有变化

时间:2013-02-25 21:57:04

标签: java android networking wifi

在做了一些测试之后,我注意到当手机进入睡眠模式或锁定模式时,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;
}

2 个答案:

答案 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来保持跟踪信号的强度和速度,但你会耗尽电池......所以请谨慎使用。