Frage

Hi I am trying to create multiple alarms. I am getting the number of hours left in the day, dividing it by the number of alarms needed, then trying to set alarms with intervals between them.

So for example if num of alarms is 2, and user clicks button at 14:00 there are 10 hours left, so 10 hours / 2 alarms = 5 hours distance between each alarm

So I want to set 2 alarms (one alarm at 19:00 and another at 24:00)

Currently my code is only setting 1 alarm and seems to ignore running the for loop multiple times. I'm not sure why the for loop dosnt create multiple alarms

        try {
            // Current Time
            Time timeNow = new Time();
            timeNow.setToNow();
                int timeNowHour = timeNow.hour;
                int timeNowMins = timeNow.minute;

            // Hours left in day
                int hoursInADay = 24;
                int hoursLeftInDay = hoursInADay - timeNowHour;

            // Number of alarms
                int numAlarms = 2;

            // Calc time between each alarm
                int alarmDistance = hoursLeftInDay / numAlarms;

            for(int i = 0; i < numAlarms; i++){
                int alarmHour = timeNowHour + alarmDistance * (i+1);
                Intent alarmIntent = new Intent(AlarmClock.ACTION_SET_ALARM);
                alarmIntent.putExtra(AlarmClock.EXTRA_MESSAGE, "TEST ALARM");
                alarmIntent.putExtra(AlarmClock.EXTRA_HOUR, alarmHour);
                alarmIntent.putExtra(AlarmClock.EXTRA_MINUTES, timeNowMins);
                alarmIntent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
                alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(alarmIntent);
            }
        } catch (Exception e) {
        }

Thanks

War es hilfreich?

Lösung

AlarmManager alarmManager= (AlarmManager)getSystemService(ALARM_SERVICE);
PendingIntent intent=createPendingResult(ALARM_TIME_ID, new Intent(), 0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime() + alarmDistance,alarmDistance, intent);

And in the onActivityMethod you can do whatever you want. Example:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ALARM_TIME_ID) {
Toast.makeText(this, "Alarm is running", Toast.LENGTH_LONG).show();
}

Make sure to set the ALARM_TIME_ID to a unique int value.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top