diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 64b9bf902..10f9d33df 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1248,8 +1248,9 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private boolean mismatch(Vod item) { - String keyword = mBinding.part.getTag().toString(); + if (getId().equals(item.getVodId())) return true; if (mBroken.contains(item.getVodId())) return true; + String keyword = mBinding.part.getTag().toString(); if (isAutoMode()) return !item.getVodName().equals(keyword); else return !item.getVodName().contains(keyword); } diff --git a/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java b/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java index 593b4ced4..eed8d1ca4 100644 --- a/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java +++ b/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java @@ -7,7 +7,6 @@ import org.greenrobot.eventbus.EventBus; public class PlayerEvent { private final int state; - private final String url; public static void ready() { EventBus.getDefault().post(new PlayerEvent(Player.STATE_READY)); @@ -17,25 +16,11 @@ public class PlayerEvent { EventBus.getDefault().post(new PlayerEvent(state)); } - public static void url(String url) { - EventBus.getDefault().post(new PlayerEvent(url)); - } - private PlayerEvent(int state) { this.state = state; - this.url = ""; - } - - public PlayerEvent(String url) { - this.state = 0; - this.url = url; } public int getState() { return state; } - - public String getUrl() { - return url; - } } diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index ee4e56cde..e70858c39 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -57,6 +57,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic public static final int SOFT = 0; public static final int HARD = 1; + private Map headers; private MediaSessionCompat session; private IjkVideoView ijkPlayer; private DanmakuView danmuView; @@ -65,6 +66,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic private ExoPlayer exoPlayer; private ParseJob parseJob; private Runnable runnable; + private String url; private int errorCode; private int timeout; private int retry; @@ -140,6 +142,19 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic return ijkPlayer; } + public Map getHeaders() { + return headers; + } + + public String getUrl() { + return url; + } + + public void clean() { + this.headers = null; + this.url = null; + } + public MediaSessionCompat getSession() { return session; } @@ -432,7 +447,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic if (isIjk() && ijkPlayer != null) ijkPlayer.setMediaSource(IjkUtil.getSource(result)); if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(result, errorCode)); if (isExo() && exoPlayer != null) exoPlayer.prepare(); - setTimeoutCheck(result.getRealUrl()); + setTimeoutCheck(result.getHeaders(), result.getRealUrl()); } private void setMediaSource(Channel channel) { @@ -440,7 +455,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic if (isIjk() && ijkPlayer != null) ijkPlayer.setMediaSource(IjkUtil.getSource(channel)); if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(channel, errorCode)); if (isExo() && exoPlayer != null) exoPlayer.prepare(); - setTimeoutCheck(channel.getUrl()); + setTimeoutCheck(channel.getHeaders(), channel.getUrl()); } private void setMediaSource(Map headers, String url) { @@ -448,12 +463,14 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic if (isIjk() && ijkPlayer != null) ijkPlayer.setMediaSource(IjkUtil.getSource(headers, url)); if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(headers, url, errorCode)); if (isExo() && exoPlayer != null) exoPlayer.prepare(); - setTimeoutCheck(url); + setTimeoutCheck(headers, url); } - private void setTimeoutCheck(String url) { + private void setTimeoutCheck(Map headers, String url) { App.post(runnable, timeout); - PlayerEvent.url(url); + this.headers = headers; + PlayerEvent.state(0); + this.url = url; } private void removeTimeoutCheck() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 6f91bc3c9..a9e4fe51b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -108,7 +108,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private boolean lock; private int toggleCount; private int passCount; - private String url; private PiP mPiP; public static void start(Activity activity) { @@ -289,11 +288,11 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List } private void onCast() { - CastDialog.create().video(CastVideo.get(mBinding.control.title.getText().toString(), getUrl())).fm(false).show(this); + CastDialog.create().video(CastVideo.get(mBinding.control.title.getText().toString(), mPlayers.getUrl())).fm(false).show(this); } private void onShare() { - ShareCompat.IntentBuilder builder = new ShareCompat.IntentBuilder(this).setType("text/plain").setText(getUrl()); + ShareCompat.IntentBuilder builder = new ShareCompat.IntentBuilder(this).setType("text/plain").setText(mPlayers.getUrl()); builder.getIntent().putExtra("title", mBinding.control.title.getText()); builder.getIntent().putExtra("name", mBinding.control.title.getText()); builder.startChooser(); @@ -426,8 +425,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List } private void showControl() { - mBinding.control.share.setVisibility(getUrl() == null ? View.GONE : View.VISIBLE); - mBinding.control.cast.setVisibility(getUrl() == null ? View.GONE : View.VISIBLE); + mBinding.control.share.setVisibility(mPlayers.getUrl() == null ? View.GONE : View.VISIBLE); + mBinding.control.cast.setVisibility(mPlayers.getUrl() == null ? View.GONE : View.VISIBLE); mBinding.control.right.rotate.setVisibility(isLock() ? View.GONE : View.VISIBLE); mBinding.control.right.back.setVisibility(isLock() ? View.GONE : View.VISIBLE); mBinding.control.bottom.setVisibility(isLock() ? View.GONE : View.VISIBLE); @@ -592,8 +591,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List if (mChannel == null) return; LiveConfig.get().setKeep(mChannel); mViewModel.fetch(mChannel); + mPlayers.clean(); showProgress(); - setUrl(null); } private void start(Channel result) { @@ -670,7 +669,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List public void onPlayerEvent(PlayerEvent event) { switch (event.getState()) { case 0: - setUrl(event.getUrl()); setTrackVisible(false); break; case Player.STATE_IDLE: @@ -857,14 +855,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List this.lock = lock; } - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - public int getToggleCount() { return toggleCount; } @@ -1024,7 +1014,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List } else if (isVisible(mBinding.recycler)) { hideUI(); } else if (!isLock()) { - finish(); + super.onBackPressed(); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index e1d77400e..35a00d86a 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -562,10 +562,10 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.title.setText(getString(R.string.detail_title, mBinding.name.getText(), episode.getName())); mViewModel.playerContent(getKey(), flag.getFlag(), episode.getUrl()); updateHistory(episode, replay); + mPlayers.clean(); showProgress(); setMetadata(); hidePreview(); - setUrl(null); } private void setPlayer(Result result) { @@ -697,7 +697,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void onCast() { - CastDialog.create().history(mHistory).video(CastVideo.get(mBinding.name.getText().toString(), getUrl())).fm(true).show(this); + CastDialog.create().history(mHistory).video(CastVideo.get(mBinding.name.getText().toString(), mPlayers.getUrl())).fm(true).show(this); } private void onFull() { @@ -715,7 +715,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void onShare() { - ShareCompat.IntentBuilder builder = new ShareCompat.IntentBuilder(this).setType("text/plain").setText(getUrl()); + ShareCompat.IntentBuilder builder = new ShareCompat.IntentBuilder(this).setType("text/plain").setText(mPlayers.getUrl()); builder.getIntent().putExtra("title", mBinding.control.title.getText()); builder.getIntent().putExtra("name", mBinding.control.title.getText()); builder.startChooser(); @@ -979,9 +979,9 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.right.back.setVisibility(isFullscreen() && !isLock() ? View.VISIBLE : View.GONE); mBinding.control.parse.setVisibility(isFullscreen() && isUseParse() ? View.VISIBLE : View.GONE); mBinding.control.action.getRoot().setVisibility(isFullscreen() ? View.VISIBLE : View.GONE); + mBinding.control.share.setVisibility(mPlayers.getUrl() == null ? View.GONE : View.VISIBLE); + mBinding.control.cast.setVisibility(mPlayers.getUrl() == null ? View.GONE : View.VISIBLE); mBinding.control.right.lock.setVisibility(isFullscreen() ? View.VISIBLE : View.GONE); - mBinding.control.share.setVisibility(getUrl() == null ? View.GONE : View.VISIBLE); - mBinding.control.cast.setVisibility(getUrl() == null ? View.GONE : View.VISIBLE); mBinding.control.center.setVisibility(isLock() ? View.GONE : View.VISIBLE); mBinding.control.bottom.setVisibility(isLock() ? View.GONE : View.VISIBLE); mBinding.control.top.setVisibility(isLock() ? View.GONE : View.VISIBLE); @@ -1162,7 +1162,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo setPosition(); setInitTrack(true); setTrackVisible(false); - setUrl(event.getUrl()); mClock.setCallback(this); break; case Player.STATE_IDLE: @@ -1343,8 +1342,9 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private boolean mismatch(Vod item) { - String keyword = mBinding.name.getText().toString(); + if (getId().equals(item.getVodId())) return true; if (mBroken.contains(item.getVodId())) return true; + String keyword = mBinding.name.getText().toString(); if (isAutoMode()) return !item.getVodName().equals(keyword); else return !item.getVodName().contains(keyword); } @@ -1460,14 +1460,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo this.lock = lock; } - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - public int getToggleCount() { return toggleCount; } @@ -1663,7 +1655,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo exitFullscreen(); } else if (!isLock()) { stopSearch(); - finish(); + super.onBackPressed(); } }