Android 将MediaController.MediaPlayerControl与服务一起使用

Android 将MediaController.MediaPlayerControl与服务一起使用,android,android-mediaplayer,mediacontroller,Android,Android Mediaplayer,Mediacontroller,我正在对绑定到活动服务中包含的MediaPlayer使用mediaController。 问题是,当我开始播放音乐时,mediaController在我按下任何按钮之前都不会更新getCurrentPosition()返回0,getDuration()返回2025484024,其中在mediaController上显示562:38:04作为曲目持续时间。当我按下暂停/播放按钮时,一切正常。 我还注意到,当处于暂停状态时,seekTo(I)不工作。我想这是有联系的 在日志中,我得到错误“Media

我正在对绑定到活动服务中包含的MediaPlayer使用
mediaController
。 问题是,当我开始播放音乐时,
mediaController
在我按下任何按钮之前都不会更新
getCurrentPosition()
返回0,
getDuration()
返回2025484024,其中在
mediaController
上显示562:38:04作为曲目持续时间。当我按下暂停/播放按钮时,一切正常。 我还注意到,当处于暂停状态时,
seekTo(I)
不工作。我想这是有联系的

在日志中,我得到错误“MediaPlayer”﹕ 尝试在没有有效mediaplayer的情况下调用getDuration“

我认为问题在于,当服务“
mediaPlayer
对象未处于准备状态时,我调用了
setController()
(我使用
prepareAsync()
来准备
mediaPlayer

这有什么问题吗?

我找到了解决办法

问题是我已经重写了hide()方法,以便mediaController始终可见。在工作期间,在准备mediaPlayer之前只调用一次show()方法。负责更新seekbar和其他mediacontroller元素的处理程序不接收消息(默认情况下,该消息以show()方法发送)。您可以通过覆盖mediacontroller的任何方法来解决此问题,以便它在设置mediaPlayer后发送EmptyMessage(显示进度)