Android で画面を点灯しつつダイアログを表示したい

スケジュールアプリだったり、iBeacon を使ったクーポン配信アプリだったり、スマートフォンの画面がオフになっていても画面を点灯させてダイアログを表示したい場合のお話です。

ただダイアログを表示する Activity を起動しただけでは暗い画面の奥でひっそりと起動するだけの Activity ちゃん。
本当なら今すぐにでも自分の存在をアピールして持ち主の視線を釘づけにしたいところですが、デフォルトの起動だけでは残念ながらそれは叶いません。

画面がオフの場合でも画面を点灯させつつロック画面よりも前面に表示するためには、フラグの追加が必要になります。

// 端末がロック状態でも表示します
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
// 表示と同時に画面を点灯します
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON

この二つのフラグを設定してあげることで、晴れて Activity ちゃんは自分の存在を持ち主にアピールすることができます。
フラグを追加するのは Activity クラスの onCreate メソッドです。

protected void onCreate(@Nullable Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_sample);

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}

あとはダイアログを表示するなりなんなりお好きにしてください。

簡単ですね。