我使用mediaController
与MediaPlayer,这是包含在绑定到活动服务。问题是,当我开始播放音乐,mediaController
不更新,直到我按下任何按钮。getCurrentPosition()
返回0,getDuration()
返回2025484024,在mediaController
上显示562:38:04为轨道持续时间。当我按暂停/播放按钮时,一切都很好。我也刚刚注意到,当在暂停状态,seekTo(i)
不工作。我猜它们之间有某种联系。
在日志中我得到错误"MediaPlayer: Attempt to call getDuration without a valid MediaPlayer ".
我认为问题是,当服务的mediaPlayer
对象不处于准备状态时,我调用setController()
(我使用prepareAsync()
来准备mediaPlayer
)。
这有什么问题?
我找到了一个解决方案。
问题是,我已经重写了hide()方法,使mediaController将始终可见。在工作期间,在mediaPlayer准备好之前,show()方法只调用一次。负责更新搜索栏和其他媒体控制器元素的处理程序不接收消息(默认情况下在show()方法中发送)。你可以通过重写medicontroller的任何方法来解决这个问题,这样它就会在mediaPlayer设置后发送demptymessage (SHOW_PROGRESS)。