警报管理器可以安排在不同时间每天触发事件

时间:2013-07-01 08:29:52

标签: android

我正在努力开发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();

}

}

1 个答案:

答案 0 :(得分:0)

您的广播接收器不应该呼叫媒体播放器。通过闹钟,你永远不知道手机是否会醒着。广播接收器不会长时间唤醒电话。它会醒来然后再回去睡觉。要正确地做到这一点,您需要广播接收器来激活服务。然后该服务将启动媒体播放器。这是一个开源的示例程序。它还包括一个唤醒锁,以确保您的程序在闹钟开启时不会进入睡眠状态。检查广播接收器和服务。他们一起去。祝你好运Coding。

要使其每天运行,您需要从广播接收器启动警报调度服务以安排下一个警报。一次只能关闭一个警报,因此,一旦启动,您的程序就会安排下一个警报,一次只有一个警报。

Android Alarm Clock