読者です 読者をやめる 読者になる 読者になる

kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

スリープ状態を解除する(コードから解除する)

Android Studio 開発
端末をスリープ状態から解除するコードの一例です

 アラームやタイマーアプリの鳴動時に、ユーザーに知らせるために端末のスリープ状態を解除したい場合に有効です。
 端末をスリープから解除する(画面の明かりを点ける)ための処理をサンプルメソッドのwakeFromSleep()にまとめているので、必要に応じて呼び出します。

private KeyguardManager keyguard;
private KeyguardManager.KeyguardLock keylock;
private PowerManager.WakeLock wakelock;

private void wakeFromSleep() {
        wakelock = ((PowerManager) getSystemService(android.content.Context.POWER_SERVICE))
                .newWakeLock(PowerManager.FULL_WAKE_LOCK
                        | PowerManager.ACQUIRE_CAUSES_WAKEUP
                        | PowerManager.ON_AFTER_RELEASE, "disableLock");
        wakelock.acquire(20000);

        keyguard = (KeyguardManager) getSystemService(android.content.Context.KEYGUARD_SERVICE);
        keylock = keyguard.newKeyguardLock("disableLock");
        keylock.disableKeyguard();
    }

wakelock.acquire(20000)は、画面がオンになってから20秒間操作がないと、画面を消灯します。
同時に、キーロックも解除していますので、セキュリティ上の問題を考慮して記述をお願いします。

マニフェストに、以下のパーミッションを追加する必要があります。
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />