@@ -6,11 +6,13 @@ import android.content.Intent
66import android.content.ServiceConnection
77import android.os.DeadObjectException
88import android.os.IBinder
9+ import android.os.RemoteException
910import android.util.Log
1011import android.view.KeyEvent
1112import io.github.sds100.keymapper.api.IKeyEventRelayService
1213import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback
1314
15+
1416/* *
1517 * This handles connecting to the relay service and exposes an interface
1618 * so other parts of the app can get a reference to the service even when it isn't
@@ -38,16 +40,17 @@ class KeyEventRelayServiceWrapperImpl(
3840 ) {
3941 synchronized(keyEventRelayServiceLock) {
4042 keyEventRelayService = IKeyEventRelayService .Stub .asInterface(service)
41- Log .e (LatinIME .TAG , " Register callback " )
43+ Log .d (LatinIME .TAG , " Register with key event relay service " )
4244 keyEventRelayService?.registerCallback(callback)
4345 }
4446 }
4547
4648 override fun onServiceDisconnected (name : ComponentName ? ) {
4749 synchronized(keyEventRelayServiceLock) {
4850 try {
51+ Log .d(LatinIME .TAG , " Unregister with key event relay service" )
4952 keyEventRelayService?.unregisterCallback()
50- } catch (_: DeadObjectException ) {
53+ } catch (_: RemoteException ) {
5154 } finally {
5255 keyEventRelayService = null
5356 }
@@ -79,7 +82,11 @@ class KeyEventRelayServiceWrapperImpl(
7982 val component =
8083 ComponentName (servicePackageName, " io.github.sds100.keymapper.api.KeyEventRelayService" )
8184 relayServiceIntent.setComponent(component)
82- ctx.bindService(relayServiceIntent, serviceConnection, 0 )
85+ val isSuccess = ctx.bindService(relayServiceIntent, serviceConnection, 0 )
86+
87+ if (! isSuccess) {
88+ ctx.unbindService(serviceConnection)
89+ }
8390 } catch (e: SecurityException ) {
8491 Log .e(LatinIME .TAG , e.toString())
8592 }
0 commit comments