私のアプリケーションは、車のドッキングイベントで起動します。デバイスを接続すると、電話をウェイクアップし(システムで実行)、画面のロックを解除します。出来ますか ?
私は活動をトップレベルに引き上げるために使用しています
private Window wind;
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
/******block is needed to raise the application if the lock is*********/
wind = this.getWindow();
wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
/* ^^^^^^^block is needed to raise the application if the lock is*/
}
Activity.getWindow()を使用して、アクティビティのウィンドウを取得します。 Window.addFlags()を使用して、WindowManager.LayoutParamsに次のフラグのいずれかを追加します。 FLAG_DISMISS_KEYGUARD 、 FLAG_SHOW_WHEN_LOCKED 、 FLAG_TURN_SCREEN_ON
これが、標準のカードック(およびデスクドック)アプリがこの動作を実装する方法です。
FLAG_DISMISS_KEYGUARD
パターンロックのように、セキュリティが有効になっているロックがない電話のみ。
FLAG_SHOW_WHEN_LOCKED
は現在のアクティビティのみを上部に表示します。ユーザーが他の場所に移動しようとした場合、画面のロックを解除する必要があります。
または、マニフェストに権限を追加することもできます。
<uses-permission Android:name="Android.permission.DISABLE_KEYGUARD"/>
そして、あなたの作成活動では:
KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard();
ロックパターンまたはピンエントリを使用する場合、画面が5秒未満でオフになるため、次の項目も追加する必要がありました。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);