diff --git a/app/build.gradle b/app/build.gradle
index 03d266125..17e6c2a63 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -112,6 +112,7 @@ dependencies {
implementation 'androidx.media:media:1.7.0'
implementation 'androidx.room:room-runtime:2.6.1'
implementation 'cat.ereza:customactivityoncrash:2.4.0'
+ implementation ('com.github.anilbeesetti.nextlib:nextlib-media3ext:0.7.1') { exclude group: 'androidx.media3', module: 'media3-exoplayer' }
implementation 'com.github.bassaer:materialdesigncolors:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'com.github.bumptech.glide:annotations:4.16.0'
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
index 8e6a7bb6a..6b13fc818 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
@@ -15,7 +15,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
import androidx.media3.common.Player;
-import androidx.media3.ui.PlayerView;
import androidx.viewbinding.ViewBinding;
import com.android.cast.dlna.dmr.CastAction;
@@ -66,10 +65,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
private long duration;
private int scale;
- private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
- }
-
@Override
protected ViewBinding getBinding() {
return mBinding = ActivityCastBinding.inflate(getLayoutInflater());
@@ -138,20 +133,20 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
}
private void setVideoView() {
- mPlayers.set(getExo());
+ mPlayers.set(mBinding.exo);
setSubtitle(Setting.getSubtitle());
- getExo().setVisibility(View.VISIBLE);
+ mBinding.exo.setVisibility(View.VISIBLE);
setScale(scale = Setting.getScale());
findViewById(R.id.timeBar).setNextFocusUpId(R.id.reset);
mBinding.control.speed.setText(mPlayers.getSpeedText());
mBinding.control.speed.setEnabled(mPlayers.canAdjustSpeed());
- getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
+ mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
mBinding.control.reset.setText(ResUtil.getStringArray(R.array.select_reset)[0]);
}
@Override
public void setSubtitle(int size) {
- getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
private void setDecode() {
@@ -159,7 +154,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
}
private void setScale(int scale) {
- getExo().setResizeMode(scale);
+ mBinding.exo.setResizeMode(scale);
mBinding.control.scale.setText(ResUtil.getStringArray(R.array.select_scale)[scale]);
}
@@ -196,7 +191,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
private void onDecode() {
mPlayers.toggleDecode();
- mPlayers.set(getExo());
+ mPlayers.set(mBinding.exo);
setDecode();
onReset();
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
index 0e33468ad..4d330d9e4 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
@@ -17,7 +17,6 @@ import androidx.leanback.widget.OnChildViewHolderSelectedListener;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.C;
import androidx.media3.common.Player;
-import androidx.media3.ui.PlayerView;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewbinding.ViewBinding;
@@ -99,10 +98,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
return getIntent().getBooleanExtra("empty", true);
}
- private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
- }
-
private Group getKeep() {
return (Group) mGroupAdapter.get(0);
}
@@ -182,10 +177,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
private void setVideoView() {
- mPlayers.set(getExo());
+ mPlayers.set(mBinding.exo);
setScale(Setting.getLiveScale());
setSubtitle(Setting.getSubtitle());
- getExo().setVisibility(View.VISIBLE);
+ mBinding.exo.setVisibility(View.VISIBLE);
findViewById(R.id.timeBar).setNextFocusUpId(R.id.player);
mBinding.control.invert.setActivated(Setting.isInvert());
mBinding.control.across.setActivated(Setting.isAcross());
@@ -193,13 +188,13 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.control.speed.setText(mPlayers.getSpeedText());
mBinding.control.decode.setText(mPlayers.getDecodeText());
mBinding.control.speed.setEnabled(mPlayers.canAdjustSpeed());
- getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
+ mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
mBinding.control.home.setVisibility(LiveConfig.isOnly() ? View.GONE : View.VISIBLE);
}
@Override
public void setSubtitle(int size) {
- getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
private void setDecode() {
@@ -207,7 +202,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
private void setScale(int scale) {
- getExo().setResizeMode(scale);
+ mBinding.exo.setResizeMode(scale);
mBinding.control.scale.setText(ResUtil.getStringArray(R.array.select_scale)[scale]);
}
@@ -385,7 +380,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void onDecode() {
mPlayers.toggleDecode();
- mPlayers.set(getExo());
+ mPlayers.set(mBinding.exo);
setDecode();
fetch();
}
@@ -503,13 +498,13 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
ImgUtil.load(url, R.drawable.radio, new CustomTarget<>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition super Drawable> transition) {
- getExo().setDefaultArtwork(resource);
+ mBinding.exo.setDefaultArtwork(resource);
setMetadata();
}
@Override
public void onLoadFailed(@Nullable Drawable error) {
- getExo().setDefaultArtwork(error);
+ mBinding.exo.setDefaultArtwork(error);
setMetadata();
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
index 8f297775a..93bc8e1a6 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
@@ -28,7 +28,6 @@ import androidx.leanback.widget.OnChildViewHolderSelectedListener;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.C;
import androidx.media3.common.Player;
-import androidx.media3.ui.PlayerView;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewbinding.ViewBinding;
@@ -261,10 +260,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
return mHistory != null && mHistory.getScale() != -1 ? mHistory.getScale() : Setting.getScale();
}
- private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
- }
-
private boolean isReplay() {
return Setting.getReset() == 1;
}
@@ -378,18 +373,18 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void setVideoView() {
- mPlayers.set(getExo());
- getExo().setVisibility(View.VISIBLE);
+ mPlayers.set(mBinding.exo);
+ mBinding.exo.setVisibility(View.VISIBLE);
mBinding.control.decode.setText(mPlayers.getDecodeText());
mBinding.control.speed.setEnabled(mPlayers.canAdjustSpeed());
- getExo().getSubtitleView().setFixedTextSize(Dimension.SP, 16);
- getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
+ mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, 16);
+ mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
mBinding.control.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]);
}
@Override
public void setSubtitle(int size) {
- getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
private void setDecode() {
@@ -397,7 +392,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void setScale(int scale) {
- getExo().setResizeMode(scale);
+ mBinding.exo.setResizeMode(scale);
mBinding.control.scale.setText(ResUtil.getStringArray(R.array.select_scale)[scale]);
}
@@ -842,7 +837,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void onDecode() {
mPlayers.toggleDecode();
- mPlayers.set(getExo());
+ mPlayers.set(mBinding.exo);
setDecode();
onRefresh();
}
@@ -938,13 +933,13 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
ImgUtil.load(url, R.drawable.radio, new CustomTarget<>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition super Drawable> transition) {
- getExo().setDefaultArtwork(resource);
+ mBinding.exo.setDefaultArtwork(resource);
setMetadata();
}
@Override
public void onLoadFailed(@Nullable Drawable error) {
- getExo().setDefaultArtwork(error);
+ mBinding.exo.setDefaultArtwork(error);
hideProgress();
setMetadata();
}
diff --git a/app/src/leanback/res/layout/activity_cast.xml b/app/src/leanback/res/layout/activity_cast.xml
index c14f049f5..fc81e4a6b 100644
--- a/app/src/leanback/res/layout/activity_cast.xml
+++ b/app/src/leanback/res/layout/activity_cast.xml
@@ -8,20 +8,11 @@
android:keepScreenOn="true">
-
-
+ app:surface_type="none" />
-
-
+ app:surface_type="none" />
diff --git a/app/src/leanback/res/layout/activity_video.xml b/app/src/leanback/res/layout/activity_video.xml
index ef5b93241..2948e9e58 100644
--- a/app/src/leanback/res/layout/activity_video.xml
+++ b/app/src/leanback/res/layout/activity_video.xml
@@ -22,20 +22,11 @@
android:nextFocusDown="@id/flag">
-
-
+ app:surface_type="none" />
() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition super Drawable> transition) {
- getExo().setDefaultArtwork(resource);
+ mBinding.exo.setDefaultArtwork(resource);
setMetadata();
}
@Override
public void onLoadFailed(@Nullable Drawable error) {
- getExo().setDefaultArtwork(error);
+ mBinding.exo.setDefaultArtwork(error);
setMetadata();
}
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
index 51840d2ce..ccce922a5 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
@@ -34,7 +34,6 @@ import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.C;
import androidx.media3.common.Player;
-import androidx.media3.ui.PlayerView;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewbinding.ViewBinding;
@@ -233,10 +232,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
return mHistory != null && mHistory.getScale() != -1 ? mHistory.getScale() : Setting.getScale();
}
- private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
- }
-
private boolean isReplay() {
return Setting.getReset() == 1;
}
@@ -371,10 +366,10 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void setVideoView() {
- mPlayers.set(getExo());
- getExo().setVisibility(View.VISIBLE);
- getExo().getSubtitleView().setFixedTextSize(Dimension.SP, 14);
- getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
+ mPlayers.set(mBinding.exo);
+ mBinding.exo.setVisibility(View.VISIBLE);
+ mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, 14);
+ mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
mBinding.control.action.decode.setText(mPlayers.getDecodeText());
mBinding.control.action.speed.setEnabled(mPlayers.canAdjustSpeed());
mBinding.control.action.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]);
@@ -385,7 +380,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
@Override
public void setSubtitle(int size) {
- getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
private void setDecode() {
@@ -393,7 +388,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void setScale(int scale) {
- getExo().setResizeMode(scale);
+ mBinding.exo.setResizeMode(scale);
mBinding.control.action.scale.setText(ResUtil.getStringArray(R.array.select_scale)[scale]);
}
@@ -766,7 +761,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private void onDecode() {
mPlayers.toggleDecode();
- mPlayers.set(getExo());
+ mPlayers.set(mBinding.exo);
setR1Callback();
setDecode();
onRefresh();
@@ -941,13 +936,13 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
ImgUtil.load(url, R.drawable.radio, new CustomTarget<>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition super Drawable> transition) {
- getExo().setDefaultArtwork(resource);
+ mBinding.exo.setDefaultArtwork(resource);
setMetadata();
}
@Override
public void onLoadFailed(@Nullable Drawable error) {
- getExo().setDefaultArtwork(error);
+ mBinding.exo.setDefaultArtwork(error);
hideProgress();
setMetadata();
}
diff --git a/app/src/mobile/res/layout-sw600dp/activity_video.xml b/app/src/mobile/res/layout-sw600dp/activity_video.xml
index 2a6b65e9c..9d6afbb79 100644
--- a/app/src/mobile/res/layout-sw600dp/activity_video.xml
+++ b/app/src/mobile/res/layout-sw600dp/activity_video.xml
@@ -22,20 +22,11 @@
android:focusable="true">
-
-
+ app:surface_type="none" />
-
-
+ app:surface_type="none" />
diff --git a/app/src/mobile/res/layout/activity_video.xml b/app/src/mobile/res/layout/activity_video.xml
index 33b164671..ce87d0d0c 100644
--- a/app/src/mobile/res/layout/activity_video.xml
+++ b/app/src/mobile/res/layout/activity_video.xml
@@ -15,20 +15,11 @@
android:focusable="true">
-
-
+ app:surface_type="none" />