2011年8月18日木曜日

Android FLAG_DISMISS_KEYGUARD と FLAG_SHOW_WHEN_LOCKED を使う

KeyguardManagerexitKeyguardSecurely() メソッド及び newKeyguardLock() メソッドと、サブクラスの KeyguardManager.KeyguardLockdeprecated になっています。

これらのメソッドの代わりに WindowManager.LayoutParams クラスの FLAG_DISMISS_KEYGUARDFLAG_SHOW_WHEN_LOCKED を使うことが推奨されています。

■ FLAG_DISMISS_KEYGUARD

 このフラグが設定されると、secure lock keyguard でない場合、ウィンドウによって keyguard が表示されなくなる。security が必要でない keyguard では、ユーザーが他のウィンドウに移動したときに再表示されない(反対に FLAG_SHOW_WHEN_LOCKED では、secure、non-secure 両方の key guard を一時的に隠して、ユーザーがこれらを隠さない設定の他の UI に移動したときに再表示する。

 FLAG_SHOW_WHEN_LOCKED が同時に設定されていないと、keyguard が現在アクティブでユーザーより secure な場合(= unlock pattern を要求している場合)、ウィンドウを表示する前に lock pattern を確認する必要がある。

■ FLAG_SHOW_WHEN_LOCKED

 スクリーンがロックされたときに Windows に表示させるための特別なフラグで、このフラグをセットすると、アプリケーションウィンドウが key guard や他のロックスクリーンよりも優先される。
 
 FLAG_KEEP_SCREEN_ON と組み合わせて使うことで、画面をオンした後、 key guard を表示する前に直接ウィンドウを表示できる。
 
 FLAG_DISMISS_KEYGUARD と組み合わせて使うことで、自動で non-secure keyguards を表示させないようにできる。このフラグは一番上の full-screen window にのみ適用される。


関連するフラグ

FLAG_ALLOW_LOCK_WHILE_SCREEN_ON

FLAG_KEEP_SCREEN_ON





public class KeyguardSampleActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Window window = getWindow();

// lock pattern を設定していても、
// このアプリ起動中は画面オン時にロックはでない
// 別のアプリやホームに移動するときにロックがでる
window.setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

// lock pattern を設定していない場合、
// このアプリ起動中は画面オン時にロックはでない
window.setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
}



■ まとめ

1. lock pattern あり、FLAG_SHOW_WHEN_LOCKED

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときにロックがでる


2. lock pattern あり、FLAG_DISMISS_KEYGUARD

 普通にロックがでる


3. lock pattern あり、FLAG_SHOW_WHEN_LOCKED, FLAG_DISMISS_KEYGUARD

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときにロックがでる


4. lock pattern なし、FLAG_SHOW_WHEN_LOCKED

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときにロックがでる


5. lock pattern なし、FLAG_DISMISS_KEYGUARD

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときもロックはでない


6. lock pattern なし、FLAG_SHOW_WHEN_LOCKED, FLAG_DISMISS_KEYGUARD

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときもロックはでない



0 件のコメント:

コメントを投稿