1

いくつかのテストを行った後、電話がスリープモードまたはロックモードになったときに、Wi-Fi信号強度(RSSI)とWi-Fiリンク速度が変化しないことに気付きました(私はサービスと記録強度を実行していますバックグラウンドでのlinkspeed)一方、電話がスリープモードになっても、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

システムが低電力状態になったときに Wi-Fi イベントへの応答を受信し続けるには、システムから WIFI_MODE_FULL_HIGH_PERF WifiLock を取得する必要があります。

Wi-Fi ロックに関する Android SDK ドキュメントを確認してください: https://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html

Wi-Fi がスリープ状態にならないように設定を微調整する方法については、このスタック オーバーフローの質問への回答を必ず確認してください 。

XDA には、役に立つ情報がいくつかあります: http://forum.xda-developers.com/showthread.php?t=1625705

于 2013-02-25T22:10:07.710 に答える
2

説明は、デバイスがスリープ状態になると、不要な機能をオフにして電力を節約しようとするためです。信号の強度と速度を追跡し続けるためにWakeLockをフェッチすることもできますが、バッテリーを消耗するので、慎重に使用してください。

于 2013-02-25T22:04:55.953 に答える