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