我将mediaController
与MediaPlayer结合使用,该MediaPlayer包含在绑定到活动服务中。
问题是,当我开始播放音乐时,mediaController
在我按任何按钮之前不会更新。 getCurrentPosition()
返回0,getDuration()
返回2025484024,其显示562:38:04作为mediaController
上的曲目持续时间。按暂停/播放按钮时一切正常。
我还注意到,当处于暂停状态时,seekTo(i)
无效。我猜它是以某种方式连接的。
在日志中我收到错误" MediaPlayer:尝试在没有有效媒体播放器的情况下调用getDuration" 。
我认为问题是我在服务时拨打setController()
。 mediaPlayer
对象未处于“准备”状态(我使用prepareAsync()
准备mediaPlayer
)。
这有什么问题?
答案 0 :(得分:0)
我找到了解决方案。
问题是我已经覆盖了hide()方法,因此mediaController将始终可见。在工作期间show()方法在mediaPlayer准备之前只调用一次。负责更新搜索条和其他媒体控制器元素的处理程序不接收消息(默认情况下以show()方法发送)。您可以通过覆盖mediacontroller的任何方法来解决这个问题,以便在设置mediaPlayer之后它将sendEmptyMessage(SHOW_PROGRESS)。