在android中将命令从Activity发送到Service

我有一个活动类和一个内置媒体播放器的服务.用户从他们想要播放的SD卡中选择mp3.我使用Intent extra将该mp3的路径从活动发送到服务.

在服务中,媒体播放器可以启动并播放用户选择的mp3.但有一个问题.如果用户按下暂停按钮,则媒体播放器应暂停并稍后在与其暂停相同的位置恢复该歌曲.如何将活动中的命令发送到应暂停歌曲的服务?

将mediaplayer实例放在Activity中更容易.那样我就可以在那里放一个onclick监听器和一个按钮.对于由服务运行的媒体播放器,它在活动外部并且不能在屏幕上放置按钮以便他们推动暂停.

解决方法:

两种选择:

>如果您的服务是本地服务(这应该是这种情况),您可以绑定活动和服务.有关如何执行此操作的示例,请参阅Service class documentation
>您也可以使用广播.基本上,您的服务中将有一个广播监听器,它将支持广播操作,例如“com.mypackage.mediaplayer.Stop”,“com.mypackage.mediaplayer.Pause”,“com.mypackage.mediaplayer.Next”,.. .然后,您的活动只需在单击按钮时发送正确的广播消息.

您还应该看一下android stock music player source code.

做完同样的项目后,我建议选择#2.

上一篇:java – 如何从JVM外部调用对象中的方法?


下一篇:android – 在片段和活动之间进行通信 – 最佳实践