android - Alarm Manager setRepeating not waiting till time to go off -
i'm setting alarm go off @ x , current time y , sending alarm @ time y not waiting till time x go off... can tell me why not waiting till proper time go off? sample logcat:
07-17 16:27:13.779: i/projectcaruso(13305): reminder set 07-17 16:27:13.789: i/projectcaruso(13305): setting alarm 07-17 16:27:13.789: i/projectcaruso(13305): zone_offset: 15 07-17 16:27:13.789: i/projectcaruso(13305): sincemidnight: 77233802 07-17 16:27:13.789: i/projectcaruso(13305): test now: 21:27:13 07-17 16:27:13.789: i/projectcaruso(13305): now: 77233802 07-17 16:27:13.789: i/projectcaruso(13305): test send: 16:28:0 07-17 16:27:13.789: i/projectcaruso(13305): send: 59280000 07-17 16:27:13.789: i/projectcaruso(13305): when kick off: 68446198 07-17 16:27:13.979: i/projectcaruso(13455): onreceive 07-17 16:27:13.989: i/projectcaruso(13455): current time: 21:27:14 07-17 16:27:13.989: i/projectcaruso(13455): current mills: 1374096434004
class:
public class alarm extends broadcastreceiver { sharedpreferences mpreferences; boolean reminder; string time_selected; @override public void onreceive(context context, intent intent) { mpreferences = preferencemanager.getdefaultsharedpreferences(context); reminder = mpreferences.getboolean("frequency", false); time_selected = mpreferences.getstring("alarm_time", ""); if (reminder) { log.i("projectcaruso","onreceive"); powermanager pm = (powermanager) context.getsystemservice(context.power_service); powermanager.wakelock wl = pm.newwakelock(powermanager.partial_wake_lock, ""); wl.acquire(); // put here code. string second =""+ (system.currenttimemillis()/1000) % 60; string minute =""+ (system.currenttimemillis() / (1000 * 60)) % 60; string hour = ""+ (system.currenttimemillis() / (1000 * 60 * 60)) % 24; string time=hour+":"+minute+":"+second; log.i("projectcaruso", "current time: " + time); log.i("projectcaruso","current mills: " + system.currenttimemillis()); toast.maketext(context, "alarm !!!!!!!!!!", toast.length_long).show(); // example wl.release(); } else { cancelalarm(context); } } public void setalarm(context context) { mpreferences = preferencemanager.getdefaultsharedpreferences(context); reminder = mpreferences.getboolean("frequency", false); time_selected = mpreferences.getstring("alarm_time", ""); if (reminder) { log.i("projectcaruso","setting alarm"); alarmmanager am=(alarmmanager)context.getsystemservice(context.alarm_service); intent = new intent(context, alarm.class); pendingintent pi = pendingintent.getbroadcast(context, 0, i, 0); // time selected settings information string[] separated = time_selected.split(":"); long timeselectedmillis = (long.parselong(separated[0]) *3600000) + (long.parselong(separated[1]) *60000); log.i("projectcaruso", "zone_offset: " + (calendar.zone_offset)); calendar rightnow = calendar.getinstance(); long sincemidnight = (system.currenttimemillis()) % (24 * 60 * 60 * 1000); log.i("projectcaruso", "sincemidnight: " + sincemidnight); string second =""+ (sincemidnight/1000) % 60; string minute =""+ (sincemidnight / (1000 * 60)) % 60; string hour = ""+ (sincemidnight / (1000 * 60 * 60)) % 24; string time=hour+":"+minute+":"+second; log.i("projectcaruso", "test now: " + time); log.i("projectcaruso", "now: " + sincemidnight); second =""+ (timeselectedmillis/1000) % 60; minute =""+ (timeselectedmillis / (1000 * 60)) % 60; hour = ""+ (timeselectedmillis / (1000 * 60 * 60)) % 24; time=hour+":"+minute+":"+second; log.i("projectcaruso", "test send: " + time); log.i("projectcaruso", "send: " + timeselectedmillis); long triggeratmillis = timeselectedmillis - sincemidnight; if (triggeratmillis < 0) { triggeratmillis = (86400000 - sincemidnight) + timeselectedmillis; } //system.currenttimemillis() log.i("projectcaruso", "when kick off: " + triggeratmillis); am.setrepeating(alarmmanager.elapsed_realtime, triggeratmillis, 86400000, pi); // millisec * second * minute } else { cancelalarm(context); } } public void cancelalarm(context context) { mpreferences = preferencemanager.getdefaultsharedpreferences(context); reminder = mpreferences.getboolean("frequency", false); time_selected = mpreferences.getstring("alarm_time", ""); if (reminder) { log.i("projectcaruso","cancelalarm"); intent intent = new intent(context, alarm.class); pendingintent sender = pendingintent.getbroadcast(context, 0, intent, 0); alarmmanager alarmmanager = (alarmmanager) context.getsystemservice(context.alarm_service); alarmmanager.cancel(sender); } } }
this change alarm code. works , knowledge works fine.
public void setalarm(context context) { mpreferences = preferencemanager.getdefaultsharedpreferences(context); reminder = mpreferences.getboolean("frequency", false); time_selected = mpreferences.getstring("alarm_time", ""); time = new time(); now.settonow(); if (reminder) { log.i("projectcaruso","setting alarm"); alarmmanager am=(alarmmanager)context.getsystemservice(context.alarm_service); intent = new intent(context, alarm.class); pendingintent pi = pendingintent.getbroadcast(context, 0, i, 0); // time selected settings information string[] separated = time_selected.split(":"); //create offset current time in alarm go off. calendar cal = calendar.getinstance(); cal.settimeinmillis(system.currenttimemillis()); cal.set(calendar.hour_of_day, (int) long.parselong(separated[0])); cal.set(calendar.minute, (int) long.parselong(separated[1])); log.i("projectcaruso", "time set go off: " + cal.gettimeinmillis()); am.setrepeating(alarmmanager.rtc_wakeup, cal.gettimeinmillis(), 86400000, pi); // millisec * second * minute } else { cancelalarm(context); } }
Comments
Post a Comment