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);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyClassName::MyWakelockTag");
wakeLock.acquire();

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

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

関連ドキュメント