Java 安卓:手机睡眠时Wi-Fi强度不会改变

Java 安卓:手机睡眠时Wi-Fi强度不会改变,java,android,networking,wifi,Java,Android,Networking,Wifi,在做了一些测试后,我注意到当手机进入睡眠模式或锁定模式时,Wi-Fi信号强度(RSSI)和Wi-Fi链接速度不再改变(我正在运行a服务,并在后台录制强度和链接速度) 另一方面,即使手机进入睡眠模式,GPS位置也会发生变化 有没有解释为什么Wi-Fi强度会出现这种情况?如果是的话,是否有解决办法 以下是我用来获取Wi-Fi信息的功能: private int getStrengthFromWifi() { ConnectivityManager cm = (ConnectivityMana

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

原因是,当设备进入睡眠状态时,它会通过关闭非必要功能来节省电源。你可能会获取一个信号来跟踪信号强度和速度,但你会耗尽电池。。。因此,请谨慎使用。

原因是,当设备进入睡眠状态时,它会通过关闭非必要功能来节省电源。你可能会获取一个信号来跟踪信号强度和速度,但你会耗尽电池。。。因此,请谨慎使用。

您需要从系统获取WIFI\u模式\u完整\u高性能WifiLock,以便在系统进入低功率状态时继续接收WIFI事件的响应

请查看Android SDK文档中的wifi锁:

请务必查看此堆栈溢出问题的答案,以调整设置以确保wifi不睡眠:


XDA在这里为您提供了一些有用的信息:

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

请查看Android SDK文档中的wifi锁:

请务必查看此堆栈溢出问题的答案,以调整设置以确保wifi不睡眠:

XDA在这里为您提供了一些有用的信息: