diff --git a/app/src/main/java/com/fongmi/android/tv/player/PlayerHelper.java b/app/src/main/java/com/fongmi/android/tv/player/PlayerHelper.java index abe7de0c8..1133f5752 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/PlayerHelper.java +++ b/app/src/main/java/com/fongmi/android/tv/player/PlayerHelper.java @@ -40,7 +40,6 @@ public class PlayerHelper { exo.getSubtitleView().setStyle(getCaptionStyle()); exo.getSubtitleView().setApplyEmbeddedStyles(true); exo.getSubtitleView().setApplyEmbeddedFontSizes(false); - if (Setting.getSubtitlePosition() != 0) exo.getSubtitleView().setBottomPosition(Setting.getSubtitlePosition()); if (Setting.getSubtitleTextSize() != 0) exo.getSubtitleView().setFractionalTextSize(Setting.getSubtitleTextSize()); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java b/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java index d2f3f6bad..65b5ac0ab 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java +++ b/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java @@ -1,6 +1,5 @@ package com.fongmi.android.tv.player.engine; -import androidx.media3.common.MediaTitle; import androidx.media3.common.PlaybackException; import androidx.media3.common.Player; import androidx.media3.common.Tracks; @@ -85,21 +84,11 @@ public class ExoPlayerEngine implements PlayerEngine { return TrackUtil.count(getCurrentTracks(), type) > 0; } - @Override - public boolean haveTitle() { - return !player.getCurrentMediaTitles().isEmpty(); - } - @Override public Tracks getCurrentTracks() { return player.getCurrentTracks(); } - @Override - public List getCurrentMediaTitles() { - return player.getCurrentMediaTitles(); - } - @Override public String getErrorMessage(PlaybackException e) { return provider.get(e); diff --git a/app/src/main/java/com/fongmi/android/tv/player/engine/PlayerEngine.java b/app/src/main/java/com/fongmi/android/tv/player/engine/PlayerEngine.java index 8868adef2..aaab3a140 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/engine/PlayerEngine.java +++ b/app/src/main/java/com/fongmi/android/tv/player/engine/PlayerEngine.java @@ -1,13 +1,11 @@ package com.fongmi.android.tv.player.engine; -import androidx.media3.common.MediaTitle; import androidx.media3.common.PlaybackException; import androidx.media3.common.Player; import androidx.media3.common.Tracks; import com.fongmi.android.tv.bean.Track; -import java.util.Collections; import java.util.List; public interface PlayerEngine { @@ -39,14 +37,6 @@ public interface PlayerEngine { Tracks getCurrentTracks(); - default boolean haveTitle() { - return false; - } - - default List getCurrentMediaTitles() { - return Collections.emptyList(); - } - String getErrorMessage(PlaybackException e); ErrorAction handleError(PlaybackException e); diff --git a/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java index 9472137b6..e68daa457 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java @@ -54,16 +54,13 @@ public class ExoUtil { builder.setDrmConfiguration(buildDrmConfig(spec.getDrm())); builder.setRequestMetadata(buildRequestMetadata(spec)); builder.setMediaMetadata(spec.getMetadata()); - builder.setAdblock(Setting.isAdblock()); builder.setMimeType(spec.getFormat()); builder.setImageDurationMs(15000); builder.setMediaId(spec.getKey()); - builder.setDecode(decode); return builder.build(); } public static String getMimeType(int errorCode) { - if (errorCode == PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED || errorCode == PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED) return MimeTypes.APPLICATION_OCTET_STREAM; if (errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED || errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED || errorCode == PlaybackException.ERROR_CODE_IO_UNSPECIFIED) return MimeTypes.APPLICATION_M3U8; return null; } @@ -89,7 +86,7 @@ public class ExoUtil { return trackSelector; } - public static RenderersFactory buildRenderersFactory(int renderMode) { + private static RenderersFactory buildRenderersFactory(int renderMode) { return new DefaultRenderersFactory(App.get()).setEnableDecoderFallback(true).setExtensionRendererMode(renderMode); } @@ -101,54 +98,6 @@ public class ExoUtil { return new MediaItem.RequestMetadata.Builder().setMediaUri(spec.getUri()).setExtras(PlayerHelper.toBundle(spec.getHeaders())).build(); } - public static void setSubtitleView(PlayerView exo) { - exo.getSubtitleView().setStyle(getCaptionStyle()); - exo.getSubtitleView().setApplyEmbeddedStyles(true); - exo.getSubtitleView().setApplyEmbeddedFontSizes(false); - if (Setting.getSubtitleTextSize() != 0) exo.getSubtitleView().setFractionalTextSize(Setting.getSubtitleTextSize()); - } - - public static String getMimeType(String path) { - if (TextUtils.isEmpty(path)) return ""; - if (path.endsWith(".vtt")) return MimeTypes.TEXT_VTT; - if (path.endsWith(".ssa") || path.endsWith(".ass")) return MimeTypes.TEXT_SSA; - if (path.endsWith(".ttml") || path.endsWith(".xml") || path.endsWith(".dfxp")) return MimeTypes.APPLICATION_TTML; - return MimeTypes.APPLICATION_SUBRIP; - } - - public static String getMimeType(int errorCode) { - if (errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED || errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED || errorCode == PlaybackException.ERROR_CODE_IO_UNSPECIFIED) return MimeTypes.APPLICATION_M3U8; - return null; - } - - public static MediaItem getMediaItem(String key, Map headers, Uri uri, String mimeType, Drm drm, List subs, int decode) { - MediaItem.Builder builder = new MediaItem.Builder().setUri(uri); - builder.setRequestMetadata(getRequestMetadata(headers, uri)); - builder.setSubtitleConfigurations(getSubtitleConfigs(subs)); - if (drm != null) builder.setDrmConfiguration(drm.get()); - builder.setMediaId(key == null ? uri.toString() : key); - if (mimeType != null) builder.setMimeType(mimeType); - builder.setMediaId(uri.toString()); - builder.setImageDurationMs(15000); - return builder.build(); - } - - public static Bundle toBundle(Map headers) { - Bundle bundle = new Bundle(); - headers.forEach(bundle::putString); - return bundle; - } - - public static Map extractHeaders(MediaItem item) { - Bundle extras = item.requestMetadata.extras; - if (extras == null) return new HashMap<>(); - return extras.keySet().stream().filter(key -> extras.getString(key) != null).collect(Collectors.toMap(key -> key, extras::getString)); - } - - public static MediaItem.RequestMetadata getRequestMetadata(Map headers, Uri uri) { - return new MediaItem.RequestMetadata.Builder().setMediaUri(uri).setExtras(toBundle(headers)).build(); - } - private static List buildSubtitleConfigs(List subs) { List configs = new ArrayList<>(); if (subs != null) for (Sub sub : subs) configs.add(buildSubConfig(sub)); @@ -162,4 +111,4 @@ public class ExoUtil { private static MediaItem.DrmConfiguration buildDrmConfig(Drm drm) { return drm == null ? null : new MediaItem.DrmConfiguration.Builder(drm.getUUID()).setMultiSession(!C.CLEARKEY_UUID.equals(drm.getUUID())).setForceDefaultLicenseUri(drm.isForceKey()).setLicenseRequestHeaders(drm.getHeader()).setLicenseUri(drm.getKey()).build(); } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/ui/base/PlaybackActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/base/PlaybackActivity.java index 55d2aaac6..846501842 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/base/PlaybackActivity.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/base/PlaybackActivity.java @@ -167,7 +167,6 @@ public abstract class PlaybackActivity extends BaseActivity implements MediaCont } private void initPlayerViews() { - getExoView().setRender(Setting.getRender()); PlayerHelper.setSubtitleView(getExoView()); getSeekView().setPlayer(mController); } @@ -229,40 +228,6 @@ public abstract class PlaybackActivity extends BaseActivity implements MediaCont mService = null; } - private void buildControllerAsync() { - SessionToken token = new SessionToken(this, new ComponentName(this, PlaybackService.class)); - mControllerFuture = new MediaController.Builder(this, token).setListener(this).buildAsync(); - mControllerFuture.addListener(this::onControllerConnected, ContextCompat.getMainExecutor(this)); - } - - private void onControllerConnected() { - try { - mController = mControllerFuture.get(); - if (mController == null) return; - mController.addListener(this); - initPlayerViews(); - } catch (Exception ignored) { - } - } - - private void initPlayerViews() { - ExoUtil.setSubtitleView(getExoView()); - getSeekView().setPlayer(mController); - } - - private PendingIntent buildSessionIntent() { - Intent intent = new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - Bundle extras = getIntent().getExtras(); - if (extras != null) intent.putExtras(extras); - return PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); - } - - private void closePiP() { - if (!isInPictureInPictureMode()) return; - detach(); - finish(); - } - private final PlaybackService.PlayerCallback mPlayerCallback = new PlaybackService.PlayerCallback() { @Override @@ -359,4 +324,4 @@ public abstract class PlaybackActivity extends BaseActivity implements MediaCont super.onDestroy(); releasePlaybackService(); } -} +} \ No newline at end of file