はじめに
今回は端末のスリープモードに関する操作をアプリ内でおこうなえるようにしていきます。
実践
以下は、参考記事をもとに 画面をスリープさせないようにするコードです。
private lateinit var wakeLock: PowerManager.WakeLock
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
wakeLock = powerManager.newWakeLock(
PowerManager.FULL_WAKE_LOCK or PowerManager.ACQUIRE_CAUSES_WAKEUP,
"MyApp::MyWakelockTag"
)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
wakeLock.acquire()
}
override fun onDestroy() {
super.onDestroy()
if (wakeLock.isHeld) {
wakeLock.release()
}
このままコピペで使えると思います。
wakeLockをonCreate()で定義し直すときに、条件を増やしたり上の例とは違う条件を設定することができます。
左揃え | |
---|---|
PARTIAL_WAKE_LOCK | CPUだけ設定 |
SCREEN_DIM_WAKE_LOCK | CPUとScreenが一段階暗い状態に設定 |
SCREEN_BRIGHT_WAKE_LOCK | CPUとScreenを設定 |
FULL_WAKE_LOCK | CPU、Screen、KeyBoardを設定 |
ACQUIRE_CAUSES_WAKEUP | wakeLock取得されたときに、強制的にON |
ON_AFTER_RELEASE | wakeLock取得時に照明がすぐに消えないようにする |
また、acquire()の引数に時間を指定することで設定した時間の経過時間後に、wakeLockを動かすこともできるようです。
参考