Added in API level 16

InputManager


class InputManager
kotlin.Any
   ↳ android.hardware.input.InputManager

Provides information about input devices and available key layouts.

Summary

Nested classes
abstract

Listens for changes in input devices.

Constants
static String

Broadcast Action: Query available keyboard layouts.

static String

Metadata Key: Keyboard layout metadata associated with ACTION_QUERY_KEYBOARD_LAYOUTS.

Public methods
Unit
addPeripheralCustomization(vendorId: Int, productId: Int, trigger: CustomizationTrigger, action: CustomizationAction)

Adds a new peripheral customization for a given vendor ID and product ID.

MutableMap<CustomizationTrigger!, CustomizationAction!>
getAllPeripheralCustomizations(vendorId: Int, productId: Int)

Retrieves all input customizations for a specific peripheral device.

HostUsiVersion?

Reports the version of the Universal Stylus Initiative (USI) protocol supported by the given display, if any.

InputDevice?

Gets information about the input device with the specified id.

IntArray!

Gets the ids of all input devices in the system.

InputDevice.ViewBehavior?

Gets the InputDevice.ViewBehavior of the input device with a given id.

Float

Returns the maximum allowed obscuring opacity per UID to propagate touches.

CustomizationAction?
getPeripheralCustomization(vendorId: Int, productId: Int, trigger: CustomizationTrigger)

Retrieves a specific peripheral customization action for a given trigger.

Boolean
isButtonAllowedForCustomization(vendorId: Int, productId: Int, buttonCode: Int)

Checks if a specific button is allowed for customization on the device(s).

Boolean
isKeyAllowedForCustomization(vendorId: Int, productId: Int, keyCode: Int)

Gets whether a keycode can be customized on a device.

Boolean

Check if showing a android.view.PointerIcon for styluses is enabled.

Unit

Registers an input device listener to receive notifications about when input devices are added, removed or changed.

Unit
removeAllPeripheralCustomizations(vendorId: Int, productId: Int)

Remove all peripheral customizations for a given vendor ID and product ID.

Unit
removePeripheralCustomization(vendorId: Int, productId: Int, trigger: CustomizationTrigger)

Removes a peripheral customization for a given vendor ID and product ID.

Unit

Unregisters an input device listener.

VerifiedInputEvent?

Verify the details of an android.view.InputEvent that came from the system.

Constants

ACTION_QUERY_KEYBOARD_LAYOUTS

Added in API level 16
static val ACTION_QUERY_KEYBOARD_LAYOUTS: String

Broadcast Action: Query available keyboard layouts.

The input manager service locates available keyboard layouts by querying broadcast receivers that are registered for this action. An application can offer additional keyboard layouts to the user by declaring a suitable broadcast receiver in its manifest.

Here is an example broadcast receiver declaration that an application might include in its AndroidManifest.xml to advertise keyboard layouts. The meta-data specifies a resource that contains a description of each keyboard layout that is provided by the application.

<code>
  &lt;receiver android:name=".InputDeviceReceiver"
          android:label="@string/keyboard_layouts_label"&gt;
      &lt;intent-filter&gt;
          &lt;action android:name="android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS" /&gt;
      &lt;/intent-filter&gt;
      &lt;meta-data android:name="android.hardware.input.metadata.KEYBOARD_LAYOUTS"
              android:resource="@xml/keyboard_layouts" /&gt;
  &lt;/receiver&gt;
  </code>

In the above example, the @xml/keyboard_layouts resource refers to an XML resource whose root element is <keyboard-layouts> that contains zero or more <keyboard-layout> elements. Each <keyboard-layout> element specifies the name, label, and location of a key character map for a particular keyboard layout. The label on the receiver is used to name the collection of keyboard layouts provided by this receiver in the keyboard layout settings.

<code>
  &lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;keyboard-layouts xmlns:android="http://schemas.android.com/apk/res/android"&gt;
      &lt;keyboard-layout android:name="keyboard_layout_english_us"
              android:label="@string/keyboard_layout_english_us_label"
              android:keyboardLayout="@raw/keyboard_layout_english_us" /&gt;
  &lt;/keyboard-layouts&gt;
  </code>

The android:name attribute specifies an identifier by which the keyboard layout will be known in the package. The android:label attribute specifies a human-readable descriptive label to describe the keyboard layout in the user interface, such as "English (US)". The android:keyboardLayout attribute refers to a key character map resource that defines the keyboard layout. The android:keyboardLocale attribute specifies a comma separated list of BCP 47 language tags depicting the locales supported by the keyboard layout. This attribute is optional and will be used for auto layout selection for external physical keyboards. The android:keyboardLayoutType attribute specifies the layoutType for the keyboard layout. This can be either empty or one of the following supported layout types: qwerty, qwertz, azerty, dvorak, colemak, workman, extended, turkish_q, turkish_f. This attribute is optional and will be used for auto layout selection for external physical keyboards.

Value: "android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS"

META_DATA_KEYBOARD_LAYOUTS

Added in API level 16
static val META_DATA_KEYBOARD_LAYOUTS: String

Metadata Key: Keyboard layout metadata associated with ACTION_QUERY_KEYBOARD_LAYOUTS.

Specifies the resource id of a XML resource that describes the keyboard layouts that are provided by the application.

Value: "android.hardware.input.metadata.KEYBOARD_LAYOUTS"

Public methods

addPeripheralCustomization

Added in API level 16
fun addPeripheralCustomization(
    vendorId: Int,
    productId: Int,
    trigger: CustomizationTrigger,
    action: CustomizationAction
): Unit

Adds a new peripheral customization for a given vendor ID and product ID.

This will remap a key on all connected peripheral devices matching the vendor and product ID to a different action.
Requires android.Manifest.permission#MANAGE_PERIPHERAL_CUSTOMIZATION

Parameters
vendorId Int: the vendor ID of the device
productId Int: the product ID of the device
trigger CustomizationTrigger: the trigger for the customization.
This value cannot be null.
action CustomizationAction: the action to be executed by the trigger.
This value cannot be null.
Exceptions
java.lang.IllegalArgumentException if the CustomizationTrigger or CustomizationAction is unsupported.
java.lang.IllegalStateException if no device with vendorId and productId is connected.

getAllPeripheralCustomizations

Added in API level 16
fun getAllPeripheralCustomizations(
    vendorId: Int,
    productId: Int
): MutableMap<CustomizationTrigger!, CustomizationAction!>

Retrieves all input customizations for a specific peripheral device.
Requires android.Manifest.permission#MANAGE_PERIPHERAL_CUSTOMIZATION

Parameters
vendorId Int: the vendor ID of the device
productId Int: the product ID of the device
Return
MutableMap<CustomizationTrigger!, CustomizationAction!> A map of triggers to actions, or an empty map if none exists.
This value cannot be null.
Exceptions
java.lang.IllegalStateException if no device with vendorId and productId is connected.

getHostUsiVersion

Added in API level 34
fun getHostUsiVersion(display: Display): HostUsiVersion?

Reports the version of the Universal Stylus Initiative (USI) protocol supported by the given display, if any.

Parameters
display Display: This value cannot be null.
Return
HostUsiVersion? the USI version supported by the display, or null if the device does not support USI

See Also

    getInputDevice

    Added in API level 16
    fun getInputDevice(id: Int): InputDevice?

    Gets information about the input device with the specified id.

    Parameters
    id Int: The device id.
    Return
    InputDevice? The input device or null if not found.

    getInputDeviceIds

    Added in API level 16
    fun getInputDeviceIds(): IntArray!

    Gets the ids of all input devices in the system.

    Return
    IntArray! The input device ids.

    getInputDeviceViewBehavior

    Added in API level 35
    fun getInputDeviceViewBehavior(deviceId: Int): InputDevice.ViewBehavior?

    Gets the InputDevice.ViewBehavior of the input device with a given id.

    Use this API to query a fresh view behavior instance whenever the input device changes.

    Parameters
    deviceId Int: the id of the input device whose view behavior is being requested.
    Return
    InputDevice.ViewBehavior? the view behavior of the input device with the provided id, or null if there is not input device with the provided id.

    getMaximumObscuringOpacityForTouch

    Added in API level 31
    fun getMaximumObscuringOpacityForTouch(): Float

    Returns the maximum allowed obscuring opacity per UID to propagate touches.

    For certain window types (eg. LayoutParams.TYPE_APPLICATION_OVERLAY), the decision of honoring LayoutParams.FLAG_NOT_TOUCHABLE or not depends on the combined obscuring opacity of the windows above the touch-consuming window, per UID. Check documentation of LayoutParams.FLAG_NOT_TOUCHABLE for more details.

    The value returned is between 0 (inclusive) and 1 (inclusive).

    Return
    Float Value is between 0.0f and 1.0f inclusive

    getPeripheralCustomization

    Added in API level 16
    fun getPeripheralCustomization(
        vendorId: Int,
        productId: Int,
        trigger: CustomizationTrigger
    ): CustomizationAction?

    Retrieves a specific peripheral customization action for a given trigger.
    Requires android.Manifest.permission#MANAGE_PERIPHERAL_CUSTOMIZATION

    Parameters
    vendorId Int: the vendor ID of the device
    productId Int: the product ID of the device
    trigger CustomizationTrigger: This value cannot be null.
    Return
    CustomizationAction? action or null if none exists.
    Exceptions
    java.lang.IllegalStateException if no device with vendorId and productId is connected.

    isButtonAllowedForCustomization

    Added in API level 16
    fun isButtonAllowedForCustomization(
        vendorId: Int,
        productId: Int,
        buttonCode: Int
    ): Boolean

    Checks if a specific button is allowed for customization on the device(s).
    Requires android.Manifest.permission#MANAGE_PERIPHERAL_CUSTOMIZATION

    Parameters
    vendorId Int: the vendor ID of the device.
    productId Int: the product ID of the device.
    buttonCode Int: the button code to check.
    Value is one of the following:
    Return
    Boolean true if the button can be customized on the matching devices, False otherwise.
    Exceptions
    java.lang.IllegalStateException if no device with vendorId and productId is connected.

    isKeyAllowedForCustomization

    Added in API level 16
    fun isKeyAllowedForCustomization(
        vendorId: Int,
        productId: Int,
        keyCode: Int
    ): Boolean

    Gets whether a keycode can be customized on a device.
    Requires android.Manifest.permission#MANAGE_PERIPHERAL_CUSTOMIZATION

    Parameters
    vendorId Int: the vendor ID for the device.
    productId Int: the product ID for the device.
    keyCode Int: the android keycode to check.
    Value is one of the following:
    Return
    Boolean true if the keycode can be customized on the device. False otherwise.
    Exceptions
    java.lang.IllegalStateException if no device with vendorId and productId is connected.

    isStylusPointerIconEnabled

    Added in API level 34
    fun isStylusPointerIconEnabled(): Boolean

    Check if showing a android.view.PointerIcon for styluses is enabled.

    Return
    Boolean true if a pointer icon will be shown over the location of a stylus pointer, false if there is no pointer icon shown for styluses.

    registerInputDeviceListener

    Added in API level 16
    fun registerInputDeviceListener(
        listener: InputManager.InputDeviceListener!,
        handler: Handler!
    ): Unit

    Registers an input device listener to receive notifications about when input devices are added, removed or changed.

    Parameters
    listener InputManager.InputDeviceListener!: The listener to register.
    handler Handler!: The handler on which the listener should be invoked, or null if the listener should be invoked on the calling thread's looper.

    removeAllPeripheralCustomizations

    Added in API level 16
    fun removeAllPeripheralCustomizations(
        vendorId: Int,
        productId: Int
    ): Unit

    Remove all peripheral customizations for a given vendor ID and product ID.

    This will remove all customizations on all connected peripheral devices matching the vendor and product ID. If no customizations exist, this method does nothing.
    Requires android.Manifest.permission#MANAGE_PERIPHERAL_CUSTOMIZATION

    Parameters
    vendorId Int: the vendor ID of the device
    productId Int: the product ID of the device

    removePeripheralCustomization

    Added in API level 16
    fun removePeripheralCustomization(
        vendorId: Int,
        productId: Int,
        trigger: CustomizationTrigger
    ): Unit

    Removes a peripheral customization for a given vendor ID and product ID.

    This will remove a specific customization on all connected peripheral devices matching the vendor and product ID. If the specified customization does not exist, this method does nothing.
    Requires android.Manifest.permission#MANAGE_PERIPHERAL_CUSTOMIZATION

    Parameters
    vendorId Int: the vendor ID of the device
    productId Int: the product ID of the device
    trigger CustomizationTrigger: the trigger of the customization to remove.
    This value cannot be null.

    unregisterInputDeviceListener

    Added in API level 16
    fun unregisterInputDeviceListener(listener: InputManager.InputDeviceListener!): Unit

    Unregisters an input device listener.

    Parameters
    listener InputManager.InputDeviceListener!: The listener to unregister.

    verifyInputEvent

    Added in API level 30
    fun verifyInputEvent(event: InputEvent): VerifiedInputEvent?

    Verify the details of an android.view.InputEvent that came from the system. If the event did not come from the system, or its details could not be verified, then this will return null. Receiving null does not mean that the event did not originate from the system, just that we were unable to verify it. This can happen for a number of reasons during normal operation.

    Parameters
    event InputEvent: The android.view.InputEvent to check.
    This value cannot be null.
    Return
    VerifiedInputEvent? android.view.VerifiedInputEvent, which is a subset of the provided android.view.InputEvent, or null if the event could not be verified.