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

时间:2012-10-16 06:58:45

标签: android service android-activity communication

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

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

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

1 个答案:

答案 0 :(得分:5)

两个选项:

  1. 如果您的服务是本地服务(这里应该是这种情况),您可以绑定活动和服务。有关如何执行此操作的示例,请参阅Service class documentation

  2. 您也可以使用广播。基本上,您的服务中将有一个广播监听器,它将支持广播操作,例如“com.mypackage.mediaplayer.Stop”,“com.mypackage.mediaplayer.Pause”,“com.mypackage.mediaplayer.Next”,.. 。然后,您的活动只需在单击按钮时发送正确的广播消息。

  3. 您还应该查看android stock music player source code

    完成同样的项目后,我建议选择#2。