summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/input/InputManagerInternal.java9
-rw-r--r--services/core/java/com/android/server/input/InputManagerService.java5
-rw-r--r--services/core/java/com/android/server/input/NativeInputManagerService.java12
-rw-r--r--services/core/jni/com_android_server_input_InputManagerService.cpp6
4 files changed, 32 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/input/InputManagerInternal.java b/services/core/java/com/android/server/input/InputManagerInternal.java
index b47631c35e38..d32a5ed60094 100644
--- a/services/core/java/com/android/server/input/InputManagerInternal.java
+++ b/services/core/java/com/android/server/input/InputManagerInternal.java
@@ -218,4 +218,13 @@ public abstract class InputManagerInternal {
* display, external peripherals, fingerprint sensor, etc.
*/
public abstract void notifyUserActivity();
+
+ /**
+ * Get the device ID of the {@link InputDevice} that used most recently.
+ *
+ * @return the last used input device ID, or
+ * {@link android.os.IInputConstants#INVALID_INPUT_DEVICE_ID} if no device has been used
+ * since boot.
+ */
+ public abstract int getLastUsedInputDeviceId();
}
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 83179914c746..8685d2c45762 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -3204,6 +3204,11 @@ public class InputManagerService extends IInputManager.Stub
public void setStylusButtonMotionEventsEnabled(boolean enabled) {
mNative.setStylusButtonMotionEventsEnabled(enabled);
}
+
+ @Override
+ public int getLastUsedInputDeviceId() {
+ return mNative.getLastUsedInputDeviceId();
+ }
}
@Override
diff --git a/services/core/java/com/android/server/input/NativeInputManagerService.java b/services/core/java/com/android/server/input/NativeInputManagerService.java
index f742360484f5..0208a325a1d5 100644
--- a/services/core/java/com/android/server/input/NativeInputManagerService.java
+++ b/services/core/java/com/android/server/input/NativeInputManagerService.java
@@ -271,6 +271,15 @@ interface NativeInputManagerService {
void setInputMethodConnectionIsActive(boolean isActive);
+ /**
+ * Get the device ID of the InputDevice that used most recently.
+ *
+ * @return the last used input device ID, or
+ * {@link android.os.IInputConstants#INVALID_INPUT_DEVICE_ID} if no device has been used
+ * since boot.
+ */
+ int getLastUsedInputDeviceId();
+
/** The native implementation of InputManagerService methods. */
class NativeImpl implements NativeInputManagerService {
/** Pointer to native input manager service object, used by native code. */
@@ -544,5 +553,8 @@ interface NativeInputManagerService {
@Override
public native void setInputMethodConnectionIsActive(boolean isActive);
+
+ @Override
+ public native int getLastUsedInputDeviceId();
}
}
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index a01c1231b373..3746cdf234d6 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -2727,6 +2727,11 @@ static void nativeSetInputMethodConnectionIsActive(JNIEnv* env, jobject nativeIm
im->setInputMethodConnectionIsActive(isActive);
}
+static jint nativeGetLastUsedInputDeviceId(JNIEnv* env, jobject nativeImplObj) {
+ NativeInputManager* im = getNativeInputManager(env, nativeImplObj);
+ return static_cast<jint>(im->getInputManager()->getReader().getLastUsedInputDeviceId());
+}
+
// ----------------------------------------------------------------------------
static const JNINativeMethod gInputManagerMethods[] = {
@@ -2835,6 +2840,7 @@ static const JNINativeMethod gInputManagerMethods[] = {
{"setAccessibilityStickyKeysEnabled", "(Z)V",
(void*)nativeSetAccessibilityStickyKeysEnabled},
{"setInputMethodConnectionIsActive", "(Z)V", (void*)nativeSetInputMethodConnectionIsActive},
+ {"getLastUsedInputDeviceId", "()I", (void*)nativeGetLastUsedInputDeviceId},
};
#define FIND_CLASS(var, className) \