Мое приложение запускается на мероприятии по док-станции автомобиля, я хочу разбудить телефон (сделанный системой) и разблокировать экран, когда я подключу свое устройство. Возможно ли это?
Как отображать активность, когда экран заблокирован?
Ответ 1
Я использую для повышения активности до верхнего уровня
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*/
}
Ответ 2
Используйте Activity.getWindow(), чтобы получить окно вашей активности; используйте Window.addFlags(), чтобы добавить какой-либо из следующих флагов в WindowManager.LayoutParams, который вы желаете: FLAG_DISMISS_KEYGUARD, FLAG_SHOW_WHEN_LOCKED, FLAG_TURN_SCREEN_ON
Таким образом приложение стандартной док-станции (и настольной док-станции) реализует это поведение.
Ответ 3
Вы сможете использовать 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();
Ответ 4
При использовании шаблона блокировки или ввода ввода мне также необходимо добавить следующее, потому что экран выключен менее чем за 5 секунд:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);