我有一个活动类和一个带有媒体播放器的服务。 用户从要播放的 SD 卡中选择 mp3。 我使用 Intent extra 将该 mp3 的路径从活动发送到服务。
在服务中,媒体播放器可以启动和播放用户选择的 mp3。 然而一个问题。 如果用户按下暂停按钮,媒体播放器应暂停歌曲,稍后在暂停的相同位置恢复歌曲。如何将应暂停歌曲的命令从活动发送到服务?
将媒体播放器实例放在活动内要容易得多。 这样我就可以在那里放置一个 onclick 监听器和一个按钮。 使用由服务运行的媒体播放器,它位于活动的外部,不能只是在屏幕上放置一个按钮供他们按下暂停。
两个选项:
-
如果您的服务是本地服务(此处应该是这种情况),则可以绑定活动和服务。有关如何执行此操作的示例,请参阅服务类文档
-
您还可以使用广播。基本上,您的服务中将有一个广播侦听器,它将期望广播操作,例如"com.mypackage.mediaplayer.Stop","com.mypackage.mediaplayer.Pause","com.mypackage.mediaplayer.Next",...然后,您的活动只需在单击按钮时发送正确的广播消息。
您还应该查看安卓股票音乐播放器源代码。
完成相同类型的项目后,我建议使用选项#2。