Установите несколько будильников с одной трансляцией в android
Я пишу эту программу для установки сигналов тревоги и хочу, чтобы эти сигналы тревоги отправляли уведомление пользователю в специальное время.Я использую AlarmManager и BroadcastReceiver. Но он просто работает для одного будильника, и просто SetAlarm(20) работает и отправляет уведомление. Как я могу использовать будильник и уведомление более одного и в течение нескольких раз?
Это мой метод сигнализации и мой приемник:
Что я уже пробовал:
public class Main3Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); SetAlarm(10); SetAlarm(20); } private void SetAlarm(int sec) { AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); Calendar cal = Calendar.getInstance(); cal.add(Calendar.SECOND, sec); long time = cal.getTimeInMillis(); Intent i = new Intent(Main3Activity.this, MyReceiver.class); PendingIntent pi = PendingIntent.getBroadcast(Main3Activity.this, 0, i, 0); am.set(AlarmManager.RTC_WAKEUP, time, pi); } } public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { showNotification(context,Main3Activity.class,"Test Time","do it now"); } public static void showNotification(Context context,Class<?> cls,String title,String content) { Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Intent notificationIntent = new Intent(context, cls); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addParentStack(cls); stackBuilder.addNextIntent(notificationIntent); PendingIntent pendingIntent = stackBuilder.getPendingIntent( DAILY_REMINDER_REQUEST_CODE,PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); Notification notification = builder.setContentTitle(title) .setContentText(content).setAutoCancel(true) .setSound(alarmSound).setSmallIcon(R.mipmap.ic_launcher_round) .setContentIntent(pendingIntent).build(); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(DAILY_REMINDER_REQUEST_CODE, notification); }
David Crow
Из документации:
Если уже есть сигнал тревоги, запланированный для того же IntentSender, то этот предыдущий сигнал тревоги сначала будет отменен.
Таким образом, ваш 10-секундный будильник не будет работать так, как ожидалось.