デバイスの電源状態をコントロールするためのクラス
このAPIを使うと、デバイスのバッテリーライフに重大な影響を及ぼす。
なので、本当に必要な時以外は WakeLocks を取得しないこと!
そして可能な限り最低レベルの使用にし、必要なくなったらすぐに開放する!
1. Context.getSystemService() でこのクラスのインスタンスを取得
2. newWakeLock() で PowerManager.WakeLock オブジェクトを生成する
3. このオブジェクトのメソッドを使って、デバイスの電源状態をコントロールする
こんな感じ
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
// ..screen will stay on during this section..
wl.release();
次の flag によって、システムの電源への影響度を変えられる。
これらは組み合わせられない。
Flag Value | CPU | Screen | Keyboard |
---|---|---|---|
PARTIAL_WAKE_LOCK | On* | Off | Off |
SCREEN_DIM_WAKE_LOCK | On | Dim | Off |
SCREEN_BRIGHT_WAKE_LOCK | On | Bright | Off |
FULL_WAKE_LOCK | On | Bright | Bright |
*PARTIAL_WAKE_LOCK を設定した場合、CPU はタイマーに関係なく、ユーザーが電源ボタンを押した後でも走り続ける。それ以外の wakelocks を選択した場合は、ユーザーは電源ボタンを使ってデバイスをスリープ状態にすることができる。
上記の flag に加えて、以下の2つの flags を組み合わせることができる。
これらは、スクリーンの挙動にのみ影響を与える。また、これらの flags は
PARTIAL_WAKE_LOCK と組み合わせても意味はない。
Flag Value | Description |
---|---|
ACQUIRE_CAUSES_WAKEUP | 通常の wake locks なので、実際に照明をつけることはない。その代わり、ユーザーの動作などによって、一度照明がつくとそのままの状態を保つ。この flag は WakeLock が取得されたとき、スクリーンとキーボードがすぐに立ち上がるように強制する。典型的には、ユーザーにとってすぐに見れることが重要な notifications などに使う。 |
ON_AFTER_RELEASE | この flag をセットすると、WakeLock が開放されたときにユーザーの activity timer がリセットされる。これによって照明がすこしだけ長くついたままになる。もし wake lock 状態を循環しているなら、ちらつきを減らすために使うことができる。 |
0 件のコメント:
コメントを投稿