How to use alarmmanager 2 times every day?

后端 未结 2 405
孤城傲影
孤城傲影 2020-12-18 08:28

I have used the following code to set alarmmanager for only one time every days, I\'d like to have 2 different time to set, so 2 times every days.

My code:

相关标签:
2条回答
  • 2020-12-18 09:07
    void alaramStart() {
        Calendar cur_cal = Calendar.getInstance();
        Intent intent = new Intent(MainActivity.this, MyBRoadcast.class);
        intent.setAction("HELLO");
        PendingIntent pintent = PendingIntent.getService(MainActivity.this, 1234567, intent, 0);
        AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, cur_cal.getTimeInMillis(), 5000, pintent);
    }
    
    0 讨论(0)
  • You can use an interval of AlarmManager.INTERVAL_DAY / 2 :

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 10);
    calendar.set(Calendar.MINUTE, 35);
     calendar.set(Calendar.SECOND, 0);    
    AlarmManager am = (AlarmManager)getApplicationContext().getSystemService  (Context.ALARM_SERVICE);
    Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
     PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent,      PendingIntent.FLAG_UPDATE_CURRENT);
     am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),        AlarmManager.INTERVAL_DAY / 2, pi);
    

    but if the time of the day in which you fire your alarm matters you can use two calendar objects :

    Calendar cal1 = Calendar.getInstance();
    cal1.set(Calendar.HOUR_OF_DAY, 12); //midday
    cal1.set(Calendar.MINUTE, 00);
    cal1.set(Calendar.SECOND, 00);
    
    Calendar cal2 = Calendar.getInstance();
    cal2.set(Calendar.HOUR_OF_DAY, 18);//8pm for example
    cal2.set(Calendar.MINUTE, 00);
    cal2.set(Calendar.SECOND, 00);
    

    and set your alarm manager :

    am.setRepeating(AlarmManager.RTC_WAKEUP, cal1.getTimeInMillis(),cal2.getTimeInMillis(), pi);
    
    0 讨论(0)
提交回复
热议问题