« 2009年06月11日 | メイン | 2009年06月29日 »

2009年06月16日 アーカイブ

2009年06月16日

WakeLock

AndroidのPowerManager(電源マネージャ)にはWakeLockという仕組みがあります。PCでも一定時間放置しているとスクリーンセーバーになったり、スリープしたりしますよね。WakeLockは、簡単に言うと一定時間経過後に勝手に画面がOFFになってしまったり端末がスリープしたりすることを防ぎたいときに使うものです。以下のような種類があります。

フラグCPU画面キーボード
PARTIAL_WAKE_LOCKOnOffOff
SCREEN_DIM_WAKE_LOCKOnDim(薄暗い)Off
SCREEN_BRIGHT_WAKE_LOCKOnBright(明るい)Off
FULL_WAKE_LOCKOnBrightBright(明るい)

例えば、SCREEN_BRIGHT_WAKE_LOCKを設定すると、その間は、画面のライトはつきっぱなし、CPUもアクティブのままになります。ただしユーザーが明示的に端末の電源ボタンを押したときは、スリープします。PARTIAL_WAKE_LOCKだけが少し特殊で、ユーザーが電源ボタンを押して端末をスリープさせても、CPUは動き続けます。ユーザーのポケットの中に端末がある間も、センサーの値を取得したりGPSの値を取得したりしたいときに使います。(1.5からPARTIAL_WAKE_LOCKのときにセンサーの値が取得できるようになっているようです。)

コードとしてはすごく簡単です。

WakeLock wakelock = ((PowerManager)getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "[タグ名となる適当な文字列]");
・・・
// wakelockを取得
wakelock.acquire();
・・・
(処理)
・・・
// wakelockを解放
wakelock.release();

releaseは忘れないように、finallyなどでやった方がいいと思います。あと、容易に想像できますが、かなり電池食います。

About 2009年06月

2009年06月にブログ「GrandNature」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2009年06月11日です。

次のアーカイブは2009年06月29日です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。