ウェイクロックを設定すると、デバイスを一時的にスリープ状態から解除できます。
依存関係
アプリに、ウェイクロックを設定するための WAKE_LOCK
権限が付与されている必要があります。アプリのマニフェストに権限を追加します。
<uses-permission android:name="android.permission.WAKE_LOCK" />
ウェイクロックを作成して取得する
ウェイクロックを取得する手順は次のとおりです。
PowerManager.newWakeLock()
を呼び出してウェイクロックを作成します。これにより、PowerManager.WakeLock
オブジェクトが作成されて構成されますが、実際にはデバイスのスリープは解除されません。デバイスを常にスリープ解除状態にするには、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 タグの一部としてパッケージ名、クラス名、またはメソッド名を含めることをおすすめします。これにより、エラーが発生した場合に、ソースコードでウェイクロックを簡単に見つけることができます。詳細については、ウェイクロックに適切な名前を付けるをご覧ください。