Support track db - part 3

pull/123/head
FongMi 3 years ago
parent bad0694f57
commit 474bbc40ab
  1. 21
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 8
      app/src/main/java/com/fongmi/android/tv/bean/Track.java
  4. 18
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  5. 7
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java

@ -91,6 +91,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private ExecutorService mExecutor;
private SiteViewModel mViewModel;
private boolean mFullscreen;
private boolean mInitTrack;
private History mHistory;
private Players mPlayers;
private int mCurrent;
@ -757,7 +758,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
switch (event.getState()) {
case 0:
checkPosition();
setTrackVisible();
setTrackVisible(false);
break;
case Player.STATE_IDLE:
break;
@ -767,8 +768,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
case Player.STATE_READY:
hideProgress();
mPlayers.reset();
setTrackVisible();
mPlayers.setTrack(Track.find(getHistoryKey()));
setDefaultTrack();
setTrackVisible(true);
mBinding.widget.size.setText(mPlayers.getSizeText());
break;
case Player.STATE_ENDED:
@ -784,11 +785,19 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private void checkPosition() {
mPlayers.seekTo(Math.max(mHistory.getOpening(), mHistory.getPosition()), false);
Clock.get().setCallback(this);
mInitTrack = true;
}
private void setTrackVisible() {
mBinding.control.text.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE);
mBinding.control.audio.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
private void setTrackVisible(boolean visible) {
mBinding.control.text.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE);
mBinding.control.audio.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
}
private void setDefaultTrack() {
if (mInitTrack) {
mInitTrack = false;
mPlayers.setTrack(Track.find(getHistoryKey()));
}
}
private void onError(String msg) {

@ -647,7 +647,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
switch (event.getState()) {
case 0:
setR6Callback();
setTrackVisible();
setTrackVisible(false);
break;
case Player.STATE_IDLE:
break;
@ -657,7 +657,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
case Player.STATE_READY:
hideProgress();
mPlayers.reset();
setTrackVisible();
setTrackVisible(true);
App.removeCallbacks(mR6);
break;
case Player.STATE_ENDED:
@ -671,9 +671,9 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
}
private void setTrackVisible() {
mBinding.control.text.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE);
mBinding.control.audio.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
private void setTrackVisible(boolean visible) {
mBinding.control.text.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE);
mBinding.control.audio.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
}
private void onError() {

@ -91,6 +91,14 @@ public class Track {
this.selected = selected;
}
public boolean isExo(int player) {
return getPlayer() == player && player == 0;
}
public boolean isIjk(int player) {
return getPlayer() == player && player == 1;
}
public Track toggle() {
setSelected(!isSelected());
return this;

@ -248,10 +248,7 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
}
public void setTrack(List<Track> tracks) {
for (Track track : tracks) {
if (isExo()) setTrackExo(track);
else setTrackIjk(track);
}
for (Track track : tracks) setTrack(track);
}
public boolean haveTrack(int type) {
@ -335,19 +332,24 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
PlayerEvent.state(0);
}
private void setTrack(Track item) {
if (item.isExo(player)) setTrackExo(item);
if (item.isIjk(player)) setTrackIjk(item);
}
private void setTrackExo(Track item) {
if (item.isSelected()) {
exo().setTrackSelectionParameters(exo().getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(exo().getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), item.getTrack())).build());
exoPlayer.setTrackSelectionParameters(exoPlayer.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(exoPlayer.getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), item.getTrack())).build());
} else {
exo().setTrackSelectionParameters(exo().getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(exo().getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), ImmutableList.of())).build());
exoPlayer.setTrackSelectionParameters(exoPlayer.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(exoPlayer.getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), ImmutableList.of())).build());
}
}
private void setTrackIjk(Track item) {
if (item.isSelected()) {
ijk().selectTrack(item.getTrack());
ijkPlayer.selectTrack(item.getTrack());
} else {
ijk().deselectTrack(item.getTrack());
ijkPlayer.deselectTrack(item.getTrack());
}
}

@ -200,9 +200,9 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
IMediaPlayer.OnPreparedListener mPreparedListener = new IMediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer mp) {
setPreferredTextLanguage();
mCurrentState = STATE_PREPARED;
if (mOnPreparedListener != null) mOnPreparedListener.onPrepared(mIjkPlayer);
setPreferredTextLanguage();
mVideoWidth = mp.getVideoWidth();
mVideoHeight = mp.getVideoHeight();
if (mVideoWidth != 0 && mVideoHeight != 0) {
@ -481,14 +481,15 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
public void selectTrack(int track) {
long position = getCurrentPosition();
mIjkPlayer.selectTrack(track);
seekTo(position);
subtitleView.setText("");
if (position != 0) seekTo(position);
}
public void deselectTrack(int track) {
long position = getCurrentPosition();
mIjkPlayer.deselectTrack(track);
subtitleView.setText("");
seekTo(position);
if (position != 0) seekTo(position);
}
private void setPreferredTextLanguage() {

Loading…
Cancel
Save