【问题标题】:Can't stop the ringing alarm from another activity无法停止其他活动的响铃警报
【发布时间】:2018-07-26 15:07:12
【问题描述】:

我是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

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

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

【问题讨论】:

  • 你能帮我解决这个@Kling Klang
  • 您不应该将您的媒体播放器连接到广播接收器。更好的方法是在收到广播后启动一个活动或服务,然后让这个活动或服务播放声音
  • 我希望我在 stopAlarm() 函数中做到了@KlingKlang

标签: android alarmmanager android-pendingintent


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢@DavidWasser
  • 我几乎尝试了所有方法来处理这段代码,但我仍然在努力让它工作。我可以从你那里得到任何帮助来解决这个问题stackoverflow.com/questions/51637793/…DavidWasser
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
相关资源
最近更新 更多