Android MediaPlayer从糟糕网络的url播放mp3

时间:2015-06-05 09:40:59

标签: android mp3 media-player

我想使用MediaPlayer从url播放mp3,但是当缓冲部分流时网络断开连接,当网络再次连接时,如何继续缓冲剩余的流。

mp = MediaPlayer.create(this, Uri.parse("http://media.cmechina.net/mobile/201500011693/02/flv/5.mp3"));
mp.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {

    @Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
        Log.d("TAG", "percent:  " + percent);
    }
});

mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        Log.d("TAG", "onError === what:  " + what + " extra: " + extra);
        return false;
    }
});

mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {

    @Override
    public boolean onInfo(MediaPlayer mp, int what, int extra) {
        Log.d("TAG", "onInfo   what:  " + what + " extra: " + extra);
        return false;
    }
});

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {
        Log.d("TAG", "onCompletion is called!");
    }
});

2 个答案:

答案 0 :(得分:1)

当互联网出现故障时,您应该从onError方法知道,当发生这种情况时,您可以保存播放器停止的位置并尝试再次流式传输。 我个人更喜欢从MediaPlayer创建实例,然后我使用

player.setOnPreparedListener(this);
androidPlayer.setDataSource(URL);
androidPlayer.prepareAsync();

一旦玩家准备就绪并触发onPrepared(MediaPlayer player),请检查是否有保存的位置,然后拨打player.seekTo(timeMilisecond)

请记住为onPreparedonSeekComplete

设置监听器

答案 1 :(得分:0)

我有同样的问题,但在我的情况下我没有onError调用(是的它已经注册)但是在播放已经缓冲的数据后我得到了一个onComplete调用。

相关问题