3 回答
TA贡献1836条经验 获得超4个赞
您需要使用侦听器调用mediaPlayer.start()该onPrepared方法。您收到此错误是因为您mediaPlayer.start()在达到准备状态之前正在调用。
以下是如何做到这一点:
mp.setDataSource(url);
mp.setOnPreparedListener(this);
mp.prepareAsync();
public void onPrepared(MediaPlayer player) {
player.start();
}
TA贡献2039条经验 获得超7个赞
似乎错误-38表示状态异常(如错误消息所示)。例如,如果你打电话start(),在歌曲准备好之前,或者你打电话pause(),即使这首歌根本没有播放。
要解决此问题,请在调用方法之前检查mediaPlayer的状态。例如:
if(mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
此外,MediaPlayer正在发送事件消息。即使您不需要准备好的事件(尽管在此事件被触发之前不开始播放也是个好主意),您必须设置一个回调侦听器。这也为成立OnErrorListener,OnCompletionListener,OnPreparedListener和OnSeekCompletedListener(如果调用seek方法)。
听众可以简单地附上
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// Do something. For example: playButton.setEnabled(true);
}
});
TA贡献1829条经验 获得超9个赞
当我试图获取媒体播放器的当前位置(MediaPlayer.getCurrentPosition())时,我得到了这个错误。我通过跟踪其状态并在调用onPreparedListener之后仅调用getCurrentPosition()方法来解决这个问题。
- 3 回答
- 0 关注
- 2290 浏览
添加回答
举报