android - set alarm with multiple pending intent not pass the event to broadcast -
on satat command service want ser multiple pending intents broadcast on particular time in day use multiple alarm manager correct or wrong way please suggest me.
@override public int onstartcommand(intent intent, int flags, int startid) { toast.maketext(this, "traffic control bk service started", toast.length_long).show(); log.d(tag, "onstart"); calendar calnow = calendar.getinstance(); calendar1 = calendar.getinstance(); date date1 = calendar1.gettime(); calendar2 = calendar.getinstance(); date date2 = calendar2.gettime(); calendar3 = calendar.getinstance(); date date3 = calendar3.gettime(); calendar4 = calendar.getinstance(); date date4 = calendar4.gettime(); calendar5 = calendar.getinstance(); date date5 = calendar5.gettime(); calendar6 = calendar.getinstance(); date date6 = calendar6.gettime(); calendar7 = calendar.getinstance(); date date7 = calendar7.gettime(); calendar8 = calendar.getinstance(); date date8 = calendar8.gettime(); calendar9 = calendar.getinstance(); date date9 = calendar9.gettime(); //int x=0; if(tg111.charat(0)=='1'){ //calendar1 = calendar.getinstance(); calendar1.set(calendar.day_of_month, date1.getdate()); calendar1.set(calendar.hour_of_day, 3); calendar1.set(calendar.minute, 30); calendar1.set(calendar.second, 0); i1 = new intent(getapplicationcontext(), trafficc.class); pi1 = pendingintent.getbroadcast(getapplicationcontext(), 0, i1, 0); am1 = (alarmmanager) getsystemservice(alarm_service); am1.setrepeating(alarmmanager.rtc_wakeup, calendar1.gettimeinmillis(),alarmmanager.interval_day, pi1); } if(tg111.charat(1)=='1'){ //calendar2 = calendar.getinstance(); calendar2.set(calendar.day_of_month, date2.getdate()); calendar2.set(calendar.hour_of_day, 4); calendar2.set(calendar.minute, 0); calendar2.set(calendar.second, 0); i2 = new intent(getapplicationcontext(), trafficc.class); pi2 = pendingintent.getbroadcast(getapplicationcontext(), 1, i1, 0); am2 = (alarmmanager) getsystemservice(alarm_service); am2.setrepeating(alarmmanager.rtc_wakeup, calendar2.gettimeinmillis(),alarmmanager.interval_day, pi2); } if(tg111.charat(2)=='1'){ //calendar3 = calendar.getinstance(); calendar3.set(calendar.day_of_month,date3.getdate()); calendar3.set(calendar.hour_of_day, 5); calendar3.set(calendar.minute, 45); calendar3.set(calendar.second, 0); i3 = new intent(getapplicationcontext(), trafficc.class); pi3 = pendingintent.getbroadcast(getapplicationcontext(), 0, i3, 0); am3 = (alarmmanager) getsystemservice(alarm_service); am3.setrepeating(alarmmanager.rtc_wakeup, calendar3.gettimeinmillis(),alarmmanager.interval_day, pi3); } if(tg111.charat(3)=='1'){ //calendar4 = calendar.getinstance(); calendar4.set(calendar.day_of_month,date4.getdate()); calendar4.set(calendar.hour_of_day, 7); calendar4.set(calendar.minute, 0); calendar4.set(calendar.second, 0); i4 = new intent(getapplicationcontext(), trafficc.class); pi4 = pendingintent.getbroadcast(getapplicationcontext(), 0, i4, 0); am4 = (alarmmanager) getsystemservice(alarm_service); am4.setrepeating(alarmmanager.rtc_wakeup, calendar4.gettimeinmillis(),alarmmanager.interval_day, pi4); } if(tg111.charat(4)=='1'){ //calendar5 = calendar.getinstance(); calendar5.set(calendar.day_of_month,date5.getdate()); calendar5.set(calendar.hour_of_day, 10); calendar5.set(calendar.minute, 30); calendar5.set(calendar.second, 0); i5 = new intent(getapplicationcontext(), trafficc.class); pi5 = pendingintent.getbroadcast(getapplicationcontext(), 0, i5, 0); am5 = (alarmmanager) getsystemservice(alarm_service); am5.setrepeating(alarmmanager.rtc_wakeup, calendar5.gettimeinmillis(),alarmmanager.interval_day, pi5); } if(tg111.charat(5)=='1'){ // calendar6 = calendar.getinstance(); calendar6.set(calendar.day_of_month,date6.getdate()); calendar6.set(calendar.hour_of_day, 12); calendar6.set(calendar.minute, 00); calendar6.set(calendar.second, 0); i6 = new intent(getapplicationcontext(), trafficc.class); pi6 = pendingintent.getbroadcast(getapplicationcontext(), 0, i6, 0); am6 = (alarmmanager) getsystemservice(alarm_service); am6.setrepeating(alarmmanager.rtc_wakeup, calendar6.gettimeinmillis(),alarmmanager.interval_day, pi6); } if(tg111.charat(6)=='1'){ //calendar7 = calendar.getinstance(); calendar7.set(calendar.day_of_month,date7.getdate()); calendar7.set(calendar.hour_of_day, 17); calendar7.set(calendar.minute, 30); calendar7.set(calendar.second, 0); i7 = new intent(getapplicationcontext(), trafficc.class); pi7 = pendingintent.getbroadcast(getapplicationcontext(), 0, i7, 0); am7 = (alarmmanager) getsystemservice(alarm_service); am7.setrepeating(alarmmanager.rtc_wakeup, calendar7.gettimeinmillis(),alarmmanager.interval_day, pi7); } if(tg111.charat(7)=='1'){ //calendar8 = calendar.getinstance(); calendar8.set(calendar.day_of_month,date8.getdate()); calendar8.set(calendar.hour_of_day, 19); calendar8.set(calendar.minute, 30); calendar8.set(calendar.second, 0); i8 = new intent(getapplicationcontext(), trafficc.class); pi8 = pendingintent.getbroadcast(getapplicationcontext(), 0, i8, 0); am8 = (alarmmanager) getsystemservice(alarm_service); am8.setrepeating(alarmmanager.rtc_wakeup, calendar8.gettimeinmillis(),alarmmanager.interval_day, pi8); } if(tg111.charat(8)=='1'){ //calendar9 = calendar.getinstance(); calendar9.set(calendar.day_of_month,date9.getdate()); calendar9.set(calendar.hour_of_day, 21); calendar9.set(calendar.minute, 30); calendar9.set(calendar.second, 0); i9 = new intent(getapplicationcontext(), trafficc.class); pi9 = pendingintent.getbroadcast(getapplicationcontext(), 0, i9, 0); am9 = (alarmmanager) getsystemservice(alarm_service); am9.setrepeating(alarmmanager.rtc_wakeup, calendar9.gettimeinmillis(),alarmmanager.interval_day, pi9); } return start_sticky; }
broadcast receiver
package com.atpl.bkapp; import java.util.calendar; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.widget.toast; public class trafficc extends broadcastreceiver{ @override public void onreceive(context arg0, intent arg1) { // todo auto-generated method stub calendar cal1= calendar.getinstance(); int hour = cal1.get(calendar.hour); int min = cal1.get(calendar.minute); if ((hour==3) && (min==30)) { toast.maketext(arg0, "showname-->3:30", toast.length_short).show(); } else if((hour==4) && (min==00)) { toast.maketext(arg0, "showname--> 4:00", toast.length_short).show(); } else if((hour==5) && (min==45)) { toast.maketext(arg0, "showname--> 5:45", toast.length_short).show(); } else if((hour==7) && (min==00)) { toast.maketext(arg0, "showname--> 7:00", toast.length_short).show(); } else if((hour==10) && (min==30)) { toast.maketext(arg0, "showname--> 10:30", toast.length_short).show(); } else if((hour==12) && (min==00)) { toast.maketext(arg0, "showname--> 12:00", toast.length_short).show(); } else if((hour==17) && (min==30)) { toast.maketext(arg0, "showname--> 17:30", toast.length_short).show(); } else if((hour==19) && (min==30)) { toast.maketext(arg0, "showname--> 19:30", toast.length_short).show(); } else if((hour==21) && (min==30)) { toast.maketext(arg0, "showname--> 21:30", toast.length_short).show(); } } }
please me solve issue set alarm on multiple times in day in advance.
wrong:
pi1 = pendingintent.getbroadcast(getapplicationcontext(), 0, i1, 0);
right:
pi1 = pendingintent.getbroadcast(getapplicationcontext(), counter, i1, 0);
here , counter
identical value incremental every time while check case in if
loop new pendingintent
a common mistake people make create multiple pendingintent objects intents vary in "extra" contents, expecting different pendingintent each time
Comments
Post a Comment