在多个活动应用程序中处理音乐播放

问题描述:

我的应用程序中有几个活动,并且在后台播放音乐,我想要实现的是音乐应该在应用程序启动时开始并在应用程序完成时播放去背景。有没有简单的解决方法,或者我应该实现某种系统来管理每个活动的回放?提前致谢。在多个活动应用程序中处理音乐播放

+0

此链接将帮助您在不使用服务的情况下执行此操作:http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion – Arash 2014-04-04 12:32:02

您可以使用可随时启动和停止的服务播放音乐文件。

+0

这并不能解决问题,因为我无法确切地知道在哪里停止服务。用户可以从一个活动回到前一个活动 - 然后我不应该停止播放,但他也可以关闭整个应用程序 - 那就是停止播放的时间了。有任何想法吗? – Egor 2012-01-09 11:10:05

+0

请检查ActivityManager以了解有关您的应用程序状态和全部的信息。 – 2012-01-09 11:42:53

使用MediaPlayer服务实现它是实现这一点的最好方法。

如果您在活动中实现它,你将不得不 -

  • 每个活动都需要知道你正在播放的当前歌曲,播放的当前时间。
  • 当您启动一项新活动时,您将不得不在当前活动中停止mediaplayer,并在新活动中重新启动它并查找它,然后才能开始回放。
  • 音频播放中会出现毛刺。如果他继续在这些活动之间切换,这对用户来说变得烦人。

如果您实现IT即服务 -

  • 你需要传达到正在播放的音乐的新的活动。只需传递一个布尔值(isplaying
  • 每个活动将或更确切地应该知道在应用程序本身关闭之前它是否是上次活动。如果它知道这个信息,那么它所需要做的就是检查标志并重新获得该服务并在退出之前将其关闭。
  • 在活动之间切换时不会出现毛刺。
+0

事实上,只有一个配乐,它只是永远循环。主要问题是每个活动都可能是最后的,因为用户只需按下硬件主页按钮,音乐就会继续播放,这是一个很大的麻烦。 – Egor 2012-01-09 11:32:38

+0

是的,这就是我所说的问题,你不能在一个活动中启动一个mediaplayer实例并忘记它,你将不得不在每个活动中与你一起。但有了服务,您可以在任何时间点重新获得服务,但仍然可以在背景中播放声音而不会出现任何故障。 – bluefalcon 2012-01-09 13:55:45

创建一个扩展Application标签的Class文件,并开始在oncreate()方法中播放音乐。

public class MyApp extends Application { 
@Override 
public void onCreate() { 
     //start music in a service 
    } 
} 

从parentActivity,通过调用活动启动其他活动:StartActivityForResult(),所以当孩子的活动结束后,parentActivity应在活动结束知道,它会导致到活动:: onActivityResult()。

在这种情况下,您可以在主要父活动中开始播放媒体,并且您可以在按下时结束音乐(服务)。

在所有活动中停止任何HomeButtonClicks并暂停/停止播放器(结束服务)。

+0

首先,处理主页按钮点击只允许Launher应用程序。其次是在Application对象中播放音乐并在其他地方停止是不好的做法。 – 2012-03-01 09:54:07