将MediaController.MediaPlayerControl与Service一起使用

时间:2014-08-04 11:09:55

标签: android android-mediaplayer mediacontroller

我将mediaController与MediaPlayer结合使用,该MediaPlayer包含在绑定到活动服务中。 问题是,当我开始播放音乐时,mediaController在我按任何按钮之前不会更新。 getCurrentPosition()返回0,getDuration()返回2025484024,其显示562:38:04作为mediaController上的曲目持续时间。按暂停/播放按钮时一切正常。 我还注意到,当处于暂停状态时,seekTo(i)无效。我猜它是以某种方式连接的。

在日志中我收到错误" MediaPlayer:尝试在没有有效媒体播放器的情况下调用getDuration"

我认为问题是我在服务时拨打setController()mediaPlayer对象未处于“准备”状态(我使用prepareAsync()准备mediaPlayer)。

这有什么问题?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

问题是我已经覆盖了hide()方法,因此mediaController将始终可见。在工作期间show()方法在mediaPlayer准备之前只调用一次。负责更新搜索条和其他媒体控制器元素的处理程序不接收消息(默认情况下以show()方法发送)。您可以通过覆盖mediacontroller的任何方法来解决这个问题,以便在设置mediaPlayer之后它将sendEmptyMessage(SHOW_PROGRESS)。