我有一个活动类和一个内置媒体播放器的服务。用户从他们想要播放的SD卡中选择mp3。我使用Intent extra将该mp3的路径从活动发送到服务。
在服务中,媒体播放器可以启动并播放用户选择的mp3。但有一个问题。如果用户按下暂停按钮,则媒体播放器应暂停并稍后在与其暂停相同的位置恢复该歌曲。如何将活动中的命令发送到应暂停歌曲的服务?
将mediaplayer实例放在Activity中更容易。那样我就可以在那里放一个onclick监听器和一个按钮。由于服务运行的媒体播放器,它在活动外部,并且不能在屏幕上放置一个按钮,以便他们按下暂停。
答案 0 :(得分:5)
两个选项:
如果您的服务是本地服务(这里应该是这种情况),您可以绑定活动和服务。有关如何执行此操作的示例,请参阅Service class documentation
您也可以使用广播。基本上,您的服务中将有一个广播监听器,它将支持广播操作,例如“com.mypackage.mediaplayer.Stop”,“com.mypackage.mediaplayer.Pause”,“com.mypackage.mediaplayer.Next”,.. 。然后,您的活动只需在单击按钮时发送正确的广播消息。
您还应该查看android stock music player source code。
完成同样的项目后,我建议选择#2。