ウェイクロックを設定すると、デバイスを一時的に起動状態に保つことができます。
依存関係
ウェイクロックを設定するには、アプリに 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); PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag"); wakeLock.acquire();
このコードに関する主なポイント
コードがウェイクロック オブジェクトを作成するとき、クラスの名前をウェイクロック タグの一部として使用します。wake lock のタグの一部として、パッケージ名、クラス名、またはメソッド名を含めることをおすすめします。こうすることで、エラーが発生した場合に、ソースコード内のウェイクロックを特定しやすくなります。詳しくは、ウェイクロックに適切な名前を付けるをご覧ください。