|
|
|
|
@ -76,6 +76,7 @@ public class Players implements Player.Listener, ParseCallback { |
|
|
|
|
private MediaSessionCompat session; |
|
|
|
|
private ExoPlayer exoPlayer; |
|
|
|
|
private ParseJob parseJob; |
|
|
|
|
private PlayerView view; |
|
|
|
|
private List<Sub> subs; |
|
|
|
|
private String format; |
|
|
|
|
private String url; |
|
|
|
|
@ -107,21 +108,22 @@ public class Players implements Player.Listener, ParseCallback { |
|
|
|
|
MediaControllerCompat.setMediaController(activity, session.getController()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void init(PlayerView exo) { |
|
|
|
|
public void init(PlayerView view) { |
|
|
|
|
releasePlayer(); |
|
|
|
|
initExo(exo); |
|
|
|
|
setPlayer(view); |
|
|
|
|
setMediaItem(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void initExo(PlayerView exo) { |
|
|
|
|
private void setPlayer(PlayerView view) { |
|
|
|
|
exoPlayer = new ExoPlayer.Builder(App.get()).setLoadControl(ExoUtil.buildLoadControl()).setTrackSelector(ExoUtil.buildTrackSelector()).setRenderersFactory(ExoUtil.buildRenderersFactory(isHard() ? EXTENSION_RENDERER_MODE_ON : EXTENSION_RENDERER_MODE_PREFER)).setMediaSourceFactory(ExoUtil.buildMediaSourceFactory()).build(); |
|
|
|
|
exoPlayer.setAudioAttributes(AudioAttributes.DEFAULT, true); |
|
|
|
|
exoPlayer.addAnalyticsListener(new EventLogger()); |
|
|
|
|
exoPlayer.setHandleAudioBecomingNoisy(true); |
|
|
|
|
exo.setRender(Setting.getRender()); |
|
|
|
|
view.setRender(Setting.getRender()); |
|
|
|
|
exoPlayer.setPlayWhenReady(true); |
|
|
|
|
exoPlayer.addListener(this); |
|
|
|
|
exo.setPlayer(exoPlayer); |
|
|
|
|
view.setPlayer(exoPlayer); |
|
|
|
|
this.view = view; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public ExoPlayer get() { |
|
|
|
|
@ -277,10 +279,10 @@ public class Players implements Player.Listener, ParseCallback { |
|
|
|
|
return setSpeed(speed); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void toggleDecode(PlayerView exo) { |
|
|
|
|
public void toggleDecode() { |
|
|
|
|
decode = isHard() ? SOFT : HARD; |
|
|
|
|
Setting.putDecode(decode); |
|
|
|
|
init(exo); |
|
|
|
|
init(view); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String getPositionTime(long time) { |
|
|
|
|
@ -317,8 +319,8 @@ public class Players implements Player.Listener, ParseCallback { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void stop() { |
|
|
|
|
if (parseJob != null) parseJob.stop(); |
|
|
|
|
if (exoPlayer != null) exoPlayer.stop(); |
|
|
|
|
stopParse(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void release() { |
|
|
|
|
@ -331,9 +333,8 @@ public class Players implements Player.Listener, ParseCallback { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void releasePlayer() { |
|
|
|
|
if (exoPlayer == null) return; |
|
|
|
|
exoPlayer.removeListener(this); |
|
|
|
|
exoPlayer.release(); |
|
|
|
|
if (exoPlayer != null) exoPlayer.release(); |
|
|
|
|
if (view != null) view.setPlayer(null); |
|
|
|
|
exoPlayer = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|