安卓背景音乐

问题描述 投票:0回答:2

我有一个问题。我看到这个答案:背景音乐Android

我不知道这是否是最好的方法, 但问题是:当你改变 Activity 时会发生什么?当您更改“活动”时,如何继续播放背景音乐? 您需要创建一个新的BackgroundSound线程吗?

我需要在背景中播放音乐,但找不到最佳方法。我认为在每个 Activity 中创建一个 MediaPlayer 并不是最好的方法。

android android-mediaplayer
2个回答
1
投票

如果您确实希望在您的应用程序进入后台并且 Android 屏幕上显示其他内容时播放音乐,那么您可以执行另一个问题的提问者使用的解决方案:启动播放音乐的服务。

如果您希望背景音乐仅在您的应用程序位于前台时播放,那么您可以选择 AsyncTask 的路线。如果这样做,那么您只需要一个 AsyncTask。它的生命周期独立于 Activity 的生命周期。只需记住 onPreExecute 和 onPostExecute 回调将在处理不同 Activity 的 UI 线程上调用。

请记住,如果您使用 AsyncTask 来播放背景音乐,则没有其他 AsyncTask 可以同时运行,因为默认情况下,它们都共享相同的后台线程。

编辑:由于您需要与背景音乐进行交互,那么您可能应该创建一个服务并使用意图与其进行通信。

我不会写关于如何创建服务的教程,因为已经有很多了。您可以快速搜索并挑选一些东西。

在该服务内部,您想要创建一个 LocalBroadcastManager。

myLocalManager = LocalBroadcastManager.getInstance(getApplicationContext());

向其注册一个BroadcastReceiver和一个IntentFilter。

让广播接收器检查它获取的意图,以获取有关您希望背景音乐执行的操作的信息,然后执行该操作。最简单的方法是在您的 Activity 中添加额外内容,然后在您的 Service 中将其取出。

让 IntentFilter 类似于“my.app.package.BackgroundMusic”以避免名称冲突。

然后,让您的各种活动获取自己的 LocalBroadcastManager 实例,然后调用 sendBroadcast 告诉服务要做什么。当您构造意图时,您希望使用与创建 IntentFilter 时使用的名称相同的名称,以便它将触发您编写的 BroadcastReceiver。


0
投票

您可能想看看musicvybe.com,他们使用html5播放器添加了音乐。

© www.soinside.com 2019 - 2024. All rights reserved.