画面のスリープを無効にする
カップ麺タイマーをつくっていて気づいたが、今のままだとタイマーが動いているうちにAndroid端末がスリープ状態になってしまい、時間がわからなくなってしまうという致命的な問題がある。
今回はKotlinのコード上で画面のスリープを無効にしたので方法をメモしておく。
環境
開発PC環境
Windows 10
Android Studio 4.1.1
実行Android環境
機種:Xperia X Performance SOV33
Androidバージョン:7.0
アクティビティをFLAG_KEEP_SCREEN_ONに設定する
参考文献の公式ドキュメントを読むと、Activityのコード上でスリープを無効にする方法とレイアウト XML上でスリープを無効にする方法があるが、今回はActivityのKotlinコード上でスリープを無効にする。やり方はいたって簡単で、まず
import android.view.WindowManager
でWindowManagerをインポートして、以下のコードをonCreateの適当な位置に配置するだけ。
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
作成中のカップ麺タイマーでは以下のようにコード中に配置した。
実機で確認してみて、アプリ起動中はスクリーンがスリープにならないことを確認した。なお、ドキュメントにも書いてあるが明示的にFLAG_KEEP_SCREEN_ONをクリアしなくても、アプリがバックグラウンドに移動するか、またはフォアグラウンドに戻ってくると、ウィンドウ マネージャーが適切な処理が行われるようにしてくれるとのこと。
参考文献
今回は以下のサイトを参考にさせて頂きましたm(_ _)m
デバイスの起動状態を維持する | Android デベロッパー | Android Developers
Androidアプリをつくって遊ぼう日記まとめ
以下にAndoirdアプリで遊んでみた軌跡を残しています。興味があればのぞいてみてください。