Using MediaController.MediaPlayerControl with Service



我使用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)。

最新更新