Несколько будильников в Android с помощью AlarmManager? - PullRequest
1 голос
/ 07 мая 2019

Я создаю приложение будильника и как мне установить несколько будильников?

public void startAlarm(int hour, int minute){

    Toast.makeText(getApplicationContext(), "Starting Alarm", Toast.LENGTH_SHORT).show();
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, minute);
    calendar.set(Calendar.SECOND, 0);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0);
    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

}

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Вам нужно использовать разные идентификаторы Broadcast для ожидающих намерений.Как то так:

public void startAlarm(int hour, int minute) {
    final int _id = (int) System.currentTimeMillis();
    Toast.makeText(getApplicationContext(), "Starting Alarm", Toast.LENGTH_SHORT).show();
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, minute);
    calendar.set(Calendar.SECOND, 0);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(MainActivity.this, _id, myIntent, PendingIntent.FLAG_ONE_SHOT);
    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pendingIntent);
}
1 голос
/ 07 мая 2019

Используйте setRepeating на alarmManager. И не забывайте, что вы устанавливаете новый Id для каждой тревоги, а не используете 0 при создании ожидающего намерения.

pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0);

Первый 0 - это идентификатор тревоги. Также используйте PendingIntent.FLAG_UPDATE_CURRENT, если вы хотите обновить этот сигнал в будущем до последнего 0.

...