From e5439679cb55173a14ce05a464ae74c85fdee483 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 19 Aug 2023 22:38:55 +0800 Subject: [PATCH] Fix bug and clean code --- .../tv/ui/activity/CollectActivity.java | 14 +++++++- .../tv/ui/activity/DetailActivity.java | 5 ++- .../com/fongmi/android/tv/player/Players.java | 3 +- .../com/fongmi/android/tv/player/Source.java | 2 ++ .../android/tv/player/extractor/Push.java | 33 +++++++++++++++++++ .../tv/ui/activity/DetailActivity.java | 6 +++- 6 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/fongmi/android/tv/player/extractor/Push.java diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index f76ccb61c..d66fbb29c 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -135,6 +135,12 @@ public class CollectActivity extends BaseActivity { } } + private void stop() { + if (mExecutor == null) return; + mExecutor.shutdownNow(); + mExecutor = null; + } + private void onChildSelected(@Nullable RecyclerView.ViewHolder child) { if (mOldView != null) mOldView.setActivated(false); if (child == null) return; @@ -177,7 +183,13 @@ public class CollectActivity extends BaseActivity { @Override public void onBackPressed() { super.onBackPressed(); - if (mExecutor != null) mExecutor.shutdownNow(); + stop(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + stop(); } class PageAdapter extends FragmentStatePagerAdapter { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index bdb5bb0bb..6c3f4aa80 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -1053,7 +1053,9 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void stopSearch() { - if (mExecutor != null) mExecutor.shutdownNow(); + if (mExecutor == null) return; + mExecutor.shutdownNow(); + mExecutor = null; } private void search(Site site, String keyword) { @@ -1311,6 +1313,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis @Override protected void onDestroy() { + stopSearch(); super.onDestroy(); mPlayers.release(); Source.get().stop(); 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 2be1cc75e..64d38e3d1 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 @@ -111,6 +111,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic } public void setPlayer(int player) { + if (this.player != player) stop(); this.player = player; } @@ -210,12 +211,10 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic } public void togglePlayer() { - stop(); setPlayer(isExo() ? SYS : ++player); } public void nextPlayer() { - stop(); setPlayer(isExo() ? IJK : EXO); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/Source.java b/app/src/main/java/com/fongmi/android/tv/player/Source.java index c930660d6..401fe0608 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Source.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Source.java @@ -3,6 +3,7 @@ package com.fongmi.android.tv.player; import com.fongmi.android.tv.player.extractor.BiliBili; import com.fongmi.android.tv.player.extractor.Force; import com.fongmi.android.tv.player.extractor.JianPian; +import com.fongmi.android.tv.player.extractor.Push; import com.fongmi.android.tv.player.extractor.TVBus; import com.fongmi.android.tv.player.extractor.Thunder; import com.fongmi.android.tv.player.extractor.Youtube; @@ -29,6 +30,7 @@ public class Source { extractors.add(new BiliBili()); extractors.add(new Force()); extractors.add(new JianPian()); + extractors.add(new Push()); extractors.add(new Thunder()); extractors.add(new TVBus()); extractors.add(new Youtube()); diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/Push.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/Push.java new file mode 100644 index 000000000..21e95fd0a --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/Push.java @@ -0,0 +1,33 @@ +package com.fongmi.android.tv.player.extractor; + +import android.net.Uri; +import android.os.SystemClock; + +import androidx.fragment.app.FragmentActivity; + +import com.fongmi.android.tv.App; +import com.fongmi.android.tv.player.Source; +import com.fongmi.android.tv.ui.activity.DetailActivity; + +public class Push implements Source.Extractor { + + @Override + public boolean match(String scheme, String host) { + return scheme.equals("push"); + } + + @Override + public String fetch(String url) throws Exception { + DetailActivity.push((FragmentActivity) App.activity(), Uri.parse(url.substring(7))); + SystemClock.sleep(500); + return ""; + } + + @Override + public void stop() { + } + + @Override + public void exit() { + } +} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index bfdd00991..0bf5e54bf 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -239,6 +239,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); mBinding.swipeLayout.setRefreshing(true); getIntent().putExtras(intent); + stopSearch(); setOrient(); checkId(); } @@ -1106,7 +1107,9 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust } private void stopSearch() { - if (mExecutor != null) mExecutor.shutdownNow(); + if (mExecutor == null) return; + mExecutor.shutdownNow(); + mExecutor = null; } private void search(Site site, String keyword) { @@ -1430,6 +1433,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust @Override protected void onDestroy() { super.onDestroy(); + stopSearch(); mPlayers.release(); Source.get().stop(); Clock.get().release();