fongmi
FongMi 2 weeks ago
parent d7057b8a95
commit e26ccfb128
  1. 8
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  2. 17
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  3. 20
      app/src/main/java/com/fongmi/android/tv/player/Source.java
  4. 8
      app/src/main/java/com/fongmi/android/tv/player/exo/CacheManager.java
  5. 2
      app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java
  6. 6
      app/src/main/java/com/fongmi/android/tv/player/exo/TrackUtil.java
  7. 8
      app/src/main/java/com/fongmi/android/tv/player/extractor/Thunder.java

@ -42,10 +42,6 @@ public class ParseJob implements ParseCallback {
private ParseCallback callback;
private Parse parse;
public static ParseJob create(ParseCallback callback) {
return new ParseJob(callback);
}
public ParseJob(ParseCallback callback) {
this.executor = Executors.newSingleThreadExecutor();
this.infinite = Executors.newCachedThreadPool();
@ -53,6 +49,10 @@ public class ParseJob implements ParseCallback {
this.callback = callback;
}
public static ParseJob create(ParseCallback callback) {
return new ParseJob(callback);
}
public ParseJob start(Result result, boolean useParse) {
setParse(result, useParse);
execute(result);

@ -81,9 +81,8 @@ import master.flame.danmaku.ui.widget.DanmakuView;
public class Players implements Player.Listener, ParseCallback {
private static final String TAG = Players.class.getSimpleName();
public static final int SOFT = 0;
public static final int HARD = 1;
private static final int SOFT = 0;
private static final int HARD = 1;
private final ErrorMsgProvider provider;
private final AudioManager audioManager;
@ -111,12 +110,6 @@ public class Players implements Player.Listener, ParseCallback {
private int decode;
private int retry;
public static Players create(Activity activity) {
Players player = new Players(activity);
Server.get().setPlayer(player);
return player;
}
private Players(Activity activity) {
decode = HARD;
builder = new StringBuilder();
@ -127,6 +120,12 @@ public class Players implements Player.Listener, ParseCallback {
createSession(activity);
}
public static Players create(Activity activity) {
Players player = new Players(activity);
Server.get().setPlayer(player);
return player;
}
private void createSession(Activity activity) {
session = new MediaSessionCompat(activity, "TV");
session.setCallback(SessionCallback.create(this));

@ -3,7 +3,6 @@ package com.fongmi.android.tv.player;
import android.net.Uri;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.utils.Task;
import com.fongmi.android.tv.bean.Flag;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.bean.Vod;
@ -15,12 +14,13 @@ import com.fongmi.android.tv.player.extractor.TVBus;
import com.fongmi.android.tv.player.extractor.Thunder;
import com.fongmi.android.tv.player.extractor.Video;
import com.fongmi.android.tv.player.extractor.Youtube;
import com.fongmi.android.tv.utils.Task;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CancellationException;
import java.util.concurrent.Callable;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@ -30,14 +30,6 @@ public class Source {
private final List<Extractor> extractors;
private static class Loader {
static volatile Source INSTANCE = new Source();
}
public static Source get() {
return Loader.INSTANCE;
}
public Source() {
extractors = new ArrayList<>();
extractors.add(new Force());
@ -50,6 +42,10 @@ public class Source {
extractors.add(new Youtube());
}
public static Source get() {
return Loader.INSTANCE;
}
private Extractor getExtractor(Uri uri) {
return extractors.stream().filter(extractor -> extractor.match(uri)).findFirst().orElse(null);
}
@ -110,4 +106,8 @@ public class Source {
void exit();
}
private static class Loader {
static volatile Source INSTANCE = new Source();
}
}

@ -12,10 +12,6 @@ public class CacheManager {
private SimpleCache cache;
private static class Loader {
static volatile CacheManager INSTANCE = new CacheManager();
}
public static CacheManager get() {
return Loader.INSTANCE;
}
@ -34,5 +30,9 @@ public class CacheManager {
cache.release();
cache = null;
}
private static class Loader {
static volatile CacheManager INSTANCE = new CacheManager();
}
}

@ -108,7 +108,7 @@ public class ExoUtil {
return new MediaItem.RequestMetadata.Builder().setMediaUri(uri).setExtras(extras).build();
}
private static List<MediaItem.SubtitleConfiguration> getSubtitleConfigs (List<Sub> subs) {
private static List<MediaItem.SubtitleConfiguration> getSubtitleConfigs(List<Sub> subs) {
List<MediaItem.SubtitleConfiguration> configs = new ArrayList<>();
if (subs != null) for (Sub sub : subs) configs.add(sub.config());
return configs;

@ -15,9 +15,6 @@ import java.util.Map;
public class TrackUtil {
private record TrackInfo(Tracks.Group trackGroup, int trackIndex) {
}
public static int count(Tracks tracks, int type) {
return tracks.getGroups().stream().filter(trackGroup -> trackGroup.getType() == type).mapToInt(trackGroup -> trackGroup.length).sum();
}
@ -58,4 +55,7 @@ public class TrackUtil {
});
player.setTrackSelectionParameters(builder.build());
}
private record TrackInfo(Tracks.Group trackGroup, int trackIndex) {
}
}

@ -83,6 +83,10 @@ public class Thunder implements Source.Extractor {
return new Parser(url);
}
private static boolean isTorrent(String url) {
return !url.startsWith("magnet") && url.split(";")[0].toLowerCase().endsWith(".torrent");
}
private Episode create(GetTaskId taskId) {
return Episode.create(taskId.getFileName(), taskId.getRealUrl());
}
@ -91,10 +95,6 @@ public class Thunder implements Source.Extractor {
return Episode.create(info.getFileName(), info.getSize(), info.getPlayUrl());
}
private static boolean isTorrent(String url) {
return !url.startsWith("magnet") && url.split(";")[0].toLowerCase().endsWith(".torrent");
}
@Override
public List<Episode> call() {
boolean torrent = isTorrent(url);

Loading…
Cancel
Save