来自BroadcastReceiver的唤醒设备

时间:2012-05-30 08:57:19

标签: android broadcastreceiver alarm wakelock powermanager

我有一个应用程序设置重复警报,我希望它唤醒设备,解锁键盘锁,做一些事情,然后释放锁定准备好在下一次警报时再次重复。 它似乎工作但手机只在第一次触发警报时唤醒并解锁键盘,每次警报重复之后,它不会打开屏幕并解锁,尽管警报触发的音频文件每次都会播放。 我错过了什么?

public class RepeatingAlarmWake extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Wake up!");        
        wl.acquire();
        KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
        KeyguardLock keyguardLock =  keyguardManager.newKeyguardLock("TAG");
        keyguardLock.disableKeyguard();

        PlayAudio2.INSTANCE.PlayAudio();
        wl.release(); 
    }
}

1 个答案:

答案 0 :(得分:0)

您实际设置旋转警报的代码在哪里?无论如何,你应该使用RTC_WAKEUP,以便在闹钟响起时设备将被唤醒。