#android
#Android
Вопрос:
Я создаю приложение, которое пробуждает и разблокирует телефон по событию.
Это работает нормально..
только при выходе из активности (или по истечении таймера .. когда вокруг никого нет) я использую reenableKeyguard (), чтобы восстановить блокировку клавиш в исходное состояние…
но затем он блокируется напрямую….
я бы хотел, чтобы обычный behavour…so когда пользователь выходит из моего приложения … блокировки еще нет. но после 30 секунд отсутствия активности телефон переходит в спящий режим и устанавливает блокировку.
как я могу это сделать … спасибо.
Ниже приведен код, который я использовал для этого:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().addFlags(
LayoutParams.FLAG_DISMISS_KEYGUARD
| LayoutParams.FLAG_SHOW_WHEN_LOCKED
| LayoutParams.FLAG_TURN_SCREEN_ON
| LayoutParams.FLAG_KEEP_SCREEN_ON
);
KeyguardManager manager = (KeyguardManager) getSystemService
(Context.KEYGUARD_SERVICE);
lock = manager.newKeyguardLock
("hh");
lock.disableKeyguard();
}
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
lock.reenableKeyguard();
}
Пожалуйста, дайте мне знать, какие изменения мне нужно внести в приведенный выше код, чтобы он работал хорошо.
Ответ №1:
этот метод keygaurd работает менее чем для 2.0, если вы используете> = 2.2, затем измените подход. перейдите к power manager,
Ответ №2:
Согласно API администрирования устройства:
Вы также можете программно указать устройству на немедленную блокировку:
DevicePolicyManager mDPM; mDPM.lockNow();
И в соответствии с API:
Немедленно заблокируйте устройство, как если бы время ожидания экрана блокировки истекло в момент этого вызова.
Ответ №3:
Комментарии:
1. Вайнет, спасибо за вашу помощь, но это поможет заблокировать экран только через некоторое заданное время. Но мое приложение должно естественным образом блокировать экран после вызова функции onStop ().
Ответ №4:
вы можете использовать этот код для блокировки экрана устройства
protected void onResume() {
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(mIntentReceiver, filter);
}
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent) {
System.out.println("phone locked");
}