15

WiFI 経由でネットワーク データを送信するアプリケーションがあります。ディスプレイをオフにするか、デバイスが「スリープ」状態になるまで、すべて問題ありません。私はすでに WiFi をロックしていますが、スリープ中に CPU 速度が低下し、ストリーミングが適切に動作しない場合があるようです (つまり、パケットが思ったほど速く流れませんデバイスはスリープ状態ではありません)。

プロトコルレベルでこれに対処できる/対処する必要がある可能性があることはわかっていますが、それも可能ではない可能性があります...

「画面がオフのときにCPUが「スリープ」するのを防ぐ」方法はありますか? もしそうなら、どのように?そうでない場合、デバイスがスリープ モードかどうかに関係なく、WiFi ストリームの速度を一定に保つ方法について何かアドバイスはありますか?

4

2 に答える 2

13

PowerManagerからPARTIAL_WAKE_LOCKを取得します。また、マニフェストにWAKE_LOCK権限を追加する必要があります。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tag"); 
wl.acquire();
//do what you need to do
wl.release(); 
于 2011-10-01T01:13:53.757 に答える
11

さて、さらに多くの調査と実験を行った結果、実際の問題は、少なくとも一部の電話では、WiFi ロックを取得した場合でも、WiFiが「部分スリープ」モードになるという事実であるようです。これは、WiFiロックを取得するときに「WIFI_MODE_FULL_HIGH_PERF」フラグが発明されたもののようです...残念ながら、このフラグは一部のデバイス/ Androidバージョンでのみ使用できます(どのバージョンかはわかりませんが、使用できませんでした私に)。そのため、すべてのデバイスの修正ではありません。

唯一の「解決策」(これは実際には大したことではありません) は、「画面がオフになったことを検出し、その後すぐに画面をオンに戻すアラームを設定する」ことのようです。これに少し役立ったリンクは次のとおりです。

電話がスリープ状態になった後、タスクを存続させる方法は?

http://android.modaco.com/topic/330272-screen-off-wifi-off/

これが、電話がスリープ状態になったとき/画面がオフになったときに WiFi の中断を経験している人々に役立つことを願っています (そして、電話がプラグを抜かれている/切断されている [たとえば、adb に接続されているときはこの効果は見られません。電話が実行されている場合のみ)何も接続されていません])。

于 2011-10-11T16:30:20.810 に答える