Android 4.1 デバイスで、Android の設定で [スリープ中に Wi-Fi をオンにする] を有効にしていますが、デバイスがスリープ状態になり、何時間も起動しないと、Wi-Fi への接続が失われます。これはバグですか?
もともと私のコードでは、次のように使用していました。
WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
this.wifiLock = wifiManager.createWifiLock("mywifilock");
this.wifiLock.acquire();
しかし、Android 4.1 には Wi-Fi を有効に保つ機能があるため、このコードを削除しました。Wi-Fi 接続を有効にしておくために、アプリで何かする必要がありますか?
私のコードはアクティビティのないサービスとして実行され、AlarmManager を使用して定期的にサービスを実行しています。上記のコードを onCreate に配置して、サービスが毎回再起動されたときに実行されるようにしました。「スリープ時に Wi-Fi をオンにしておく」の目的が何に使用されているのか理解できないかもしれません。なぜウェイクロックが必要なのですか?
また奇妙なのは、同じメーカーの Android 2.3 デバイスで接続が失われないことです。おそらくこれは Android 4.1 のバグでしょうか?