我有一个活动类和一个内置媒体播放器的服务.用户从他们想要播放的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.