diff --git a/GlyphAdapter/src/com/nothing/thirdparty/GlyphService.kt b/GlyphAdapter/src/com/nothing/thirdparty/GlyphService.kt index 22de604..69d51b9 100644 --- a/GlyphAdapter/src/com/nothing/thirdparty/GlyphService.kt +++ b/GlyphAdapter/src/com/nothing/thirdparty/GlyphService.kt @@ -9,6 +9,6 @@ import android.app.Service import android.content.Intent public class GlyphService : Service() { - private val binder = IGlyphServiceImpl() + private val binder by lazy { IGlyphServiceImpl(this) } override fun onBind(intent: Intent?) = binder } \ No newline at end of file diff --git a/GlyphAdapter/src/com/nothing/thirdparty/IGlyphServiceImpl.kt b/GlyphAdapter/src/com/nothing/thirdparty/IGlyphServiceImpl.kt index 42c0ddb..e039b83 100644 --- a/GlyphAdapter/src/com/nothing/thirdparty/IGlyphServiceImpl.kt +++ b/GlyphAdapter/src/com/nothing/thirdparty/IGlyphServiceImpl.kt @@ -5,20 +5,56 @@ package com.nothing.thirdparty +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.ServiceConnection +import android.os.IBinder import android.util.Log -class IGlyphServiceImpl : IGlyphService.Stub() { +class IGlyphServiceImpl(private val context: Context) : IGlyphService.Stub() { + private var glyphService: IGlyphService? = null + + private val connection = object : ServiceConnection { + override fun onServiceConnected(name: ComponentName?, service: IBinder?) { + glyphService = IGlyphService.Stub.asInterface(service) + } + + override fun onServiceDisconnected(name: ComponentName?) { + glyphService = null + } + } + + init { + bindglyphService() + } + + private fun bindglyphService() { + if (context != null) { + val intent = Intent("com.nothing.thirdparty.IGlyphService").apply { + component = ComponentName("co.aospa.glyph", "co.aospa.glyph.Services.ThirdPartyService") + } + context.bindService(intent, connection, Context.BIND_AUTO_CREATE) + } else { + Log.e("IGlyphServiceImpl", "Context is null, cannot bind service") + } + } override fun setFrameColors(iArray: IntArray?) { Log.i("IGlyphServiceImpl", "updateLedFrame - ${iArray.contentToString()}") + if (iArray != null) { + glyphService?.setFrameColors(iArray) + } } override fun openSession() { Log.i("IGlyphServiceImpl", "openSession") + glyphService?.setFrameColors(intArrayOf(0, 0, 0, 0, 0)) } override fun closeSession() { Log.i("IGlyphServiceImpl", "closeSession") + glyphService?.setFrameColors(intArrayOf(0, 0, 0, 0, 0)) }