2014-09-04 65 views
0

我正在制作一个应用程序,当用户按下音量键的某种组合时,我想发送某种短信警报。我在广播接收机中接收音量按键事件时,它在设备和键盘未锁定时工作正常,但设备锁定(屏幕关闭)音量按键事件不起作用。我想这个代码我的广播接收机的onReceive()方法中如何解锁设备和键盘从android广播接收机?

private void wakeUpScreenAndRelaeseLock(Context context) 
{ 
    PowerManager pm = (PowerManager)context.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) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG"); 
    keyguardLock.disableKeyguard(); 
    wakeLock.release(); 
} 

还我已经添加在AndroidManifest.xml这两个文件的权限

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 

请帮我找出这个问题..谢谢!

回答

0

如果设备处于深度睡眠音量按键不唤醒,所以你不会收到广播通知。你无能为力,这种行为是深度睡眠的关键。

为了实现你想要的应用程序必须保持至少部分唤醒锁。

+0

感谢您的回复..但是当我们在背景中播放音乐播放器并且设备被锁定时,我们可以在音量上/下类似的事情发生在我的应用程序中,我该如何实现? – 2014-09-04 10:09:37

+0

当音乐在后台播放时,设备不处于深度睡眠状态 - 音乐播放器持有唤醒锁。 – Okas 2014-09-04 10:19:05