Android MediaPlayer"停止调用状态0(错误-38,0)"准备叫

时间:2015-11-10 11:48:10

标签: android android-mediaplayer

我正在尝试在我的应用程序中播放一些音频,并且我一直收到错误:

E/MediaPlayer: stop called in state 1
V/MediaPlayer: message received msg=100, ext1=-38, ext2=0
E/MediaPlayer: error (-38, 0)

我已经检查了许多其他答案,但是所有人都说你需要调用prepareAsync()或prepare()来防止这种情况,但在我的情况下,我有,但我仍然得到错误。我也试过这两个,他们没有阻止错误。这是我的代码:

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(message.getVoice());
mediaPlayer.prepareAsync();

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mediaPlayer.start();
    }
});

我不知道为什么这不起作用,所有这些都被try catch块所包围,它也没有给我任何提示。从服务器接收音频文件,我可以确认它没有返回null。

2 个答案:

答案 0 :(得分:0)

尝试像这样设置dataSource ..

  MediaPlayer player = MediaPlayer.create(this, Uri.parse(message.getVoice()));
    player.setOnPreparedListener(new OnPreparedListener() { 
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });

答案 1 :(得分:-1)

出于某种原因,更改onPreparedListener修复所有内容的位置:

mediaPlayer.setOnPreparedListener(this);

然后继承该方法并使用:

@Override
public void onPrepared() {
    Do stuff
}

这不应该做任何事情,但在我的情况下它起作用了。