【问题标题】:Android Stop background music when Home key pressedAndroid 按下 Home 键时停止背景音乐
【发布时间】:2013-01-02 14:10:45
【问题描述】:

我正在开发一个有多个活动的应用程序。用户可以导航到任何活动。我从第一个主要活动开始背景音乐,它在整个应用程序中一直播放。现在我希望每当用户按下 HOME 键时,媒体播放器应该暂停播放,当用户返回应用程序时,它会再次开始播放。首先,我将媒体播放器设为静态,并在 onPause() 中暂停音乐并在 onResume() 中播放,但它在活动之间切换时会产生混蛋。我希望你明白我的意思。知道如何在按下 HOME 键时暂停播放并在用户回来时再次播放吗?

【问题讨论】:

  • onKeyPressed 怎么样?并使用 while 循环和布尔开关检查创建异步任务 ifPressedHome -> 然后它将能够运行 stopPlay() 并禁用任务
  • 对不起,我没有明白你的意思。能详细点吗?
  • 没有它的第一个活动,它是应用程序的入口和出口点。
  • 我们无法使用 KeyEvent.KEYCODE_HOME 预测它:.. 但我有禁用主页按钮单击事件的代码。
  • 试试这个link中接受的答案。它对我有用。

标签: android android-activity media-player


【解决方案1】:

看看Activity.onUserLeaveHint() http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()

在活动即将开始时作为活动生命周期的一部分调用 作为用户选择的结果进入后台。例如,当 用户按下 Home 键,onUserLeaveHint() 将被调用,但是 当来电导致通话中活动 自动带到前台,onUserLeaveHint() 不会 调用被中断的活动。在调用它的情况下, 在活动的 onPause() 回调之前调用此方法。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题并以一种丑陋的方式解决了它:有一个全局静态播放器。在活动的 onPause 中,它调用播放器停止(但实际上并没有停止),并在 onResume 调用中开始。 在播放器 onStart 中,我将音乐标记为正在播放。在 onStop 中,我将音乐标记为已停止,但实际上并未停止。我在 stop 被调用 1 秒后醒来,如果最后一秒没有“startPlaying”,我会停止音乐。

    希望有更好的办法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2016-12-29
      • 2021-06-22
      相关资源
      最近更新 更多