ExoPlayer und start / pause / seekTo Befehle

Ich versuche, ExoPlayer gegen ExoPlayer zu benutzen und ich kann es nicht scheinen, es herauszufinden …

.start() hat .start() / .pause() Befehle … und ich kann einfach nur seekTo(1287) und es startet automatisch …

Wie mache ich das mit ExoPlayer ? Ich habe versucht zu tun seekTo(1287) aber es fängt nicht an zu spielen nach … Ich habe auch hinzugefügt.setPlayWhenReady .setPlayWhenReady(true) danach und noch kein Glück …

Ich bin in der Lage zu .stop() … aber ich kann es nicht wieder anfangen, wieder zu spielen, wenn ich nicht wieder .prepare() … aber ich glaube nicht, dass ich das zwischen jeder Pause machen muss spielen.

Ich benutze meine eigenen Kontrollen und Methoden gegen MediaController wie in der ExoPlayer Demo … Ich kann nicht ganz sehen, wie die Kontrollen implementiert sind …

Irgendwelche Vorschläge jemand?

Bearbeiten:

OK, ich habe herausgefunden Pause und starten …

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

Aber ich habe immer noch Probleme mit dem Tracking … .seekTo arbeitet zeitweilig … manchmal funktioniert es … aber mal bekomme ich diesen Fehler:

 E/AudioTrack: AudioTrack::set : Exit 

(Und es kommt nur zum Pufferzustand … geht nicht ganz auf "fertig" …

One Solution collect form web for “ExoPlayer und start / pause / seekTo Befehle”

Das offizielle Beispiel des PlayerControl im ExoPlayer Quellcode tut genau das, was du gefragt hast:

 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); } } 

Wenn Sie während des Suchvorgangs seltsame Verhaltensweisen erleben, liegt es an Ihnen, dass Sie einen bestimmten Stream / Dateityp haben. Ich kann Ihnen vorschlagen, einen Blick auf die Basis-Implementierung des ExoPlayers zu werfen und eventuell ein Problem auf Github zu melden.

Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.