Support track deselect

pull/123/head
FongMi 3 years ago
parent 0089c60ec4
commit a24ce66bea
  1. 2
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  2. 21
      app/src/main/java/com/fongmi/android/tv/ui/custom/TrackSelectionDialog.java
  3. 9
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java

@ -64,7 +64,7 @@ public class ExoUtil {
public static boolean haveTrack(Tracks tracks, int type) {
int count = 0;
for (Tracks.Group trackGroup : tracks.getGroups()) if (trackGroup.getType() == type) count += trackGroup.length;
return count > 1;
return count > 0;
}
public static MediaSource getSource(Result result, int errorCode) {

@ -14,6 +14,7 @@ import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.exoplayer2.Tracks;
import com.google.android.exoplayer2.trackselection.TrackSelectionOverride;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
@ -105,10 +106,26 @@ public final class TrackSelectionDialog implements TrackAdapter.OnClickListener
}
}
private void setExoTrack(Track item) {
if (item.isSelected()) {
player.exo().setTrackSelectionParameters(player.exo().getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(player.exo().getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), ImmutableList.of())).build());
} else {
player.exo().setTrackSelectionParameters(player.exo().getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(player.exo().getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), item.getTrack())).build());
}
}
private void setIjkTrack(Track item) {
if (item.isSelected()) {
player.ijk().deselectTrack(item.getTrack());
} else {
player.ijk().selectTrack(item.getTrack());
}
}
@Override
public void onItemClick(Track item) {
if (player.isExo()) player.exo().setTrackSelectionParameters(player.exo().getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(player.exo().getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), item.getTrack())).build());
if (player.isIjk()) player.ijk().selectTrack(item.getTrack());
if (player.isExo()) setExoTrack(item);
if (player.isIjk()) setIjkTrack(item);
dialog.dismiss();
}
}

@ -467,7 +467,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
if (trackInfos == null) return false;
int count = 0;
for (IjkTrackInfo trackInfo : trackInfos) if (trackInfo.getTrackType() == type) ++count;
return count > 1;
return count > 0;
}
public IjkTrackInfo[] getTrackInfo() {
@ -484,6 +484,13 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
seekTo(position);
}
public void deselectTrack(int track) {
long position = getCurrentPosition();
mIjkPlayer.deselectTrack(track);
subtitleView.setText("");
seekTo(position);
}
private void setPreferredTextLanguage() {
IjkTrackInfo[] trackInfos = mIjkPlayer.getTrackInfo();
if (trackInfos == null) return;

Loading…
Cancel
Save