我正在努力开发Ramadan Emsakia,我想让警报在不同的日子里运行
Intent i = new Intent(this,OneShotAlarm.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager alarmMgr0 = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar timeOff0 = Calendar.getInstance();
timeOff0.set(Calendar.YEAR, 2013);
timeOff0.set(Calendar.MONTH, 6);
timeOff0.set(Calendar.DAY_OF_MONTH,1 );
timeOff0.set(Calendar.HOUR_OF_DAY, 8);
timeOff0.set(Calendar.MINUTE, 51);
timeOff0.set(Calendar.SECOND, 00);
//set that timer as a RTC Wakeup to alarm manager object
alarmMgr0.set(AlarmManager.RTC_WAKEUP, timeOff0.getTimeInMillis(), pi);
PendingIntent pi1 = PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar timeOff1 = Calendar.getInstance();
timeOff1.set(Calendar.YEAR, 2013);
timeOff1.set(Calendar.MONTH, 6);
timeOff1.set(Calendar.DAY_OF_MONTH,1 );
timeOff1.set(Calendar.HOUR_OF_DAY, 8);
timeOff1.set(Calendar.MINUTE, 54);
timeOff1.set(Calendar.SECOND, 00);
//set that timer as a RTC Wakeup to alarm manager object
alarmMgr0.set(AlarmManager.RTC_WAKEUP, timeOff1.getTimeInMillis(), pi1);
}
这是我的闹钟接收器
公共类OneShotAlarm扩展了BroadcastReceiver {
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context,R.string.one_shot_received,Toast.LENGTH_LONG).show(); MediaPlayer mp = MediaPlayer.create(context,R.raw.azan2); mp.start();
}
}
答案 0 :(得分:0)
您的广播接收器不应该呼叫媒体播放器。通过闹钟,你永远不知道手机是否会醒着。广播接收器不会长时间唤醒电话。它会醒来然后再回去睡觉。要正确地做到这一点,您需要广播接收器来激活服务。然后该服务将启动媒体播放器。这是一个开源的示例程序。它还包括一个唤醒锁,以确保您的程序在闹钟开启时不会进入睡眠状态。检查广播接收器和服务。他们一起去。祝你好运Coding。
要使其每天运行,您需要从广播接收器启动警报调度服务以安排下一个警报。一次只能关闭一个警报,因此,一旦启动,您的程序就会安排下一个警报,一次只有一个警报。