【问题标题】:SeekTo initially in Android's Mediaplayer makes mediaplayer not work最初在 Android 的 Mediaplayer 中的 SeekTo 使 mediaplayer 无法正常工作
【发布时间】:2021-06-28 08:10:47
【问题描述】:

这是我创建 Mediaplayer 并设置它的源的方法,但是在我直接调用 seekTo 之后它就不再播放了(如果我给它一些时间-取决于音频,它可以工作--> 调试后的结论)。

public void makeAudio(boolean isInit){
    try{
        if(!isInit){
            mediaPlayer = new MediaPlayer();
        }
        soundSource = episode.getAudio();
        mediaPlayer.setDataSource(soundSource);
        mediaPlayer.prepareAsync();


        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                soundLength = mediaPlayer.getDuration();
                seekBar.setMax(soundLength/1000);
               mediaPlayer.seekTo(progress);//the problem I guess
            }
        });

    }catch (Exception e){
        e.printStackTrace();
    }
}

它向我显示此错误消息:

E/MediaPlayerNative: Attempt to perform seekTo in wrong state: mPlayer=0x706c23ebc0, mCurrentState=0

我想对此有任何建议,因为我想让我的媒体播放器进入进度值(我从我的意图中得到它)。

【问题讨论】:

    标签: java android android-studio gradle android-mediaplayer


    【解决方案1】:

    我建议你使用 ExoPlayer,它是 MediaPlayer 的改进版本,addListener 更适合在线音频。

    您必须添加侦听器,直到它准备好,然后您才能获得持续时间:

    exoPlayer.addListener(new Player.Listener() {
                    @Override
                    public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
                        if (playbackState == ExoPlayer.STATE_READY) {
                            long realDurationMillis = exoPlayer.getDuration();
                            seekBar.setMax((int)realDurationMillis/1000);
                            dialog.dismiss();
                        }
    
                        if (playbackState == ExoPlayer.STATE_ENDED){
                            performEndExoPlayer();
                        }
                    }
                });
    

    这是一个例子,你可以看看https://developer.android.com/codelabs/exoplayer-intro#5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多