2013-04-10 1 views
2

Я использую follwing код для установки сигнализации:Android: просыпаются устройство с помощью сигнализации

Intent intent = new Intent(context, Receiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(reminderContext, 0, intent, 
    PendingIntent.FLAG_CANCEL_CURRENT); 
alarmManager.set(AlarmManager.RTC_WAKEUP, 
System.currentTimeMillis()+delay,pendingIntent); 

Когда тревога уходит, я выполнил тот же код, которые показывают новую активность и звук воспроизводится. Это хорошо, но если мое устройство находится в спящем режиме, когда будильник отключается, я слышу только звук. Активность не отображается, и мое устройство остается в режиме ожидания.

Что я могу сделать, чтобы автоматически активировать свое устройство, когда будильник погас?

EDIT:

Я попытался следующие:

PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG"); 
wakeLock.acquire(); 

KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); 
KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG"); 
keyguardLock.disableKeyguard(); 

Это, казалось, работало за исключением этого:

04-10 13:49:59.260: A/PowerManager(4292): WakeLock finalized while still held: TAG 

Кроме того, у меня есть это предупреждение о методе приобретают:

Найдено wakelock приобретать() но не релиз() не вызывает в любом месте

+0

Возможный дубликат [? Может я просыпаюсь мой андроид, когда он не подключен и спать] (https://stackoverflow.com/questions/ 5262641/может-я-побудка-мой-андроид-когда-то-это-не-подключен-в-и-сна) –

ответ

8

Попробуйте ниже код в Receiver активность:

Window wind; 
wind = this.getWindow(); 
wind.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
wind.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
wind.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);