Многие люди задавали мне один и тот же вопрос, но ни один из них не ответил на мой. Я создал приложение тревоги, используя AlarmManager и BroadcastReciever . alarmManager.cancel () не работает должным образом, и сигнал тревоги звучит до тех пор, пока приложение не будет убито.
Я использовал тот же Intent и аргументы для установки и отмены будильника. Ниже приведен код для установки будильника:
public void startAlarm() {
alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
intent=new Intent(this, AlarmReceiver.class);
pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,0);
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
}
Остановка будильника:
public void stopAlarm(){
alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
intent=new Intent(this, AlarmReceiver.class);
pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,0);
alarmManager.cancel(pendingIntent);
}
Класс BroadcastReciever:
public class AlarmReceiver extends BroadcastReceiver {
MediaPlayer mediaPlayer;
@Override
public void onReceive(Context context, Intent intent) {
mediaPlayer=MediaPlayer.create(context, Settings.System.DEFAULT_ALARM_ALERT_URI);
mediaPlayer.start();
}
}
Примечание. Код работает нормально, еслиТревога останавливается перед звонком. Однако, как только сигнал тревоги начинает звонить, он не может быть остановлен, пока приложение не убьет.