2013-10-24 40 views
2

我有一个活动,这里有两个按钮:如何通过AlarmManager管理BroadcastReceiver?

  1. 按钮一为“选择报警时间”。当我点击它时,TimePicker出现,我选择了闹钟的时间。

  2. 按钮二用于“设置闹钟”。当我点击它时,报警设置。

我在做什么:

在设置闹钟时间,我会打电话给BroadcastReceiver。在演示中,我只打印了我设定的报警时间和Toast

什么是查询的字符串:

“如果我设定闹钟时间一样,当前时间下午4:00我设置报警时间下午6点。在这种情况下报警随时拨打BroadcastReceiver和它的Work Fine

BUT

如果当前时间是下午4点00分并且我设置了闹钟2.00PM然后它同时打电话给BroadCastReceiver而我不想这么做。

对于AlarmManager我用这个片段:

AlarmManager am = (AlarmManager) getSystemService(SetAlarm.ALARM_SERVICE); 

Intent intent1 = new Intent(SetAlarm.this, BroadCast.class); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(SetAlarm.this, 0,intent1,PendingIntent.FLAG_UPDATE_CURRENT); 

am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 
+1

向下投票者,如果我问了一些错误或者建议我我做了什么或者错了什么,请做出正确的选择? –

+1

这看起来像是一个合法的问题。 +1 – sarwar

+0

这样做,在广播接收机内部,检查时间,我假定你将这个值存储在一个共享首选项或类似的东西中,比较当前时间n当天设置的时间。如果在当前时间之前,不要做任何其他操作@AM我面临与服务相同,所以我不得不通过把条件 –

回答

0
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR, 14); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND,0); 

if(calendar.getTimeInMillis()<System.currentTimeMillis()) 
    { 
     calendar.add(Calendar.DATE, 1); 
    } 
am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent); 

你可以做这样的事情。