wake lock を設定する

ウェイクロックを設定すると、デバイスを一時的に起動状態に保つことができます。

依存関係

ウェイクロックを設定するには、アプリに WAKE_LOCK 権限が必要です。アプリのマニフェストに権限を追加します。

<uses-permission android:name="android.permission.WAKE_LOCK" />

ウェイクロックを作成して取得する

ウェイクロックを取得する手順は次のとおりです。

  1. PowerManager.newWakeLock() を呼び出して、ウェイクロックを作成します。これにより、PowerManager.WakeLock オブジェクトが作成されて構成されますが、デバイスが実際にスリープ状態にならないわけではありません。

  2. デバイスを起動状態に保つには、wake lock オブジェクトの acquire() メソッドを呼び出します。

たとえば、サービスを利用してなんらかの処理を行うブロードキャスト レシーバがアプリに含まれている場合は、次のコードを使用して wake lock を設定して取得できます。

Kotlin

val wakeLock: PowerManager.WakeLock =
    (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
        newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag").apply {
            acquire()
        }
    }

Java

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock =
        powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag");
wakeLock.acquire();

このコードに関する主なポイント

コードがウェイクロック オブジェクトを作成するとき、クラスの名前をウェイクロック タグの一部として使用します。wake lock のタグの一部として、パッケージ名、クラス名、またはメソッド名を含めることをおすすめします。こうすることで、エラーが発生した場合に、ソースコード内のウェイクロックを特定しやすくなります。詳しくは、ウェイクロックに適切な名前を付けるをご覧ください。

関連ドキュメント