我有一个活动,从闹钟广播接收器调用,每隔N秒播放一次通知声音。这是通过以下代码实现的:
repeating_notification_sound_timer.schedule(ring_the_buzzer_task, 0, 1000 * N);
在活动的onCreate函数的早期,我有以下代码:
pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
wakeLock.acquire();
只要电话在触发警报时醒来,这一切都能很好地工作。但是,如果手机处于睡眠状态,通知声音只会播放一次,而不会再播放。该程序不会崩溃或报告任何错误。好像repeat_notification_sound_timer只能被打扰一次!有什么想法吗?
编辑:以下是首先设置闹钟的代码:
static void set_alarm(long alarm_time_in_millis,Context cont,AlarmManager alarm_manager,String str)
{
Intent launchIntent = new Intent(cont, to_call_when_alarm_goes_off.class);
launchIntent.putExtra("string_passed_in_bundle", str);
launchIntent.setAction(to_call_when_alarm_goes_off.CUSTOM_INTENT);
PendingIntent pIntent = PendingIntent.getBroadcast(cont,0, launchIntent, 0);
alarm_manager.cancel(pIntent);
alarm_manager.set(AlarmManager.RTC_WAKEUP,alarm_time_in_millis, pIntent);
}
编辑:在清单中我有:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
答案 0 :(得分:1)
您需要将AlarmManager警报设置为唤醒veriaty,否则广播将等待直到您的手机被其他人唤醒。
具体请提供您的闹钟代码。
答案 1 :(得分:0)
如果您想要长时间跟踪时间或者应用程序在后台,您确实需要使用服务。