fongmi
jhengazuki 1 month ago
parent 179f693de8
commit f2a3997f5b
  1. 18
      app/src/main/java/com/fongmi/android/tv/player/danmaku/DanPlayer.java

@ -9,8 +9,6 @@ import com.fongmi.android.tv.utils.ResUtil;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import java.util.HashMap; import java.util.HashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import master.flame.danmaku.controller.DrawHandler; import master.flame.danmaku.controller.DrawHandler;
import master.flame.danmaku.danmaku.model.BaseDanmaku; import master.flame.danmaku.danmaku.model.BaseDanmaku;
@ -22,14 +20,12 @@ import master.flame.danmaku.ui.widget.DanmakuView;
public class DanPlayer implements DrawHandler.Callback { public class DanPlayer implements DrawHandler.Callback {
private static final String TAG = DanPlayer.class.getSimpleName(); private static final String TAG = DanPlayer.class.getSimpleName();
private final ExecutorService executor;
private final DanmakuContext context; private final DanmakuContext context;
private DanmakuView view; private DanmakuView view;
private Players player; private Players player;
public DanPlayer() { public DanPlayer() {
context = DanmakuContext.create(); context = DanmakuContext.create();
executor = Executors.newCachedThreadPool();
HashMap<Integer, Integer> maxLines = new HashMap<>(); HashMap<Integer, Integer> maxLines = new HashMap<>();
maxLines.put(BaseDanmaku.TYPE_FIX_TOP, 2); maxLines.put(BaseDanmaku.TYPE_FIX_TOP, 2);
maxLines.put(BaseDanmaku.TYPE_SCROLL_RL, 2); maxLines.put(BaseDanmaku.TYPE_SCROLL_RL, 2);
@ -53,38 +49,38 @@ public class DanPlayer implements DrawHandler.Callback {
} }
public void seekTo(long time) { public void seekTo(long time) {
executor.execute(() -> { App.execute(() -> {
if (isDanmakuPrepared()) view.seekTo(time); if (isDanmakuPrepared()) view.seekTo(time);
if (isDanmakuPrepared()) view.hide(); if (isDanmakuPrepared()) view.hide();
}); });
} }
public void play() { public void play() {
executor.execute(() -> { App.execute(() -> {
if (isDanmakuPrepared()) view.resume(); if (isDanmakuPrepared()) view.resume();
}); });
} }
public void pause() { public void pause() {
executor.execute(() -> { App.execute(() -> {
if (isDanmakuPrepared()) view.pause(); if (isDanmakuPrepared()) view.pause();
}); });
} }
public void stop() { public void stop() {
executor.execute(() -> { App.execute(() -> {
if (isDanmakuPrepared()) view.stop(); if (isDanmakuPrepared()) view.stop();
}); });
} }
public void release() { public void release() {
executor.execute(() -> { App.execute(() -> {
if (isDanmakuPrepared()) view.release(); if (isDanmakuPrepared()) view.release();
}); });
} }
public void setDanmaku(Danmaku item) { public void setDanmaku(Danmaku item) {
executor.execute(() -> { App.execute(() -> {
view.release(); view.release();
if (item.isEmpty()) return; if (item.isEmpty()) return;
Logger.t(TAG).d(item.getUrl()); Logger.t(TAG).d(item.getUrl());
@ -106,7 +102,7 @@ public class DanPlayer implements DrawHandler.Callback {
App.post(() -> { App.post(() -> {
boolean playing = player.isPlaying(); boolean playing = player.isPlaying();
long position = player.getPosition(); long position = player.getPosition();
executor.execute(() -> { App.execute(() -> {
if (!isDanmakuPrepared()) return; if (!isDanmakuPrepared()) return;
if (playing) view.start(position); if (playing) view.start(position);
else view.pause(); else view.pause();

Loading…
Cancel
Save