diff --git a/app/build.gradle b/app/build.gradle index 0ea0f4dba..943970949 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -128,7 +128,6 @@ dependencies { implementation 'org.nanohttpd:nanohttpd:2.3.1' implementation('org.simpleframework:simple-xml:2.7.1') { exclude group: 'stax', module: 'stax-api' exclude group: 'xpp3', module: 'xpp3' } implementation(ext: 'aar', name: 'dlna-core', group: 'fongmi', version: 'release') - implementation(ext: 'aar', name: 'go-proxy-video', group: 'fongmi', version: 'release') leanbackImplementation(ext: 'aar', name: 'dlna-dmr', group: 'fongmi', version: 'release') leanbackImplementation 'androidx.leanback:leanback:1.2.0-alpha04' leanbackImplementation 'me.jessyan:autosize:1.2.1' diff --git a/app/src/main/java/com/fongmi/android/tv/server/Go.java b/app/src/main/java/com/fongmi/android/tv/server/Go.java new file mode 100644 index 000000000..a3c1f8752 --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/server/Go.java @@ -0,0 +1,45 @@ +package com.fongmi.android.tv.server; + +import com.fongmi.android.tv.App; +import com.fongmi.android.tv.utils.ShellUtil; +import com.github.catvod.Init; +import com.github.catvod.utils.Path; + +import java.io.File; + +public class Go { + + public static void prepare() { + App.execute(() -> { + try { + File file = new File(Init.context().getFilesDir().getAbsolutePath() + "/go_proxy_video"); + if (file.exists()) return; + file.createNewFile(); + Path.copy(Init.context().getAssets().open("go_proxy_video"), file); + file.setExecutable(true); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + + public void start() { + new Thread(() -> { + try { + File file = new File(Init.context().getFilesDir().getAbsolutePath() + "/go_proxy_video"); + if (!file.exists()) return; + file.setExecutable(true); + ShellUtil.execCommand("nohup " + file.getAbsolutePath(), false); + } catch (Exception e) { + e.printStackTrace(); + } + }).start(); + } + + public void stop() { + new Thread(() -> { + ShellUtil.execCommand(new String[]{"killall -9 go_proxy_video"}, false); + }).start(); + } + +} diff --git a/app/src/main/java/com/fongmi/android/tv/server/Server.java b/app/src/main/java/com/fongmi/android/tv/server/Server.java index 2a8dd7610..821bab7b8 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/Server.java +++ b/app/src/main/java/com/fongmi/android/tv/server/Server.java @@ -3,13 +3,10 @@ package com.fongmi.android.tv.server; import com.github.catvod.Proxy; import com.github.catvod.utils.Util; -import go_proxy_video.Go_proxy_video; - public class Server { private Nano nano; private int port; - - private Thread goThread; + private Go go; private static class Loader { static volatile Server INSTANCE = new Server(); @@ -40,9 +37,12 @@ public class Server { } public void go() { - if (goThread != null) goThread.interrupt(); - goThread = new Thread(Go_proxy_video::start); - goThread.start(); + if (go != null) { + go.start(); + return; + } + go = new Go(); + go.start(); } public void start() { @@ -59,6 +59,7 @@ public class Server { nano = null; } } while (port < 9999); + Go.prepare(); } public void stop() { @@ -66,9 +67,9 @@ public class Server { nano.stop(); nano = null; } - if (goThread != null) { - goThread.interrupt(); - goThread = null; + if (go != null) { + go.stop(); + go = null; } } }