Skip to content

Commit 781f0db

Browse files
committed
#1235 fix: connect to .debug and .ci key mapper builds for the relay service
1 parent 345c6c1 commit 781f0db

5 files changed

Lines changed: 52 additions & 27 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@
1717
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
1818
coreApp="true"
1919
package="io.github.sds100.keymapper.inputmethod.latin">
20-
2120
<uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
2221
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2322
<uses-permission android:name="android.permission.VIBRATE" />
2423
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
2524
<uses-permission android:name="io.github.sds100.keymapper.KEY_EVENT_RELAY_SERVICE" />
25+
<uses-permission android:name="io.github.sds100.keymapper.debug.KEY_EVENT_RELAY_SERVICE" />
26+
<uses-permission android:name="io.github.sds100.keymapper.ci.KEY_EVENT_RELAY_SERVICE" />
2627

27-
<!-- A signature-protected permission to ask AOSP Keyboar d to close the software keyboard.
28+
<!-- A signature-protected permission to ask AOSP Keyboard to close the software keyboard.
2829
To use this, add the following line into calling application's AndroidManifest.xml
2930
<pre>
3031
{@code

app/src/main/aidl/io/github/sds100/keymapper/IKeyEventRelayService.aidl renamed to app/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayService.aidl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package io.github.sds100.keymapper;
1+
package io.github.sds100.keymapper.api;
22

33
import android.view.KeyEvent;
4-
import io.github.sds100.keymapper.IKeyEventRelayServiceCallback;
4+
import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback;
55

66
interface IKeyEventRelayService {
77
/**

app/src/main/aidl/io/github/sds100/keymapper/IKeyEventRelayServiceCallback.aidl renamed to app/src/main/aidl/io/github/sds100/keymapper/api/IKeyEventRelayServiceCallback.aidl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sds100.keymapper;
1+
package io.github.sds100.keymapper.api;
22

33
import android.view.KeyEvent;
44

app/src/main/java/io/github/sds100/keymapper/inputmethod/latin/KeyEventRelayServiceWrapper.kt

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,29 @@ import android.os.DeadObjectException
88
import android.os.IBinder
99
import android.util.Log
1010
import android.view.KeyEvent
11-
import io.github.sds100.keymapper.IKeyEventRelayService
12-
import io.github.sds100.keymapper.IKeyEventRelayServiceCallback
11+
import io.github.sds100.keymapper.api.IKeyEventRelayService
12+
import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback
1313

1414
/**
1515
* This handles connecting to the relay service and exposes an interface
1616
* so other parts of the app can get a reference to the service even when it isn't
1717
* bound yet.
18+
*
19+
* @param servicePackageName This is the package name of the key mapper app to connect to to listen
20+
* to key events. This is needed because the .debug and .ci key mapper builds are commonly
21+
* used.
1822
*/
1923
class KeyEventRelayServiceWrapperImpl(
2024
context: Context,
25+
private val servicePackageName: String,
2126
private val callback: IKeyEventRelayServiceCallback,
2227
) : KeyEventRelayServiceWrapper {
2328
private val ctx: Context = context.applicationContext
2429

2530
private val keyEventRelayServiceLock: Any = Any()
2631
private var keyEventRelayService: IKeyEventRelayService? = null
2732

28-
private val keyEventReceiverConnection: ServiceConnection =
33+
private val serviceConnection: ServiceConnection =
2934
object : ServiceConnection {
3035
override fun onServiceConnected(
3136
name: ComponentName?,
@@ -66,21 +71,19 @@ class KeyEventRelayServiceWrapperImpl(
6671

6772
fun bind() {
6873
try {
69-
val keyEventReceiverComponent =
70-
ComponentName("io.github.sds100.keymapper.debug", "io.github.sds100.keymapper.api.KeyEventRelayService")
71-
val keyEventReceiverServiceIntent = Intent()
72-
keyEventReceiverServiceIntent.setComponent(keyEventReceiverComponent)
73-
ctx.bindService(keyEventReceiverServiceIntent, keyEventReceiverConnection, 0)
74-
75-
Log.e(LatinIME.TAG, "Bind to service")
74+
val relayServiceIntent = Intent()
75+
val component =
76+
ComponentName(servicePackageName, "io.github.sds100.keymapper.api.KeyEventRelayService")
77+
relayServiceIntent.setComponent(component)
78+
ctx.bindService(relayServiceIntent, serviceConnection, 0)
7679
} catch (e: SecurityException) {
7780
Log.e(LatinIME.TAG, e.toString())
7881
}
7982
}
8083

8184
fun unbind() {
8285
try {
83-
ctx.unbindService(keyEventReceiverConnection)
86+
ctx.unbindService(serviceConnection)
8487
} catch (e: DeadObjectException) {
8588
// do nothing
8689
}

app/src/main/java/io/github/sds100/keymapper/inputmethod/latin/LatinIME.java

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858

5959
import javax.annotation.Nonnull;
6060

61-
import io.github.sds100.keymapper.IKeyEventRelayServiceCallback;
61+
import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback;
6262
import io.github.sds100.keymapper.inputmethod.accessibility.AccessibilityUtils;
6363
import io.github.sds100.keymapper.inputmethod.annotations.UsedForTesting;
6464
import io.github.sds100.keymapper.inputmethod.compat.EditorInfoCompatUtils;
@@ -219,7 +219,9 @@ public void onReceive(Context context, Intent intent) {
219219

220220
final RestartAfterDeviceUnlockReceiver mRestartAfterDeviceUnlockReceiver = new RestartAfterDeviceUnlockReceiver();
221221

222-
private KeyEventRelayServiceWrapperImpl mKeyEventRelayServiceWrapper;
222+
private KeyEventRelayServiceWrapperImpl mKeyEventRelayServiceWrapperRelease;
223+
private KeyEventRelayServiceWrapperImpl mKeyEventRelayServiceWrapperDebug;
224+
private KeyEventRelayServiceWrapperImpl mKeyEventRelayServiceWrapperCi;
223225
private IKeyEventRelayServiceCallback mKeyEventRelayServiceCallback = new IKeyEventRelayServiceCallback.Stub() {
224226
@Override
225227
public boolean onKeyEvent(KeyEvent event, String sourcePackageName) {
@@ -776,10 +778,27 @@ public void onCreate() {
776778

777779
registerReceiver(mKeyMapperBroadcastReceiver, keyMapperIntentFilter);
778780

779-
mKeyEventRelayServiceWrapper =
780-
new KeyEventRelayServiceWrapperImpl(getApplicationContext(), mKeyEventRelayServiceCallback);
781-
782-
mKeyEventRelayServiceWrapper.bind();
781+
// Connect to the different key mapper build types.
782+
mKeyEventRelayServiceWrapperRelease =
783+
new KeyEventRelayServiceWrapperImpl(
784+
getApplicationContext(),
785+
"io.github.sds100.keymapper",
786+
mKeyEventRelayServiceCallback);
787+
mKeyEventRelayServiceWrapperRelease.bind();
788+
789+
mKeyEventRelayServiceWrapperDebug =
790+
new KeyEventRelayServiceWrapperImpl(
791+
getApplicationContext(),
792+
"io.github.sds100.keymapper.debug",
793+
mKeyEventRelayServiceCallback);
794+
mKeyEventRelayServiceWrapperDebug.bind();
795+
796+
mKeyEventRelayServiceWrapperCi =
797+
new KeyEventRelayServiceWrapperImpl(
798+
getApplicationContext(),
799+
"io.github.sds100.keymapper.ci",
800+
mKeyEventRelayServiceCallback);
801+
mKeyEventRelayServiceWrapperCi.bind();
783802

784803
StatsUtils.onCreate(mSettings.getCurrent(), mRichImm);
785804
}
@@ -893,7 +912,9 @@ public void onDestroy() {
893912
unregisterReceiver(mRestartAfterDeviceUnlockReceiver);
894913
unregisterReceiver(mKeyMapperBroadcastReceiver);
895914
mStatsUtilsManager.onDestroy(this /* context */);
896-
mKeyEventRelayServiceWrapper.unbind();
915+
mKeyEventRelayServiceWrapperRelease.unbind();
916+
mKeyEventRelayServiceWrapperDebug.unbind();
917+
mKeyEventRelayServiceWrapperCi.unbind();
897918
super.onDestroy();
898919
}
899920

@@ -1915,8 +1936,8 @@ private HardwareEventDecoder getHardwareKeyEventDecoder(final int deviceId) {
19151936
@Override
19161937
public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
19171938

1918-
if (mKeyEventRelayServiceWrapper != null) {
1919-
if (mKeyEventRelayServiceWrapper.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
1939+
if (mKeyEventRelayServiceWrapperDebug != null) {
1940+
if (mKeyEventRelayServiceWrapperDebug.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
19201941
return true;
19211942
}
19221943
}
@@ -1947,8 +1968,8 @@ public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
19471968

19481969
@Override
19491970
public boolean onKeyUp(final int keyCode, final KeyEvent keyEvent) {
1950-
if (mKeyEventRelayServiceWrapper != null) {
1951-
if (mKeyEventRelayServiceWrapper.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
1971+
if (mKeyEventRelayServiceWrapperDebug != null) {
1972+
if (mKeyEventRelayServiceWrapperDebug.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
19521973
return true;
19531974
}
19541975
}

0 commit comments

Comments
 (0)