From a682951a721e9e6fa42f7dfaddea4e13d01cf90d Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 8 Aug 2023 13:13:50 +0800 Subject: [PATCH] Clean code --- .../android/tv/ui/activity/HomeActivity.java | 2 +- .../android/tv/ui/activity/LiveActivity.java | 2 +- .../java/com/fongmi/android/tv/bean/Core.java | 10 ++++++++++ .../fongmi/android/tv/player/extractor/TVBus.java | 15 ++++++++++++--- .../android/tv/ui/activity/MainActivity.java | 2 +- tvbus/src/main/java/com/tvbus/engine/TVCore.java | 11 ++++++++++- 6 files changed, 35 insertions(+), 7 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 295a2ccd0..5f758005f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -229,7 +229,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private void setConfirm() { confirm = true; Notify.show(R.string.app_exit); - App.post(() -> confirm = false, 2000); + App.post(() -> confirm = false, 5000); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index a8f8ec79e..efa4c84d7 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -659,7 +659,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void setConfirm() { confirm = true; Notify.show(R.string.app_exit); - App.post(() -> confirm = false, 2000); + App.post(() -> confirm = false, 5000); } public int getToggleCount() { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Core.java b/app/src/main/java/com/fongmi/android/tv/bean/Core.java index a472ad454..0a3799da6 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Core.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Core.java @@ -2,6 +2,8 @@ package com.fongmi.android.tv.bean; import android.text.TextUtils; +import androidx.annotation.Nullable; + import com.fongmi.android.tv.utils.Utils; import com.google.gson.annotations.SerializedName; @@ -49,4 +51,12 @@ public class Core { public String getSo() { return !TextUtils.isEmpty(so) ? so : "tvcore"; } + + @Override + public boolean equals(@Nullable Object obj) { + if (this == obj) return true; + if (!(obj instanceof Core)) return false; + Core it = (Core) obj; + return getSo().equals(it.getSo()); + } } diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/TVBus.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/TVBus.java index 8346d8b26..6ac095988 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/extractor/TVBus.java +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/TVBus.java @@ -4,6 +4,7 @@ import com.fongmi.android.tv.App; import com.fongmi.android.tv.api.LiveConfig; import com.fongmi.android.tv.bean.Core; import com.fongmi.android.tv.player.Source; +import com.fongmi.android.tv.utils.Notify; import com.google.gson.JsonObject; import com.tvbus.engine.Listener; import com.tvbus.engine.TVCore; @@ -12,6 +13,7 @@ public class TVBus implements Source.Extractor, Listener { private TVCore tvcore; private String hls; + private Core core; @Override public boolean match(String scheme, String host) { @@ -19,7 +21,7 @@ public class TVBus implements Source.Extractor, Listener { } private void init(Core core) { - tvcore = new TVCore(core.getSign(), core.getSo()); + tvcore = new TVCore(core.getSo(), core.getSign()); tvcore.auth(core.getAuth()).broker(core.getBroker()); tvcore.name(core.getName()).pass(core.getPass()); tvcore.serv(0).play(8902).mode(1).listener(this); @@ -28,7 +30,8 @@ public class TVBus implements Source.Extractor, Listener { @Override public String fetch(String url) throws Exception { - if (tvcore == null) init(LiveConfig.get().getHome().getCore()); + if (core != null && !core.equals(LiveConfig.get().getHome().getCore())) change(); + if (tvcore == null) init(core = LiveConfig.get().getHome().getCore()); tvcore.start(url); onWait(); return hls; @@ -46,6 +49,11 @@ public class TVBus implements Source.Extractor, Listener { } } + private void change() { + App.post(() -> Notify.show("內核已切換,正在重新啟動。")); + App.post(() -> System.exit(0), 1000); + } + @Override public void stop() { if (tvcore != null) tvcore.stop(); @@ -54,7 +62,8 @@ public class TVBus implements Source.Extractor, Listener { @Override public void exit() { - if (tvcore != null) System.exit(0); + if (tvcore != null) tvcore.quit(); + tvcore = null; } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index 37b56bf5c..5403cb2d6 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -118,7 +118,7 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt private void setConfirm() { confirm = true; Notify.show(R.string.app_exit); - App.post(() -> confirm = false, 2000); + App.post(() -> confirm = false, 5000); } public void change(int position) { diff --git a/tvbus/src/main/java/com/tvbus/engine/TVCore.java b/tvbus/src/main/java/com/tvbus/engine/TVCore.java index 36ccfab9d..5da9d99e2 100644 --- a/tvbus/src/main/java/com/tvbus/engine/TVCore.java +++ b/tvbus/src/main/java/com/tvbus/engine/TVCore.java @@ -10,7 +10,7 @@ public class TVCore { private long handle; - public TVCore(String sign, String so) { + public TVCore(String so, String sign) { try { Hook.pm(Init.context(), sign); System.load(Github.getSo(so)); @@ -117,6 +117,13 @@ public class TVCore { } } + public void quit() { + try { + quit(handle); + } catch (Throwable ignored) { + } + } + private native long initialise(); private native int init(long handle, Context context); @@ -127,6 +134,8 @@ public class TVCore { private native void stop(long handle); + private native void quit(long handle); + private native void setServPort(long handle, int iPort); private native void setPlayPort(long handle, int iPort);