diff --git a/app/build.gradle b/app/build.gradle
index d7fead82a..852e739e4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -115,6 +115,7 @@ dependencies {
implementation 'com.github.bumptech.glide:annotations:4.16.0'
implementation 'com.github.bumptech.glide:okhttp3-integration:4.16.0'
implementation 'com.github.ctiao:DanmakuFlameMaster:0.9.25'
+ implementation 'com.github.hedzr:android-file-chooser:v1.2.0-final'
implementation 'com.github.jahirfiquitiva:TextDrawable:1.0.3'
implementation('com.github.TeamNewPipe:NewPipeExtractor:v0.23.1') { exclude group: 'org.jsoup', module: 'jsoup' }
implementation 'com.github.thegrizzlylabs:sardine-android:0.8'
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 6fc0552c2..8d3f09cc5 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
@@ -1012,7 +1012,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void onTrack(View view) {
- TrackDialog.create().player(mPlayers).type(Integer.parseInt(view.getTag().toString())).show(this);
+ TrackDialog.create().player(mPlayers).tv(true).type(Integer.parseInt(view.getTag().toString())).show(this);
hideControl();
}
diff --git a/app/src/leanback/res/drawable/selector_image.xml b/app/src/leanback/res/drawable/selector_image.xml
new file mode 100644
index 000000000..70e6aa323
--- /dev/null
+++ b/app/src/leanback/res/drawable/selector_image.xml
@@ -0,0 +1,21 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/leanback/res/layout/dialog_track.xml b/app/src/leanback/res/layout/dialog_track.xml
index 84ee882ff..f1b88e7bf 100644
--- a/app/src/leanback/res/layout/dialog_track.xml
+++ b/app/src/leanback/res/layout/dialog_track.xml
@@ -27,7 +27,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
- android:background="?attr/selectableItemBackgroundBorderless"
+ android:background="@drawable/selector_image"
android:src="@drawable/ic_action_choose"
android:visibility="gone"
tools:visibility="visible" />
@@ -36,7 +36,7 @@
android:id="@+id/size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="?attr/selectableItemBackgroundBorderless"
+ android:background="@drawable/selector_image"
android:src="@drawable/ic_action_size"
android:visibility="gone"
tools:visibility="visible" />
diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
index 1b37f0064..29760dc8f 100644
--- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
+++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
@@ -25,8 +25,11 @@ import com.fongmi.android.tv.ui.adapter.TrackAdapter;
import com.fongmi.android.tv.ui.custom.SpaceItemDecoration;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.ResUtil;
+import com.github.catvod.utils.Path;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import com.obsez.android.lib.filechooser.ChooserDialog;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -38,9 +41,11 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
private final TrackAdapter adapter;
private DialogTrackBinding binding;
private FragmentActivity activity;
+ private ChooserDialog cDialog;
private Listener listener;
private Players player;
private int type;
+ private boolean tv;
public static TrackDialog create() {
return new TrackDialog();
@@ -56,6 +61,11 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
return this;
}
+ public TrackDialog tv(boolean tv) {
+ this.tv = tv;
+ return this;
+ }
+
public TrackDialog player(Players player) {
this.player = player;
return this;
@@ -97,10 +107,25 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
}
private void showChooser(View view) {
- FileChooser.from(this).show(new String[]{MimeTypes.APPLICATION_SUBRIP, MimeTypes.TEXT_SSA, MimeTypes.TEXT_VTT, MimeTypes.APPLICATION_TTML, "text/*", "application/octet-stream"});
+ if (tv) showFileChooser(view);
+ else FileChooser.from(this).show(new String[]{MimeTypes.APPLICATION_SUBRIP, MimeTypes.TEXT_SSA, MimeTypes.TEXT_VTT, MimeTypes.APPLICATION_TTML, "text/*", "application/octet-stream"});
player.pause();
}
+ private void showFileChooser(View view) {
+ if (cDialog != null) cDialog.dismiss();
+ cDialog = new ChooserDialog(getActivity());
+ cDialog.withFilter(false, false, "srt", "ass", "scc", "stl", "ttml");
+ cDialog.withStartFile(Path.downloadPath());
+ cDialog.withChosenListener(this::onChoosePath);
+ cDialog.build().show();
+ }
+
+ private void onChoosePath(String path, File pathFile) {
+ player.setSub(Sub.from(pathFile.getAbsolutePath()));
+ if (cDialog != null) cDialog.dismiss();
+ }
+
private List