summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorMichael Wright <michaelwr@google.com>2013-08-19 15:55:38 -0700
committerMichael Wright <michaelwr@google.com>2013-08-19 17:06:03 -0700
commitb7b2d4b490f5dd672e0b00ced579dc052e3637e9 (patch)
tree35a71da019d22046f57633a6513cf93ad51f9f59 /core/java/android
parentb6c38e9de1a2824ce599d7074fa4a226926177c1 (diff)
downloadframeworks_base-b7b2d4b490f5dd672e0b00ced579dc052e3637e9.zip
frameworks_base-b7b2d4b490f5dd672e0b00ced579dc052e3637e9.tar.gz
frameworks_base-b7b2d4b490f5dd672e0b00ced579dc052e3637e9.tar.bz2
Expose API to query devices for supported keys
Change-Id: I29f230e19c6f851b4b72b2fc8dd41f5abcba4631
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/hardware/input/InputManager.java20
-rw-r--r--core/java/android/view/InputDevice.java10
2 files changed, 29 insertions, 1 deletions
diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java
index 761faaf..30e69a6 100644
--- a/core/java/android/hardware/input/InputManager.java
+++ b/core/java/android/hardware/input/InputManager.java
@@ -579,15 +579,33 @@ public final class InputManager {
* @hide
*/
public boolean[] deviceHasKeys(int[] keyCodes) {
+ return deviceHasKeys(-1, keyCodes);
+ }
+
+ /**
+ * Queries the framework about whether any physical keys exist on the
+ * any keyboard attached to the device that are capable of producing the given
+ * array of key codes.
+ *
+ * @param id The id of the device to query.
+ * @param keyCodes The array of key codes to query.
+ * @return A new array of the same size as the key codes array whose elements are set to true
+ * if the given device could produce the corresponding key code at the same index in the key
+ * codes array.
+ *
+ * @hide
+ */
+ public boolean[] deviceHasKeys(int id, int[] keyCodes) {
boolean[] ret = new boolean[keyCodes.length];
try {
- mIm.hasKeys(-1, InputDevice.SOURCE_ANY, keyCodes, ret);
+ mIm.hasKeys(id, InputDevice.SOURCE_ANY, keyCodes, ret);
} catch (RemoteException e) {
// no fallback; just return the empty array
}
return ret;
}
+
/**
* Injects an input event into the event system on behalf of an application.
* The synchronization mode determines whether the method blocks while waiting for
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java
index f43e4ab3..afc7b3e 100644
--- a/core/java/android/view/InputDevice.java
+++ b/core/java/android/view/InputDevice.java
@@ -574,6 +574,16 @@ public final class InputDevice implements Parcelable {
}
/**
+ * Gets whether the device is capable of producing the list of keycodes.
+ * @param keys The list of android keycodes to check for.
+ * @return An array of booleans where each member specifies whether the device is capable of
+ * generating the keycode given by the corresponding value at the same index in the keys array.
+ */
+ public boolean[] hasKeys(int... keys) {
+ return InputManager.getInstance().deviceHasKeys(mId, keys);
+ }
+
+ /**
* Gets information about the range of values for a particular {@link MotionEvent} axis.
* If the device supports multiple sources, the same axis may have different meanings
* for each source. Returns information about the first axis found for any source.