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 getTrack() { List items = new ArrayList<>(); if (player.isExo()) addExoTrack(items); diff --git a/catvod/src/main/java/com/github/catvod/utils/Path.java b/catvod/src/main/java/com/github/catvod/utils/Path.java index 8435e9d0d..228098f2d 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Path.java +++ b/catvod/src/main/java/com/github/catvod/utils/Path.java @@ -32,6 +32,10 @@ public class Path { return Environment.getExternalStorageDirectory(); } + public static File download() { + return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); + } + public static File cache() { return Init.context().getCacheDir(); } @@ -44,6 +48,10 @@ public class Path { return root().getAbsolutePath(); } + public static String downloadPath() { + return download().getAbsolutePath(); + } + public static File tv() { return mkdir(new File(root() + File.separator + "TV")); }