Androidメモ: スリープモードに遷移する/スリープから抜ける

ADB コマンドを使ってスリープモードに移行する/スリープから抜ける

ADB コマンドでスリープ状態に入る
$ adb shell "echo mem > /sys/power/state"
ADB コマンドでスリープ状態から抜ける
$ adb shell "echo on > /sys/power/state"

コード内からスリープモードに移行する(ベンダー向け情報)

プログラム内からスリープモードに移行するには、AndroidManifest.xmlDEVICE_POWER のパーミッション使用宣言を追加しておきます。

AndroidManifest.xml
<manifest ...>
    <uses-permission android:name="android.permission.DEVICE_POWER" />
</manifest>

適切にパーミッションが割り当てられると、コード内から以下のようにスリープへ移行することができます。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
pm.goToSleep(SystemClock.uptimeMillis() + 1);

このコードを実行するには、システム権限アプリとして動作している必要があります。 通常アプリから実行すると、以下のような SecurityException が発生します。

E/AndroidRuntime( 7118): java.lang.RuntimeException:
    Unable to create service com.example.sample.MyService:
    java.lang.SecurityException:
    Neither user 10052 nor current process has android.permission.DEVICE_POWER.