From 80adea9280482da9b046b40c9c337ef01379c70f Mon Sep 17 00:00:00 2001 From: jhengazuji Date: Sat, 15 Nov 2025 20:02:16 +0800 Subject: [PATCH] Clean code --- .../android/tv/api/loader/JsLoader.java | 2 +- .../android/tv/player/danmaku/DanPlayer.java | 55 ++++++++++++------- .../android/tv/player/danmaku/Loader.java | 14 +++-- .../android/tv/player/danmaku/Sync.java | 13 ++--- 4 files changed, 52 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java b/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java index bc13db93c..4bc955179 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java @@ -11,8 +11,8 @@ import java.util.concurrent.ConcurrentHashMap; public class JsLoader { private final ConcurrentHashMap spiders; + private final Loader loader; private String recent; - private Loader loader; public JsLoader() { spiders = new ConcurrentHashMap<>(); diff --git a/app/src/main/java/com/fongmi/android/tv/player/danmaku/DanPlayer.java b/app/src/main/java/com/fongmi/android/tv/player/danmaku/DanPlayer.java index 74cc12091..6a7cbf130 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/danmaku/DanPlayer.java +++ b/app/src/main/java/com/fongmi/android/tv/player/danmaku/DanPlayer.java @@ -8,6 +8,7 @@ import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.utils.ResUtil; import java.util.HashMap; +import java.util.Map; import master.flame.danmaku.controller.DrawHandler; import master.flame.danmaku.danmaku.model.BaseDanmaku; @@ -18,20 +19,31 @@ import master.flame.danmaku.ui.widget.DanmakuView; public class DanPlayer implements DrawHandler.Callback { - private static final String TAG = DanPlayer.class.getSimpleName(); private final DanmakuContext context; + private final Parser parser; + private final Loader loader; private DanmakuView view; private Players player; public DanPlayer() { + parser = new Parser(); + loader = new Loader(); context = DanmakuContext.create(); - HashMap maxLines = new HashMap<>(); - maxLines.put(BaseDanmaku.TYPE_FIX_TOP, 2); - maxLines.put(BaseDanmaku.TYPE_SCROLL_RL, 2); - maxLines.put(BaseDanmaku.TYPE_SCROLL_LR, 2); - maxLines.put(BaseDanmaku.TYPE_FIX_BOTTOM, 2); - context.setMaximumLines(maxLines).setScrollSpeedFactor(1.2f).setDanmakuTransparency(0.8f); - context.setDanmakuStyle(IDisplayer.DANMAKU_STYLE_STROKEN, 3).setDanmakuMargin(ResUtil.dp2px(8)).setScaleTextSize(0.8f); + initContext(); + } + + private void initContext() { + Map lines = new HashMap<>(); + lines.put(BaseDanmaku.TYPE_FIX_TOP, 2); + lines.put(BaseDanmaku.TYPE_SCROLL_RL, 2); + lines.put(BaseDanmaku.TYPE_SCROLL_LR, 2); + lines.put(BaseDanmaku.TYPE_FIX_BOTTOM, 2); + context.setScaleTextSize(0.8f); + context.setMaximumLines(lines); + context.setScrollSpeedFactor(1.2f); + context.setDanmakuTransparency(0.8f); + context.setDanmakuMargin(ResUtil.dp2px(8)); + context.setDanmakuStyle(IDisplayer.DANMAKU_STYLE_STROKEN, 3); } public void setView(DanmakuView view) { @@ -43,46 +55,51 @@ public class DanPlayer implements DrawHandler.Callback { context.setDanmakuSync(new Sync(this.player = player)); } - private boolean isDanmakuPrepared() { + private boolean isPrepared() { return view != null && view.isPrepared(); } public void seekTo(long time) { App.execute(() -> { - if (isDanmakuPrepared()) view.seekTo(time); - if (isDanmakuPrepared()) view.hide(); + if (!isPrepared()) return; + view.seekTo(time); + view.hide(); }); } public void play() { App.execute(() -> { - if (isDanmakuPrepared()) view.resume(); + if (!isPrepared()) return; + view.resume(); }); } public void pause() { App.execute(() -> { - if (isDanmakuPrepared()) view.pause(); + if (!isPrepared()) return; + view.pause(); }); } public void stop() { App.execute(() -> { - if (isDanmakuPrepared()) view.stop(); + if (!isPrepared()) return; + view.stop(); }); } public void release() { App.execute(() -> { - if (isDanmakuPrepared()) view.release(); + if (!isPrepared()) return; + view.release(); }); } public void setDanmaku(Danmaku item) { App.execute(() -> { - view.release(); - if (item.isEmpty()) return; - view.prepare(new Parser().load(new Loader(item).getDataSource()), context); + if (view != null) view.release(); + if (item.isEmpty() || view == null) return; + view.prepare(parser.load(loader.load(item).getDataSource()), context); }); } @@ -101,7 +118,7 @@ public class DanPlayer implements DrawHandler.Callback { boolean playing = player.isPlaying(); long position = player.getPosition(); App.execute(() -> { - if (!isDanmakuPrepared()) return; + if (!isPrepared()) return; if (playing) view.start(position); else view.pause(); view.show(); diff --git a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java index af9f8a89d..cc243070b 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java +++ b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java @@ -15,15 +15,19 @@ import okhttp3.OkHttpClient; public class Loader implements ILoader { - private OkHttpClient client; + private final OkHttpClient client; private AndroidFileSource dataSource; - public Loader(Danmaku item) { + public Loader() { + client = OkHttp.client(Constant.TIMEOUT_DANMAKU); + } + + public Loader load(Danmaku item) { try { - client = OkHttp.client(Constant.TIMEOUT_DANMAKU); load(item.getUrl()); - } catch (Exception e) { - e.printStackTrace(); + return this; + } catch (IllegalDataException e) { + return this; } } diff --git a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Sync.java b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Sync.java index 368792f94..5a20df8c9 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Sync.java +++ b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Sync.java @@ -7,24 +7,18 @@ import master.flame.danmaku.danmaku.model.AbsDanmakuSync; public class Sync extends AbsDanmakuSync { private final Players player; - private long time; public Sync(Players player) { this.player = player; - this.time = System.currentTimeMillis(); } @Override public long getUptimeMillis() { - return player == null ? 0 : player.getPosition(); + return player.getPosition(); } @Override public int getSyncState() { - if (player == null) return SYNC_STATE_HALT; - long current = System.currentTimeMillis(); - if (current - time < 1000) return SYNC_STATE_HALT; - time = current; return player.isPlaying() ? SYNC_STATE_PLAYING : SYNC_STATE_HALT; } @@ -32,4 +26,9 @@ public class Sync extends AbsDanmakuSync { public long getThresholdTimeMills() { return 1000L; } + + @Override + public boolean isSyncPlayingState() { + return true; + } }