leanback subtitle file chooser

pull/307/head
okjack 2 years ago
parent f9a8098670
commit 9e4eaf23db
  1. 1
      app/build.gradle
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 21
      app/src/leanback/res/drawable/selector_image.xml
  4. 4
      app/src/leanback/res/layout/dialog_track.xml
  5. 27
      app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
  6. 8
      catvod/src/main/java/com/github/catvod/utils/Path.java

@ -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'

@ -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();
}

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<shape android:shape="oval">
<solid android:color="@color/blue_500"/>
<corners android:radius="10dp"/>
</shape>
</item>
<item android:state_activated="true">
<shape android:shape="oval">
<solid android:color="@color/grey_600"/>
<corners android:radius="10dp"/>
</shape>
</item>
<item >
<shape android:shape="oval">
<solid android:color="@color/grey_600"/>
<corners android:radius="10dp"/>
</shape>
</item>
</selector>

@ -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" />

@ -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<Track> getTrack() {
List<Track> items = new ArrayList<>();
if (player.isExo()) addExoTrack(items);

@ -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"));
}

Loading…
Cancel
Save