pull/589/head
FongMi 10 months ago
parent 0bd54e833e
commit 676b6091b3
  1. 11
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 24
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  3. 11
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -552,9 +552,14 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void checkDanmaku(List<Danmaku> items) {
mBinding.danmaku.release();
mBinding.danmaku.setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE);
if (!items.isEmpty()) App.execute(() -> mBinding.danmaku.prepare(new Parser(items.get(0).getUrl()), mDanmakuContext));
if (items.isEmpty()) mBinding.danmaku.release();
else checkDanmaku(items.get(0).getUrl());
}
private void checkDanmaku(String path) {
mBinding.danmaku.release();
if (!TextUtils.isEmpty(path)) App.execute(() -> mBinding.danmaku.prepare(new Parser(path), mDanmakuContext));
}
private void setFlagActivated(Flag item) {
@ -1076,7 +1081,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
if (isRedirect()) return;
if (event.getType() == RefreshEvent.Type.DETAIL) getDetail();
else if (event.getType() == RefreshEvent.Type.PLAYER) onRefresh();
else if (event.getType() == RefreshEvent.Type.DANMAKU) checkDanmaku(Danmaku.from(event.getPath()));
else if (event.getType() == RefreshEvent.Type.DANMAKU) checkDanmaku(event.getPath());
else if (event.getType() == RefreshEvent.Type.SUBTITLE) mPlayers.setSub(Sub.from(event.getPath()));
}

@ -83,7 +83,7 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
private Map<String, String> headers;
private MediaSessionCompat session;
private DanmakuView danmakuView;
private DanmakuView danmaku;
private ExoPlayer exoPlayer;
private ParseJob parseJob;
private PlayerView view;
@ -141,7 +141,7 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
public void setDanmakuView(DanmakuView view) {
view.setCallback(this);
danmakuView = view;
danmaku = view;
}
public ExoPlayer get() {
@ -220,7 +220,7 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
}
public boolean haveDanmaku() {
return danmakuView != null && danmakuView.isPrepared();
return danmaku != null && danmaku.isPrepared();
}
public boolean isPlaying() {
@ -327,8 +327,8 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
public void seekTo(long time) {
if (exoPlayer != null) exoPlayer.seekTo(time);
if (haveDanmaku()) danmakuView.seekTo(time);
if (haveDanmaku()) danmakuView.hide();
if (haveDanmaku()) danmaku.seekTo(time);
if (haveDanmaku()) danmaku.hide();
}
public void seekToDefaultPosition() {
@ -342,17 +342,17 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
public void play() {
if (exoPlayer != null) exoPlayer.play();
if (haveDanmaku()) danmakuView.resume();
if (haveDanmaku()) danmaku.resume();
}
public void pause() {
if (exoPlayer != null) exoPlayer.pause();
if (haveDanmaku()) danmakuView.pause();
if (haveDanmaku()) danmaku.pause();
}
public void stop() {
if (exoPlayer != null) exoPlayer.stop();
if (haveDanmaku()) danmakuView.stop();
if (haveDanmaku()) danmaku.stop();
stopParse();
}
@ -633,10 +633,10 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
@Override
public void prepared() {
App.post(() -> {
if (isPlaying()) danmakuView.start(getPosition());
else danmakuView.pause();
if (Setting.isDanmakuShow()) danmakuView.show();
else danmakuView.hide();
if (isPlaying()) danmaku.start(getPosition());
else danmaku.pause();
if (Setting.isDanmakuShow()) danmaku.show();
else danmaku.hide();
});
}

@ -558,9 +558,14 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void checkDanmaku(List<Danmaku> items) {
mBinding.danmaku.release();
mBinding.danmaku.setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE);
if (!items.isEmpty()) App.execute(() -> mBinding.danmaku.prepare(new Parser(items.get(0).getUrl()), mDanmakuContext));
if (items.isEmpty()) mBinding.danmaku.release();
else checkDanmaku(items.get(0).getUrl());
}
private void checkDanmaku(String path) {
mBinding.danmaku.release();
if (!TextUtils.isEmpty(path)) App.execute(() -> mBinding.danmaku.prepare(new Parser(path), mDanmakuContext));
}
@Override
@ -1120,7 +1125,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
if (isRedirect()) return;
if (event.getType() == RefreshEvent.Type.DETAIL) getDetail();
else if (event.getType() == RefreshEvent.Type.PLAYER) onRefresh();
else if (event.getType() == RefreshEvent.Type.DANMAKU) checkDanmaku(Danmaku.from(event.getPath()));
else if (event.getType() == RefreshEvent.Type.DANMAKU) checkDanmaku(event.getPath());
else if (event.getType() == RefreshEvent.Type.SUBTITLE) mPlayers.setSub(Sub.from(event.getPath()));
}

Loading…
Cancel
Save