Most visited

Recently visited

Added in API level 9

InputDevice

public final class InputDevice
extends Object implements Parcelable

java.lang.Object
   ↳ android.view.InputDevice


介绍特定输入设备的功能。

每个输入设备可以支持多种输入类型。 例如,多功能键盘可以与轨迹板鼠标或其他指点设备一起组成标准键盘的功能。

一些输入设备提供了多个可区分的输入源。 应用程序可以查询框架关于每个不同来源的特征。

作为进一步的皱纹,不同类型的输入源使用不同的坐标系来描述运动事件。 请参阅输入源常量的注释以获取适当的解释。

Summary

Nested classes

class InputDevice.MotionRange

提供有关特定轴MotionEvent的值范围的信息。

Constants

int KEYBOARD_TYPE_ALPHABETIC

键盘支持字母键的补充。

int KEYBOARD_TYPE_NONE

没有键盘。

int KEYBOARD_TYPE_NON_ALPHABETIC

键盘不完全是字母。

int MOTION_RANGE_ORIENTATION

此常数在API级别12中已弃用。请改为使用AXIS_ORIENTATION

int MOTION_RANGE_PRESSURE

此常数在API级别12中已弃用。请改为使用AXIS_PRESSURE

int MOTION_RANGE_SIZE

此常数在API级别12中已弃用。请改为使用AXIS_SIZE

int MOTION_RANGE_TOOL_MAJOR

此常数在API级别12中已弃用。请改为使用AXIS_TOOL_MAJOR

int MOTION_RANGE_TOOL_MINOR

此常数在API级别12中已弃用。请改为使用AXIS_TOOL_MINOR

int MOTION_RANGE_TOUCH_MAJOR

此常数在API级别12中已弃用。请改为使用AXIS_TOUCH_MAJOR

int MOTION_RANGE_TOUCH_MINOR

此常数在API级别12中已弃用。请改为使用AXIS_TOUCH_MINOR

int MOTION_RANGE_X

此常数在API级别12中已弃用。请改为使用AXIS_X

int MOTION_RANGE_Y

此常数在API级别12中已弃用。请改为使用AXIS_Y

int SOURCE_ANY

过滤输入设备以匹配提供任何类型输入源的设备时使用的特殊输入源常量。

int SOURCE_BLUETOOTH_STYLUS

输入设备是蓝牙手写笔。

int SOURCE_CLASS_BUTTON

输入源有按钮或按键。

int SOURCE_CLASS_JOYSTICK

输入源是一个游戏杆。

int SOURCE_CLASS_MASK

输入源类的掩码。

int SOURCE_CLASS_NONE

输入源没有类。

int SOURCE_CLASS_POINTER

输入源是与显示器关联的定点设备。

int SOURCE_CLASS_POSITION

输入源是与显示器无关的绝对定位设备(不像 SOURCE_CLASS_POINTER )。

int SOURCE_CLASS_TRACKBALL

输入源是一个轨迹球导航设备。

int SOURCE_DPAD

输入源是一个DPad。

int SOURCE_GAMEPAD

输入源是一个游戏手柄。

int SOURCE_HDMI

输入源是通过基于HDMI的总线连接的设备。

int SOURCE_JOYSTICK

输入源是一个游戏杆。

int SOURCE_KEYBOARD

输入源是一个键盘。

int SOURCE_MOUSE

输入源是一个鼠标指针设备。

int SOURCE_STYLUS

输入源是触控笔指点设备。

int SOURCE_TOUCHPAD

输入源是与显示器无关的触摸板或数字化仪平板电脑(不像 SOURCE_TOUCHSCREEN )。

int SOURCE_TOUCHSCREEN

输入源是触摸屏指针设备。

int SOURCE_TOUCH_NAVIGATION

输入源是一个触摸设备,其运动应解释为导航事件。

int SOURCE_TRACKBALL

输入源是一个轨迹球。

int SOURCE_UNKNOWN

输入源是未知的。

Inherited constants

From interface android.os.Parcelable

Fields

public static final Creator<InputDevice> CREATOR

Public methods

int describeContents()

描述此Parcelable实例的封送表示中包含的特殊对象的种类。

int getControllerNumber()

给定输入设备的控制器编号。

String getDescriptor()

获取输入设备描述符,这是输入设备的稳定标识符。

static InputDevice getDevice(int id)

获取有关具有指定标识的输入设备的信息。

static int[] getDeviceIds()

获取系统中所有输入设备的ID。

int getId()

获取输入设备ID。

KeyCharacterMap getKeyCharacterMap()

获取与此输入设备关联的关键字符映射。

int getKeyboardType()

获取键盘类型。

InputDevice.MotionRange getMotionRange(int axis)

获取有关特定轴 MotionEvent的值范围的信息。

InputDevice.MotionRange getMotionRange(int axis, int source)

获取有关的值的特定范围内的信息 MotionEvent由设备上的特定源使用轴。

List<InputDevice.MotionRange> getMotionRanges()

获取设备支持的所有轴的范围。

String getName()

获取此输入设备的名称。

int getProductId()

获取给定设备的产品ID(如果可用)。

int getSources()

获取此输入设备支持的输入源作为组合位域。

int getVendorId()

获取给定设备的供应商ID(如果可用)。

Vibrator getVibrator()

获取与设备关联的振动器服务(如果有)。

boolean[] hasKeys(int... keys)

获取设备是否能够生成键码列表。

boolean hasMicrophone()

报告设备是否具有内置麦克风。

boolean isVirtual()

如果设备是虚拟输入设备而不是真实输入设备,则返回true,如虚拟键盘(请参阅 VIRTUAL_KEYBOARD )。

boolean supportsSource(int source)

确定输入设备是否支持给定的一个或多个源。

String toString()

返回对象的字符串表示形式。

void writeToParcel(Parcel out, int flags)

将此对象平铺到一个包裹中。

Inherited methods

From class java.lang.Object
From interface android.os.Parcelable

Constants

KEYBOARD_TYPE_ALPHABETIC

Added in API level 9
int KEYBOARD_TYPE_ALPHABETIC

键盘支持字母键的补充。

常量值:2(0x00000002)

KEYBOARD_TYPE_NONE

Added in API level 9
int KEYBOARD_TYPE_NONE

没有键盘。

常量值:0(0x00000000)

KEYBOARD_TYPE_NON_ALPHABETIC

Added in API level 9
int KEYBOARD_TYPE_NON_ALPHABETIC

键盘不完全是字母。 它可能是一个数字小键盘或各种各样的未被映射为适合文本输入的字母键的按钮。

常数值:1(0x00000001)

MOTION_RANGE_ORIENTATION

Added in API level 9
int MOTION_RANGE_ORIENTATION

此常数在API级别12中已弃用。
改为使用AXIS_ORIENTATION

用于检索 AXIS_ORIENTATION的值范围的 AXIS_ORIENTATION

也可以看看:

常量值:8(0x00000008)

MOTION_RANGE_PRESSURE

Added in API level 9
int MOTION_RANGE_PRESSURE

此常数在API级别12中已弃用。
改为使用AXIS_PRESSURE

用于检索 AXIS_PRESSURE的值范围的 AXIS_PRESSURE

也可以看看:

常量值:2(0x00000002)

MOTION_RANGE_SIZE

Added in API level 9
int MOTION_RANGE_SIZE

此常数在API级别12中已弃用。
改为使用AXIS_SIZE

用于检索 AXIS_SIZE的值范围的 AXIS_SIZE

也可以看看:

常量值:3(0x00000003)

MOTION_RANGE_TOOL_MAJOR

Added in API level 9
int MOTION_RANGE_TOOL_MAJOR

此常数在API级别12中已弃用。
改为使用AXIS_TOOL_MAJOR

用于检索 AXIS_TOOL_MAJOR的值范围的 AXIS_TOOL_MAJOR

也可以看看:

常数值:6(0x00000006)

MOTION_RANGE_TOOL_MINOR

Added in API level 9
int MOTION_RANGE_TOOL_MINOR

此常数在API级别12中已弃用。
改为使用AXIS_TOOL_MINOR

用于检索 AXIS_TOOL_MINOR的值范围的 AXIS_TOOL_MINOR

也可以看看:

常量值:7(0x00000007)

MOTION_RANGE_TOUCH_MAJOR

Added in API level 9
int MOTION_RANGE_TOUCH_MAJOR

此常数在API级别12中已弃用。
改为使用AXIS_TOUCH_MAJOR

用于检索 AXIS_TOUCH_MAJOR的值范围的 AXIS_TOUCH_MAJOR

也可以看看:

常量值:4(0x00000004)

MOTION_RANGE_TOUCH_MINOR

Added in API level 9
int MOTION_RANGE_TOUCH_MINOR

此常数在API级别12中已弃用。
改为使用AXIS_TOUCH_MINOR

用于检索 AXIS_TOUCH_MINOR的值范围的 AXIS_TOUCH_MINOR

也可以看看:

常量值:5(0x00000005)

MOTION_RANGE_X

Added in API level 9
int MOTION_RANGE_X

此常数在API级别12中已弃用。
改为使用AXIS_X

用于检索 AXIS_X的值范围的 AXIS_X

也可以看看:

常量值:0(0x00000000)

MOTION_RANGE_Y

Added in API level 9
int MOTION_RANGE_Y

此常数在API级别12中已弃用。
改为使用AXIS_Y

用于检索 AXIS_Y的值范围的 AXIS_Y

也可以看看:

常数值:1(0x00000001)

SOURCE_ANY

Added in API level 9
int SOURCE_ANY

过滤输入设备以匹配提供任何类型输入源的设备时使用的特殊输入源常量。

常数值:-256(0xffffff00)

SOURCE_BLUETOOTH_STYLUS

Added in API level 23
int SOURCE_BLUETOOTH_STYLUS

输入设备是蓝牙手写笔。

请注意,该位仅表示输入设备能够从蓝牙笔获取输入。 要确定某个触摸事件是否由触控笔产生,请检查每个指针getToolType(int)返回的工具类型。

单点触摸事件可能会使用多种指针与不同的工具类型,例如具有一个工具类型为TOOL_TYPE_FINGER指针的事件和另一个工具类型为TOOL_TYPE_STYLUS指针。 因此,检查每个指针的工具类型非常重要,而不管getSource()报告的来源getSource()

蓝牙手写笔通常从手写笔自身接收其压力和按钮状态信息,并从其他来源获取剩余的信息。 例如,与触摸屏一起使用的蓝牙触笔将从触摸屏获得其接触位置和指针大小,并且可能不如诸如手指的其他工具更准确。

也可以看看:

常量值:49154(0x0000c002)

SOURCE_CLASS_BUTTON

Added in API level 9
int SOURCE_CLASS_BUTTON

输入源有按钮或按键。 例子: SOURCE_KEYBOARDSOURCE_DPAD 一个KeyEvent应该被解释为一个按钮或按键。 使用getKeyCharacterMap()查询设备的按钮和键映射。

常数值:1(0x00000001)

SOURCE_CLASS_JOYSTICK

Added in API level 12
int SOURCE_CLASS_JOYSTICK

输入源是一个游戏杆。 一个MotionEvent应该被解释为绝对的操纵杆运动。 使用getMotionRange(int)查询职位的范围。

常量值:16(0x00000010)

SOURCE_CLASS_MASK

Added in API level 9
int SOURCE_CLASS_MASK

输入源类的掩码。 每个不同的输入源常量都具有一个或多个输入源类位,用于为其输入事件指定所需的解释。

常量值:255(0x000000ff)

SOURCE_CLASS_NONE

Added in API level 18
int SOURCE_CLASS_NONE

输入源没有类。 根据设备类型决定如何处理设备取决于应用程序。

常量值:0(0x00000000)

SOURCE_CLASS_POINTER

Added in API level 9
int SOURCE_CLASS_POINTER

输入源是与显示器关联的定点设备。 例子: SOURCE_TOUCHSCREENSOURCE_MOUSE MotionEvent应根据被解释为在显示单元绝对坐标View层次结构。 当手指触摸显示屏或选择按钮被按下/释放时,指示向下/向上指示。 使用getMotionRange(int)查询指针设备的范围。 某些设备允许在显示区域外触摸,因此有效范围可能比实际显示尺寸稍小或更大。

常量值:2(0x00000002)

SOURCE_CLASS_POSITION

Added in API level 9
int SOURCE_CLASS_POSITION

输入源是与显示器无关的绝对定位设备(不像SOURCE_CLASS_POINTER )。 MotionEvent应该被解释为设备特定表面单位的绝对坐标。 使用getMotionRange(int)来查询职位的范围。

常量值:8(0x00000008)

SOURCE_CLASS_TRACKBALL

Added in API level 9
int SOURCE_CLASS_TRACKBALL

输入源是一个轨迹球导航设备。 示例: SOURCE_TRACKBALL MotionEvent解释为用于导航目的的设备特定单元中的相对移动。 指针向下/向上指示何时按下/释放选择按钮。 使用getMotionRange(int)查询运动范围。

常量值:4(0x00000004)

SOURCE_DPAD

Added in API level 9
int SOURCE_DPAD

输入源是一个DPad。

也可以看看:

常量值:513(0x00000201)

SOURCE_GAMEPAD

Added in API level 12
int SOURCE_GAMEPAD

输入源是一个游戏手柄。 (它也可能是一个SOURCE_JOYSTICK )。

也可以看看:

常量值:1025(0x00000401)

SOURCE_HDMI

Added in API level 21
int SOURCE_HDMI

输入源是通过基于HDMI的总线连接的设备。 钥匙通过HDMI-CEC或MHL信号线进入,并被视为由本地连接的DPAD或键盘生成。

常量值:33554433(0x02000001)

SOURCE_JOYSTICK

Added in API level 12
int SOURCE_JOYSTICK

输入源是一个游戏杆。 (它也可能是SOURCE_GAMEPAD )。

也可以看看:

常量值:16777232(0x01000010)

SOURCE_KEYBOARD

Added in API level 9
int SOURCE_KEYBOARD

输入源是一个键盘。 这个源代表几乎任何有按钮的东西。 使用getKeyboardType()来确定键盘是否有字母键并可用于输入文本。

也可以看看:

常量值:257(0x00000101)

SOURCE_MOUSE

Added in API level 9
int SOURCE_MOUSE

输入源是一个鼠标指针设备。 该代码还用于其他类似鼠标的指点设备,如触控板和轨迹点。

也可以看看:

常量值:8194(0x00002002)

SOURCE_STYLUS

Added in API level 14
int SOURCE_STYLUS

输入源是触控笔指点设备。

请注意,该位仅表示输入设备能够从触控笔获得输入。 要确定某个触摸事件是否由触控笔产生,请检查每个指针getToolType(int)返回的工具类型。

单点触摸事件可能会使用不同工具类型的多个指针,例如具有一个工具类型为TOOL_TYPE_FINGER指针的事件和另一个工具类型为TOOL_TYPE_STYLUS指针。 因此,检查每个指针的工具类型非常重要,无论getSource()报告的源是getSource()

也可以看看:

常量值:16386(0x00004002)

SOURCE_TOUCHPAD

Added in API level 9
int SOURCE_TOUCHPAD

输入源是与显示器无关的触摸板或数字化仪平板电脑(不像 SOURCE_TOUCHSCREEN )。

也可以看看:

常量值:1048584(0x00100008)

SOURCE_TOUCHSCREEN

Added in API level 9
int SOURCE_TOUCHSCREEN

输入源是触摸屏指针设备。

也可以看看:

常量值:4098(0x00001002)

SOURCE_TOUCH_NAVIGATION

Added in API level 18
int SOURCE_TOUCH_NAVIGATION

输入源是一个触摸设备,其运动应解释为导航事件。 例如,向上滑动应该像在D-Pad上按压一样向上聚焦遍历。 向左,向右滑动和向下滑动应该以类似的方式处理。

也可以看看:

常量值:2097152(0x00200000)

SOURCE_TRACKBALL

Added in API level 9
int SOURCE_TRACKBALL

输入源是一个轨迹球。

也可以看看:

常量值:65540(0x00010004)

SOURCE_UNKNOWN

Added in API level 9
int SOURCE_UNKNOWN

输入源是未知的。

常量值:0(0x00000000)

Fields

CREATOR

Added in API level 9
Creator<InputDevice> CREATOR

Public methods

describeContents

Added in API level 9
int describeContents ()

描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象在writeToParcel(Parcel, int)的输出中包含writeToParcel(Parcel, int) ,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR位。

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance.

getControllerNumber

Added in API level 19
int getControllerNumber ()

给定输入设备的控制器编号。

系统初始配置时,每个游戏手柄或游戏杆都有一个唯一的正控制器编号。 此数字可能会因设备断开/重新连接或用户重新分配等事件而发生变化。 数字的任何变化都会触发一个事件,可以通过注册一个InputManager.InputDeviceListener来观察事件。

所有不是游戏手柄或操纵杆的输入设备都将被分配一个控制器号码0。

Returns
int The controller number of the device.

getDescriptor

Added in API level 16
String getDescriptor ()

获取输入设备描述符,这是输入设备的稳定标识符。

输入设备描述符唯一标识输入设备。 其值旨在在系统重新启动时保持不变,即使输入设备在任何时候断开连接,重新连接或重新配置,该值也不应改变。

有可能有多个具有相同输入设备描述符的InputDevice实例。 在单个人体输入设备注册多个描述设备独立功能的InputDevice实例(HID集合)的情况下,可能会发生这种情况,例如同样具有触控板的键盘。 或者,也可能是输入设备无法区分,例如由同一制造商生产的两个键盘。

仅当应用程序需要记住与特定输入设备关联的设置时,才应使用由getDescriptor()返回的输入设备描述符。 对于在运行时引用逻辑InputDevice实例时的所有其他用途,请使用由getId()返回的getId()

Returns
String The input device descriptor.

getDevice

Added in API level 9
InputDevice getDevice (int id)

获取有关具有指定标识的输入设备的信息。

Parameters
id int: The device id.
Returns
InputDevice The input device or null if not found.

getDeviceIds

Added in API level 9
int[] getDeviceIds ()

获取系统中所有输入设备的ID。

Returns
int[] The input device ids.

getId

Added in API level 9
int getId ()

获取输入设备ID。

每个输入设备在系统首次配置时会收到一个唯一的ID。 输入设备ID可能会在系统重新启动或输入设备在任何时候断开连接,重新连接或重新配置时更改。 如果您需要一个稳定的标识符来存储跨引导和重新配置的设备,请使用getDescriptor()

Returns
int The input device id.

getKeyCharacterMap

Added in API level 9
KeyCharacterMap getKeyCharacterMap ()

获取与此输入设备关联的关键字符映射。

Returns
KeyCharacterMap The key character map.

getKeyboardType

Added in API level 9
int getKeyboardType ()

获取键盘类型。

Returns
int The keyboard type.

getMotionRange

Added in API level 9
InputDevice.MotionRange getMotionRange (int axis)

获取有关特定轴MotionEvent的值范围的信息。 如果设备支持多个信号源,则每个信号源的同一轴可能有不同的含义。 返回有关为任何来源找到的第一个轴的信息。 要获取有关特定来源的轴的信息,请使用getMotionRange(int, int)

Parameters
axis int: The axis constant.
Returns
InputDevice.MotionRange The range of values, or null if the requested axis is not supported by the device.

也可以看看:

getMotionRange

Added in API level 12
InputDevice.MotionRange getMotionRange (int axis, 
                int source)

获取有关的值的特定范围内的信息MotionEvent由设备上的特定源使用轴。 如果设备支持多个信号源,则每个信号源的同一轴可能有不同的含义。

Parameters
axis int: The axis constant.
source int: The source for which to return information.
Returns
InputDevice.MotionRange The range of values, or null if the requested axis is not supported by the device.

也可以看看:

getMotionRanges

Added in API level 12
List<InputDevice.MotionRange> getMotionRanges ()

获取设备支持的所有轴的范围。

Returns
List<InputDevice.MotionRange> The motion ranges for the device.

也可以看看:

getName

Added in API level 9
String getName ()

获取此输入设备的名称。

Returns
String The input device name.

getProductId

Added in API level 19
int getProductId ()

获取给定设备的产品ID(如果可用)。

A product id uniquely identifies which product within the address space of a given vendor, identified by the device's vendor id. A value of 0 will be assigned where a product id is not available.

Returns
int The product id of a given device

getSources

Added in API level 9
int getSources ()

获取此输入设备支持的输入源作为组合位域。

Returns
int The supported input sources.

getVendorId

Added in API level 19
int getVendorId ()

获取给定设备的供应商ID(如果可用)。

A vendor id uniquely identifies the company who manufactured the device. A value of 0 will be assigned where a vendor id is not available.

Returns
int The vendor id of a given device

getVibrator

Added in API level 16
Vibrator getVibrator ()

获取与设备关联的振动器服务(如果有)。 即使设备没有振动器,结果也不会为空。 使用hasVibrator()来确定是否存在振动器。 请注意,与设备相关的振动器可能与系统振动器不同。 为了获得系统振动器的实例,请以VIBRATOR_SERVICE作为参数来调用getSystemService(Class )

Returns
Vibrator The vibrator service associated with the device, never null.

hasKeys

Added in API level 19
boolean[] hasKeys (int... keys)

获取设备是否能够生成键码列表。

Parameters
keys int: The list of android keycodes to check for.
Returns
boolean[] 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.

hasMicrophone

Added in API level 23
boolean hasMicrophone ()

报告设备是否具有内置麦克风。

Returns
boolean Whether the device has a built-in microphone.

isVirtual

Added in API level 16
boolean isVirtual ()

如果设备是虚拟输入设备而不是真实输入设备,则返回true,如虚拟键盘(请参阅 VIRTUAL_KEYBOARD )。

虚拟输入设备用于实现系统级功能,用户不应看到或配置虚拟输入设备。

Returns
boolean True if the device is virtual.

也可以看看:

supportsSource

Added in API level 21
boolean supportsSource (int source)

确定输入设备是否支持给定的一个或多个源。

Parameters
source int: The input source or sources to check against. This can be a generic device type such as SOURCE_MOUSE, a more generic device class, such as SOURCE_CLASS_POINTER, or a combination of sources bitwise ORed together.
Returns
boolean Whether the device can produce all of the given sources.

toString

Added in API level 9
String toString ()

返回对象的字符串表示形式。 一般来说, toString方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

writeToParcel

Added in API level 9
void writeToParcel (Parcel out, 
                int flags)

将此对象平铺到一个包裹中。

Parameters
out Parcel: The Parcel in which the object should be written.
flags int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.

Hooray!