2分ごとにwifiネットワークをスキャンしようとしています。そのためのサービスを利用しています。電話をかけた後、電話が「アクティブ」または「使用中」の場合、6秒でstartscan()
取得します。SCAN_RESULTS_AVAILABLE_ACTION
だから私は定期的にwifiをスキャンすることができます。しかし、電話が特定の時間(10分)誰にも触れられなかった後、startscan()は「動作」を停止し、10分後にのみ結果が得られます。誰かがこれを経験しましたか?
質問する
2592 次
1 に答える
3
これによると、私は解決策を見つけました - これは、Wifi スリープ ポリシーが原因です。これを使用して、wifi デバイスがスリープ状態にならないように設定できます。
Settings.System.putInt(getContentResolver(),
Settings.System.WIFI_SLEEP_POLICY,
Settings.System.WIFI_SLEEP_POLICY_NEVER);
AndroidManifest.xml
この権限をファイルに追加したことを確認してください。
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
スキャン期間は 5 ~ 15 秒です。これは自動的に行われます。電話する必要はありませんstartscan()
。Android スキャン プロセスの詳細については、こちらを参照してください。
編集:
ホットスポットのみをスキャンしたい場合、これはさらに良い解決策かもしれません:
WIFI_MODE_SCAN_ONLY
- 次の方法でアクティブ化できます:
WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiLock wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_SCAN_ONLY , "MyWifiLock");
if(!wifiLock.isHeld()){
wifiLock.acquire();
}
それを解放することを忘れないでください。WifiLock
ここ
に関する詳細情報
もこの許可を定義しています:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Edit2これも同様に機能します。Wi
-Fi を定期的に有効または無効にすることができます。
WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if(wm.isWifiEnabled() == false) {
wm.setWifiEnabled(true);
}
次に、ブロードキャストレシーバーがWIFI_STATE_ENABLED
エクストラを含むアクションを取得した後にスキャンします
于 2013-02-16T13:39:01.687 に答える