My Photo

« Androidアプリ開発メモ057:AVDの画面の向きを変更する | Main | 朝日新聞土曜版の「職場の理不尽Q&A」が頭にくる »

January 29, 2012

Androidアプリ開発メモ058:ロック画面を出さないようにする

タイマーなどのアプリで画面のバックライトが消えた状態やロック画面からアクティビティを表示する方法を検索すると PowerManager と KeyguardManager を使う例が多く出てくる。
ただ、KeyguardManager.KeyguardLock は現在はdeprecatedになっていて、代わりに windowに WindowManager.LayoutParams の FLAG_DISMISS_KEYGUARD と FLAG_SHOW_WHEN_LOCKED をセットする方法が使うようにドキュメントに書いてある。deprecatedになった KeyguardManager のメソッドや KeyguardManager.KeyguardLock のところに。

フラグをセットした場合の動きを確認するサンプルコード

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	
	// フラグをセット
	Button button5 = (Button)findViewById(R.id.button5);
	button5.setOnClickListener(new View.OnClickListener() {
		public void onClick(View v) {
			Window window = getWindow();
			window.addFlags(
				| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
				| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
		}
	});
	
	// フラグをクリア
	Button button6 = (Button)findViewById(R.id.button6);
	button6.setOnClickListener(new View.OnClickListener() {
		public void onClick(View v) {
			Window window = getWindow();
			window.clearFlags(
				| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
				| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
		}
	});
}

上記のコードを実装したボタンがあるだけのアプリは実機(Xperia ray)で次のように動いた。

  1. ボタン5を押す(フラグがセットされる)。
  2. 電源ボタンを押すと、画面のバックライトが消灯する。
  3. 電源ボタンかHOMEキーを押すと、バックライトが点灯しアプリの画面が表示される。
  4. ボタン6を押す(フラグをクリア)
  5. 電源ボタンを押すと、画面のバックライトが消灯する。
  6. 電源ボタンかHOMEキーを押すと、バックライトが点灯しロック画面が表示される。

参考ページによると、「lock pattern」とやらのあり・なしで同じフラグをせっとしてあっても動きが違うようだ。
lock pattern ってのは
設定>現在地情報とセキュリティ>画面ロックの設定>パターン
のことだろうか?

今、AlarmManagerを使って5分とか10分とか間隔を指定すると一定時間毎に画面が表示されて音が鳴るようなアプリを作ろうとしている。
このアプリでは FLAG_DISMISS_KEYGUARD と FLAG_SHOW_WHEN_LOCKED に加えて FLAG_TURN_SCREEN_ON をWindowにセットしている。
FLAG_TURN_SCREEN_ON は自信はないが、たぶん画面が表示されるときにバックライトを点灯するということだと思う。
これでバックライトが消えた状態でも時間が来れば画面が表示される、と思ったが、うまくいかないときもある。画面は真っ暗なままで音だけが鳴る。
表示される場合/表示されない場合の切り分けができていない。

また、フラグとは関係ないかもしれないが、アラームの時間が時々遅れたり、いつまでたってもアラームが来なかったり、いつの間にかアラームがキャンセルされていたりする。原因はどれも不明で未解決。

参考ページ:
Y.A.M の 雑記帳: Android FLAG_DISMISS_KEYGUARD と FLAG_SHOW_WHEN_LOCKED を使う
スクリーンロックを解除する方法 - 明日の鍵
Booster

« Androidアプリ開発メモ057:AVDの画面の向きを変更する | Main | 朝日新聞土曜版の「職場の理不尽Q&A」が頭にくる »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/53857154

Listed below are links to weblogs that reference Androidアプリ開発メモ058:ロック画面を出さないようにする:

« Androidアプリ開発メモ057:AVDの画面の向きを変更する | Main | 朝日新聞土曜版の「職場の理不尽Q&A」が頭にくる »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof