私は検索しましたが、この質問に対する答えを見つけることができませんでした。私は常に実行されるアプリに取り組んでいます。Wi-Fi を使用していますが、デバイスがスリープ状態になるまですべて正常に動作します。1 つのデバイスがマルチキャスト パケットを送信し、もう 1 つのデバイスがそれらを取得して起動する必要がありますが、そうではありません。現在、ネットワーク スレッドはStartService()
、メイン クラスから開始されたサービス スレッドから開始されています。このサービスでは、wifi ロックと wifi マルチキャスト ロックを取得して、デバイスがスリープ状態のときに wifi とマルチキャストがオンのままになるようにします。また、ミックスに部分的なウェイクロックを追加しようとしましたが、まだ何も機能しません。何か案は?私は現在、アンドロイド 2.3.3 を実行している 2 つのネクサスで開発しています。
1226 次
1 に答える
1
WakeLockでPowerManager.ACQUIRE_CAUSES_WAKEUPフラグを設定する必要がありますが、PowerManager.ACQUIRE_CAUSES_WAKEUPフラグはPowerManager.PARTIAL_WAKE_LOCKでは機能しませんが、PowerManager.SCREEN_DIM_WAKE_LOCKでは機能するはずです。以下のコードは、WakeLockでacquire()を呼び出すと、デバイスのディスプレイとCPUをウェイクアップする必要があります。5秒間の睡眠は、WiFiが目を覚ますのに十分な時間を与えるはずです。
WakeLock lock = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
lock.acquire();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
// do work here..
lock.release()
于 2011-11-13T21:21:46.087 に答える