ExoPlayer和开始/暂停/ seekTo命令

我正在尝试使用ExoPlayer反对MediaPlayer ,我似乎无法弄清楚…

MediaPlayer.pause() .start() / .pause()命令…我可以seekTo(1287) ,它会自动开始播放…

我如何用ExoPlayer做到这一点? 我试图做seekTo(1287)但它不开始播放后…我也加了.setPlayWhenReady(true)之后,仍然没有运气…

我能够.stop() …但我不能让它开始播放之后,除非我再次.prepare() …但我不认为我应该必须这样做之间的每一个暂停和玩。

我正在使用我自己的控制和方法,像在ExoPlayer演示中反对MediaController …我不明白如何实现控件…

任何build议任何人?

编辑:

好吧,我想了一下,开始了…

 .setPlayWhenReady(true) // start .setPlayWhenReady(false) // pause 

但我仍然有跟踪问题… .seekTo间歇性地工作…有时它可以工作…但其他时间我得到这个错误:

 E/AudioTrack: AudioTrack::set : Exit 

(并且它只能进入缓冲区状态…并不完全“准备好”…

Solutions Collecting From Web of "ExoPlayer和开始/暂停/ seekTo命令"

ExoPlayer源代码中PlayerControl的官方示例完全按照您的要求进行:

 public class PlayerControl implements MediaPlayerControl { private final ExoPlayer exoPlayer; public PlayerControl(ExoPlayer exoPlayer) { this.exoPlayer = exoPlayer; } @Override public boolean canPause() { return true; } @Override public boolean canSeekBackward() { return true; } @Override public boolean canSeekForward() { return true; } @Override public int getAudioSessionId() { throw new UnsupportedOperationException(); } @Override public int getBufferPercentage() { return exoPlayer.getBufferedPercentage(); } @Override public int getCurrentPosition() { return exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ? 0 : (int) exoPlayer.getCurrentPosition(); } @Override public int getDuration() { return exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ? 0 : (int) exoPlayer.getDuration(); } @Override public boolean isPlaying() { return exoPlayer.getPlayWhenReady(); } @Override public void start() { exoPlayer.setPlayWhenReady(true); } @Override public void pause() { exoPlayer.setPlayWhenReady(false); } @Override public void seekTo(int timeMillis) { long seekPosition = exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ? 0 : Math.min(Math.max(0, timeMillis), getDuration()); exoPlayer.seekTo(seekPosition); } } 

如果您在查找操作过程中遇到奇怪的行为,可能是由于您特定的stream/文件types。 我build议你看一下ExoPlayer的基本实现 ,最后在Github上报告任何问题 。