2013-02-19 53 views
0

您好我正在尝试编写一个Android应用程序,用于播放MediaPlayer中的MP3文件,以便在用户决定打开其他活动或手机屏幕锁定时,音频文件将继续播放。我还想给用户一个MediaController小部件来播放,停止,暂停,快退或快进。我已经有一个应用程序可以播放服务中的MP3文件,但我现在想要添加MediaController,而且我无法理解这是如何在服务中完成的。我想我必须将服务“绑定”到我的活动中,但我也不确定这是如何完成的。服务可以实现MediaPlayer.OnPreparedListener和MediaController.MediaPlayerControl吗?

所以我的问题是:

1)如何绑定的服务和活动?

2)如何在服务中实现MediaPlayer和MediaController?

谢谢!

回答

0

对于MediaPlayer的,研究这些文档:http://developer.android.com/reference/android/media/MediaPlayer.html

如果这是你自己的服务,您的活动可以调用startService(new Intent(this, MyService.class))。这将触发onStartCommand回调(即使服务已经启动)。当您希望服务停止并随后销毁时,您的活动也可以拨打stopService(intent)。服务也可致电stopSelf()

“绑定”的服务通常是指属于其他流程,允许他人访问调用跨越进程边界方法服务。除非你想要这么做,否则你可能会忽略这一点。

+0

我已经能够创建具有实现媒体播放器的服务的应用程序和工作正常,但我希望能够给用户提供的MediaController控制音频文件的播放。那么初始化MediaController在哪里?在服务的'onStartCommand'或者活动'onCreate'中? – 2013-02-19 05:05:48

+0

您可以将MediaController放入您的活动中并响应按钮点击以启动/停止您的服务。如果您希望用户在执行其他任务时能够播放媒体,您应该在通知面板中留下持续通知,以便用户可以轻松返回活动以访问媒体控件。在JellyBean上,您还可以利用新的Notification API,并使用RemoteViews将一些控件放置在通知本身中。 – Karakuri 2013-02-19 05:10:44