現在、Android アプリケーションで Wi-Fi の変更をリッスンしていますが、ほとんどの場合問題なく動作しますが、ユーザーがデバイスを持っているときは、画面が空白のときのようにアイドル/スリープ モードになります。彼らが Wi-Fi エリアに入って自動的に接続した場合、ユーザーが画面をオンにするまで意図はわかりません。これはよくないことであり、私のアプリケーションに関する苦情につながります。画面が起動するまで意図が分からない理由を誰か助けてもらえますか?
これが私のコードです:
放送受信者:
public class WifiReciever extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
String action = arg1.getAction();
if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION)){
return;
}
if (!noConnectivity)
{
if (aNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI)
{
//Handle connected case
Log.e("E", "GOT CONNECTION");
}
}
else
{
if (aNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI)
{
//Handle disconnected case
Log.e("E", "LOST CONNECTION");
}
}
}
実行中のサービスの場合、それを変数として持っています:
WifiReciever mConnectionReceiver;
そして、次の呼び出しでサービスの受信者を開始および停止します。
private synchronized void startMonitoringConnection()
{
IntentFilter aFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mConnectionReceiver, aFilter);
}
private synchronized void stopMonitoringConnection()
{
unregisterReceiver(mConnectionReceiver);
}
次のように CPU 時間を取得していることを確認するために、WakeLock を呼び出します。
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "CicCPULock");
wl.acquire();
ただし、画面が空白の場合に接続変更の意図を受け取ることはありませんが、ユーザーが Wi-Fi に足を踏み入れ、画面が空白のときに接続すると、画面がオンになっているときに 100% 動作します。意図を取得できません。誰かが私が見逃していることを知っていますか?