无法停止其他活动的响铃警报

时间:2018-07-26 15:07:12

标签: android alarmmanager android-pendingintent

我是android的新手,我正在练习我的第一个应用程序(“警报应用程序”)。

我的应用程序中存在一个问题,即一旦触发警报,它就无法停止警报。它不断响,无法停止。

在我的应用中,我有2个活动和一个AlarmReceiver。

在AlarmActivity.java中,我已经设置了警报,到达特定时间后,Alarmreceiver.java将被触发,警报开始响起并显示唤醒屏幕。

在WakeUpScreen.java中,我需要使用停止按钮来停止当前的响铃警报。

我在logcat中也没有任何问题。

AlarmActivity.java

  public void stopAlarm(Context context) {
        Intent intent = new Intent(context,AlarmReceiver.class);
        intent.setAction("ALARM_OFF");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, mAlarmId, intent,PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
    }

我的AlarmActivity.java中具有此AlarmStop()函数,当我在点击wakeupscreen.java中的停止按钮时会被点击

当我尝试调试停止过程时,调试器移动了stopAlarm()函数中的所有行,但Intent无法正常工作,这就是为什么未调用AlarmReceiver.java文件的原因,我的意思是,调试器移动了上述方法中的所有行,但没有调用AlarmReceiver.java

我尝试了很多方法来解决此问题,但是我错过了一些我无法解决的问题。

谁能帮助我停止触发的警报,它会响起声音。

1 个答案:

答案 0 :(得分:1)

您的体系结构已损坏。您不使用BroadcastReceiver进行持久处理。 BroadcastReceiver的生命周期很短,您可以用它来触发其他事情。

您已经在MediaPlayer中创建了一个BroadcastReceiver实例,并试图在onReceive()中进行控制。错了您应该使用Service来管理和维护MediaPlayer的状态。

看看您是否可以在Internet上找到一些有关如何构建这样的应用程序的HOWTO指南。