【Android開発】画面が自動消灯しないようにするための設定
先日、アンドロイドアプリ「議事録」をアップデートした際に調べた内容の備忘録です。
調べた限りでは、画面の自動消灯を抑止する方法は下記2パターンあるようです。
- WakeLockを使用する
- FLAG_KEEP_SCREEN_ONを使用する
初めは前者のWakeLockを利用して実装を試みたのですが、Eclipse上でdeprecated(非推奨)の警告が出ていたので代替手段を探したところ、後者のFLAG_KEEP_SCREEN_ONを見つけました。
WakeLockは複数画面にわたって制御を入れられたり細かい設定ができるものの、下記パーミッションの追加が必要となり少々敷居が高いです。
<uses-permission android:name="android.permission.WAKE_LOCK" />
一方でFLAG_KEEP_SCREEN_ONは単一画面のみでの制御となりますが、パーミッションの追加も必要ありません。
今回の「議事録」では、入力画面の1画面のみを抑制できれば良かったので、FLAG_KEEP_SCREEN_ONを採用することにしました。
実装方法はとてもカンタン!
自動消灯をさせたくない画面のActivityのonCreateに下記のように1行追加するのみです。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xxx); //画面を点灯したままにする getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
明示的な解放処理も必要が無いってのも良い感じです。
実機でも確認してみましたが、本設定を入れた画面はもちろん自動消灯することはありませんでしたが、設定を入れていない画面に遷移するとちゃんと自動消灯されました。
ちなみに今回の「議事録」では実装していませんが、同一画面内で特定の処理をしたら自動消灯が行われるようにしたいような場合は、下記のコードを読み込ませれば良さそうです。
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
以上、ご参考まで