From e9e59f6026868a74a305222c52a29cd00217644f Mon Sep 17 00:00:00 2001
From: Kr328 <39107975+Kr328@users.noreply.github.com>
Date: Tue, 21 Jan 2020 20:23:02 +0800
Subject: [PATCH] service refactored
---
service/src/main/AndroidManifest.xml | 10 ++++++++--
.../com/github/kr328/clash/service/IClashManager.aidl | 4 ++++
.../com/github/kr328/clash/service/ClashManager.kt | 7 ++++++-
.../github/kr328/clash/service/ClashManagerService.kt | 11 +++++++++++
service/src/main/res/values/strings.xml | 4 ++++
5 files changed, 33 insertions(+), 3 deletions(-)
create mode 100644 service/src/main/java/com/github/kr328/clash/service/ClashManagerService.kt
diff --git a/service/src/main/AndroidManifest.xml b/service/src/main/AndroidManifest.xml
index d4f2da9..5ca8d4a 100644
--- a/service/src/main/AndroidManifest.xml
+++ b/service/src/main/AndroidManifest.xml
@@ -7,16 +7,22 @@
+ android:process=":background" />
+
diff --git a/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl b/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl
index 4f9f9fe..29fab27 100644
--- a/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl
+++ b/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl
@@ -1,9 +1,13 @@
package com.github.kr328.clash.service;
+import com.github.kr328.clash.service.IClashProfileManager;
import com.github.kr328.clash.service.ipc.IPCParcelables;
import com.github.kr328.clash.core.model.Packet;
interface IClashManager {
+ // Profile
+ IClashProfileManager getProfileManager();
+
// Control
boolean setSelectProxy(String proxy, String selected);
ParcelableCompletedFuture startHealthCheck(String group);
diff --git a/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt b/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt
index 10d4b4b..d861a14 100644
--- a/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt
@@ -5,12 +5,17 @@ import androidx.core.content.edit
import com.github.kr328.clash.core.Clash
import com.github.kr328.clash.core.model.General
import com.github.kr328.clash.core.model.ProxyGroup
+import com.github.kr328.clash.service.data.ClashDatabase
import com.github.kr328.clash.service.ipc.ParcelableCompletedFuture
import com.github.kr328.clash.service.ipc.ParcelablePipe
-class ClashManager(context: Context) : IClashManager.Stub() {
+class ClashManager(private val context: Context) : IClashManager.Stub() {
private val settings = context.getSharedPreferences("service", Context.MODE_PRIVATE)
+ override fun getProfileManager(): IClashProfileManager {
+ return ClashProfileManager(context, ClashDatabase.getInstance(context))
+ }
+
override fun queryAllProxies(): Array {
return Clash.queryProxyGroups().toTypedArray()
}
diff --git a/service/src/main/java/com/github/kr328/clash/service/ClashManagerService.kt b/service/src/main/java/com/github/kr328/clash/service/ClashManagerService.kt
new file mode 100644
index 0000000..093928c
--- /dev/null
+++ b/service/src/main/java/com/github/kr328/clash/service/ClashManagerService.kt
@@ -0,0 +1,11 @@
+package com.github.kr328.clash.service
+
+import android.app.Service
+import android.content.Intent
+import android.os.IBinder
+
+class ClashManagerService : Service() {
+ override fun onBind(intent: Intent?): IBinder? {
+ return ClashManager(this)
+ }
+}
\ No newline at end of file
diff --git a/service/src/main/res/values/strings.xml b/service/src/main/res/values/strings.xml
index 165e200..deac4f0 100644
--- a/service/src/main/res/values/strings.xml
+++ b/service/src/main/res/values/strings.xml
@@ -12,4 +12,8 @@
"%1$s↑\t%2$s↓"
+
+ Clash Core Service
+ Tun Device Service
+ Clash Manager Service