Merge pull request #422 from okcaptain/dev

fix bug
pull/423/head
okcaptain 2 years ago committed by GitHub
commit e81088f37e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 32
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  4. 18
      app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
  5. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  6. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/InfoDialog.java

@ -216,7 +216,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
}
private void onTrack(View view) {
TrackDialog.create().player(mPlayers).type(Integer.parseInt(view.getTag().toString())).show(this);
TrackDialog.create().player(mPlayers).vod(true).type(Integer.parseInt(view.getTag().toString())).show(this);
hideControl();
}

@ -1045,7 +1045,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void onTrack(View view) {
TrackDialog.create().player(mPlayers).chooser(this).type(Integer.parseInt(view.getTag().toString())).show(this);
TrackDialog.create().player(mPlayers).chooser(this).vod(true).type(Integer.parseInt(view.getTag().toString())).show(this);
hideControl();
}

@ -122,25 +122,7 @@ public class ExoUtil {
return null;
}
private static MediaSource getConcatSource(Result result, Sub sub, int errorCode) {
String url = result.getRealUrl();
String[] urls = url.split("\\*\\*\\*");
ConcatenatingMediaSource2.Builder concatenatingMediaSource = new ConcatenatingMediaSource2.Builder();
for(String one : urls) {
if (TextUtils.isEmpty(one)) continue;
String[] oneInfo = one.split("\\|\\|\\|");
if (oneInfo.length < 2) continue;
String oneUrl = oneInfo[0];
String oneDuration = oneInfo[1];
long duration = Long.parseLong(oneDuration);
concatenatingMediaSource.add(getSource(result.getHeaders(), oneUrl, result.getFormat(), result.getSubs(), sub, null, errorCode), duration);
}
return concatenatingMediaSource.build();
}
public static MediaSource getSource(Result result, Sub sub, int errorCode) {
String url = result.getRealUrl();
if (url.contains("***") && url.contains("|||")) return getConcatSource(result, sub, errorCode);
return getSource(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getSubs(), sub, null, errorCode);
}
@ -157,12 +139,24 @@ public class ExoUtil {
if (sub != null) subs.add(sub);
String mimeType = getMimeType(format, errorCode);
if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo()));
if (url.contains("***") && url.contains("|||")) return getConcat(headers, url, format, subs, sub, drm, errorCode);
return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm));
}
private static MediaSource getConcat(Map<String, String> headers, String url, String format, List<Sub> subs, Sub sub, Drm drm, int errorCode) {
ConcatenatingMediaSource2.Builder builder = new ConcatenatingMediaSource2.Builder();
for (String split : url.split("\\*\\*\\*")) {
String[] info = split.split("\\|\\|\\|");
if (info.length < 2) continue;
long duration = Long.parseLong(info[1]);
builder.add(getSource(headers, info[0], format, subs, sub, drm, errorCode), duration);
}
return builder.build();
}
private static MediaItem getMediaItem(Uri uri, String mimeType, List<Sub> subs, Drm drm) {
MediaItem.Builder builder = new MediaItem.Builder().setUri(uri);
if (subs.size() > 0) builder.setSubtitleConfigurations(getSubtitles(subs));
if (!subs.isEmpty()) builder.setSubtitleConfigurations(getSubtitles(subs));
if (drm != null) builder.setDrmConfiguration(drm.get());
builder.setAllowChunklessPreparation(Players.isHard(Players.EXO));
if (mimeType != null) builder.setMimeType(mimeType);

@ -41,6 +41,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
private Listener listener;
private ChooserListener cListener;
private Players player;
private boolean vod;
private int type;
public static TrackDialog create() {
@ -52,11 +53,6 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
this.provider = new TrackNameProvider();
}
public TrackDialog type(int type) {
this.type = type;
return this;
}
public TrackDialog chooser(ChooserListener listener) {
this.cListener = listener;
return this;
@ -67,6 +63,16 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
return this;
}
public TrackDialog vod(boolean vod) {
this.vod = vod;
return this;
}
public TrackDialog type(int type) {
this.type = type;
return this;
}
public void show(FragmentActivity activity) {
for (Fragment f : activity.getSupportFragmentManager().getFragments()) if (f instanceof BottomSheetDialogFragment) return;
show(activity.getSupportFragmentManager(), null);
@ -86,7 +92,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.post(() -> binding.recycler.scrollToPosition(adapter.getSelected()));
binding.recycler.setVisibility(adapter.getItemCount() == 0 ? View.GONE : View.VISIBLE);
binding.choose.setVisibility(type == C.TRACK_TYPE_TEXT && player.isExo() ? View.VISIBLE : View.GONE);
binding.choose.setVisibility(type == C.TRACK_TYPE_TEXT && player.isExo() && vod ? View.VISIBLE : View.GONE);
binding.size.setVisibility(type == C.TRACK_TYPE_TEXT ? View.VISIBLE : View.GONE);
binding.title.setText(ResUtil.getStringArray(R.array.select_track)[type - 1]);
}

@ -805,7 +805,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void onTrack(View view) {
TrackDialog.create().player(mPlayers).type(Integer.parseInt(view.getTag().toString())).show(this);
TrackDialog.create().player(mPlayers).vod(true).type(Integer.parseInt(view.getTag().toString())).show(this);
hideControl();
}

@ -47,7 +47,8 @@ public class InfoDialog {
}
public InfoDialog url(String url) {
this.url = url;
if (url.startsWith("data")) this.url = "data***";
else this.url = url;
return this;
}

Loading…
Cancel
Save