无法停止另一个 activity 的闹铃

Can't stop the ringing alarm from another activity

我是android新手,在这里练习我的第一个应用程序(Alarm App)。

我的应用程序有一个问题,一旦触发闹钟,我就无法停止闹钟,它一直在响,无法停止。

在我的应用程序中,我有 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 没有被调用

我尝试了很多方法来解决这个问题,但我遗漏了一些我无法理解的东西。

谁能帮我停止触发的警报和铃声。

你的架构坏了。您不使用 BroadcastReceiver 进行持久处理。 BroadcastReceiver 的生命周期很短,你用它来触发其他事情。

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

的状态

看看是否可以在 Internet 上找到一些关于如何构建此类应用程序的 HOWTO 指南。