【问题标题】:How to make MediaPlayer play music only while my app is in foreground?如何让 MediaPlayer 仅在我的应用程序处于前台时播放音乐?
【发布时间】:2011-02-18 09:04:08
【问题描述】:

我有一个包含多个活动的应用程序。我希望在用户在它们之间导航时连续播放背景音乐,并在用户进入主屏幕/其他应用程序/锁定屏幕时停止。

最好的方法是什么?

【问题讨论】:

    标签: android android-activity media-player


    【解决方案1】:

    如果音乐没有在其他活动的 onResume 中恢复,我最终会在 onPause 后 500 毫秒超时后停止音乐。如果活动切换花费的时间超过 500 毫秒,那么音乐应该停止直到下一个活动加载是完全合理的。并且当用户按下主页按钮时,停止音乐之前的 500 毫秒延迟并不明显。

    【讨论】:

      【解决方案2】:

      您可以使用服务来做同样的事情。这是调整后台任务的最佳方式

      这是一个示例服务

      http://androidcore.com/android-programming-tutorials/638-how-to-use-android-services.html

      您可以尝试在此处添加媒体播放器相关代码

      【讨论】:

      • 主要问题是如何让该服务在应用程序处于后台时暂停,并在应用程序被销毁时销毁。
      • 我不确定您是否可以在按下 Home 键的同时暂停播放器。如您所知,Home Key 事件不能因安全约束而被覆盖。当按下 home android 时,只会将您的应用程序置于后台,但您的任务或服务仍将运行。如果您有一个不需要应用程序播放音乐的虚拟根活动,您可以尝试将清单中的 android:finishOnTaskLaunch 添加到该根活动,或者您可以尝试设置 cleartop 标志。
      【解决方案3】:

      实现onPauseonResume。当您的活动被发送到后台以及返回前台时,Android 会调用它们。使用 onStop 处理您的应用被 Android 杀死且不再可见或运行的情况。

      【讨论】:

      • 这就是我现在最终要做的事情,再加上:在将控制权转移到我的应用程序的另一个活动之前,我提出了一个特殊的标志“不要在 onPause 上终止服务”以避免中断音乐。但在某些情况下(例如配置更改),无论如何都会调用 onCreate/onDestroy,我无法拦截它来提升该标志。这就是为什么我正在寻找更通用的解决方案。
      猜你喜欢
      • 2017-05-24
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2014-11-12
      • 2022-11-15
      • 1970-01-01
      相关资源
      最近更新 更多