package com.omixlab.mosis.unity

import android.util.Log
import android.content.ComponentName
import android.content.Context.BIND_AUTO_CREATE
import android.content.Intent
import android.content.ServiceConnection
import android.os.IBinder
import androidx.core.content.ContextCompat.startForegroundService
import com.omixlab.mosis.IMosisService
import com.unity3d.player.UnityPlayer

class MyKotlinPlugin {
    companion object {
        val instance: MyKotlinPlugin by lazy { MyKotlinPlugin() }
        @JvmStatic
        fun StartMosisService() {
            instance.startRemoteService()
        }
    }
    var remote_service: IMosisService? = null
    val connection = object : ServiceConnection {
        override fun onServiceConnected(className: ComponentName, service: IBinder) {
            Log.d("MosisTest", "Service Connected")
            remote_service = IMosisService.Stub.asInterface(service)
            serviceConnected(service)
        }
        override fun onServiceDisconnected(arg0: ComponentName) {
            Log.d("MosisTest", "Service Disconnected")
        }
    }
    fun startRemoteService() {
        val intent = Intent("com.omixlab.mosis.SERVICE")
        intent.setPackage("com.omixlab.mosis")
        val currentActivity = UnityPlayer.currentActivity
        try {
            startForegroundService(currentActivity, intent)
            val result = currentActivity.bindService(intent, connection, BIND_AUTO_CREATE)
            Log.d("MosisTest", "Bind result: $result")
        } catch (e: Exception) {
            Log.e("MosisTest", "Bind failed", e)
        }
    }
    external fun serviceConnected(binder: IBinder)
}
