« GDDフォンでのデバッグ | メイン | Android SDK WG 第5回 セッションの申込を開始しました »

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などでやった方がいいと思います。あと、容易に想像できますが、かなり電池食います。

トラックバック

このエントリーのトラックバックURL:
http://www.grandnature.net/bin/mt-tb.cgi/124

コメントを投稿

About

2009年06月16日 18:14に投稿されたエントリーのページです。

ひとつ前の投稿は「GDDフォンでのデバッグ」です。

次の投稿は「Android SDK WG 第5回 セッションの申込を開始しました」です。

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