public final class InputDevice
extends Object
implements Parcelable
java.lang.Object | |
↳ | android.view.InputDevice |
介绍特定输入设备的功能。
每个输入设备可以支持多种输入类型。 例如,多功能键盘可以与轨迹板鼠标或其他指点设备一起组成标准键盘的功能。
一些输入设备提供了多个可区分的输入源。 应用程序可以查询框架关于每个不同来源的特征。
作为进一步的皱纹,不同类型的输入源使用不同的坐标系来描述运动事件。 请参阅输入源常量的注释以获取适当的解释。
Nested classes |
|
---|---|
class |
InputDevice.MotionRange 提供有关特定轴 |
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) 获取有关特定轴 |
InputDevice.MotionRange |
getMotionRange(int axis, int source) 获取有关的值的特定范围内的信息 |
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,如虚拟键盘(请参阅 |
boolean |
supportsSource(int source) 确定输入设备是否支持给定的一个或多个源。 |
String |
toString() 返回对象的字符串表示形式。 |
void |
writeToParcel(Parcel out, int flags) 将此对象平铺到一个包裹中。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
int KEYBOARD_TYPE_ALPHABETIC
键盘支持字母键的补充。
常量值:2(0x00000002)
int KEYBOARD_TYPE_NON_ALPHABETIC
键盘不完全是字母。 它可能是一个数字小键盘或各种各样的未被映射为适合文本输入的字母键的按钮。
常数值:1(0x00000001)
int MOTION_RANGE_ORIENTATION
此常数在API级别12中已弃用。
改为使用AXIS_ORIENTATION
。
用于检索 AXIS_ORIENTATION
的值范围的 AXIS_ORIENTATION
。
也可以看看:
常量值:8(0x00000008)
int MOTION_RANGE_PRESSURE
此常数在API级别12中已弃用。
改为使用AXIS_PRESSURE
。
用于检索 AXIS_PRESSURE
的值范围的 AXIS_PRESSURE
。
也可以看看:
常量值:2(0x00000002)
int MOTION_RANGE_SIZE
此常数在API级别12中已弃用。
改为使用AXIS_SIZE
。
用于检索 AXIS_SIZE
的值范围的 AXIS_SIZE
。
也可以看看:
常量值:3(0x00000003)
int MOTION_RANGE_TOOL_MAJOR
此常数在API级别12中已弃用。
改为使用AXIS_TOOL_MAJOR
。
用于检索 AXIS_TOOL_MAJOR
的值范围的 AXIS_TOOL_MAJOR
。
也可以看看:
常数值:6(0x00000006)
int MOTION_RANGE_TOOL_MINOR
此常数在API级别12中已弃用。
改为使用AXIS_TOOL_MINOR
。
用于检索 AXIS_TOOL_MINOR
的值范围的 AXIS_TOOL_MINOR
。
也可以看看:
常量值:7(0x00000007)
int MOTION_RANGE_TOUCH_MAJOR
此常数在API级别12中已弃用。
改为使用AXIS_TOUCH_MAJOR
。
用于检索 AXIS_TOUCH_MAJOR
的值范围的 AXIS_TOUCH_MAJOR
。
也可以看看:
常量值:4(0x00000004)
int MOTION_RANGE_TOUCH_MINOR
此常数在API级别12中已弃用。
改为使用AXIS_TOUCH_MINOR
。
用于检索 AXIS_TOUCH_MINOR
的值范围的 AXIS_TOUCH_MINOR
。
也可以看看:
常量值:5(0x00000005)
int MOTION_RANGE_X
此常数在API级别12中已弃用。
改为使用AXIS_X
。
也可以看看:
常量值:0(0x00000000)
int MOTION_RANGE_Y
此常数在API级别12中已弃用。
改为使用AXIS_Y
。
也可以看看:
常数值:1(0x00000001)
int SOURCE_ANY
过滤输入设备以匹配提供任何类型输入源的设备时使用的特殊输入源常量。
常数值:-256(0xffffff00)
int SOURCE_BLUETOOTH_STYLUS
输入设备是蓝牙手写笔。
请注意,该位仅表示输入设备能够从蓝牙笔获取输入。 要确定某个触摸事件是否由触控笔产生,请检查每个指针getToolType(int)
返回的工具类型。
单点触摸事件可能会使用多种指针与不同的工具类型,例如具有一个工具类型为TOOL_TYPE_FINGER
指针的事件和另一个工具类型为TOOL_TYPE_STYLUS
指针。 因此,检查每个指针的工具类型非常重要,而不管getSource()
报告的来源getSource()
。
蓝牙手写笔通常从手写笔自身接收其压力和按钮状态信息,并从其他来源获取剩余的信息。 例如,与触摸屏一起使用的蓝牙触笔将从触摸屏获得其接触位置和指针大小,并且可能不如诸如手指的其他工具更准确。
常量值:49154(0x0000c002)
int SOURCE_CLASS_BUTTON
输入源有按钮或按键。 例子: SOURCE_KEYBOARD
, SOURCE_DPAD
。 一个KeyEvent
应该被解释为一个按钮或按键。 使用getKeyCharacterMap()
查询设备的按钮和键映射。
常数值:1(0x00000001)
int SOURCE_CLASS_JOYSTICK
输入源是一个游戏杆。 一个MotionEvent
应该被解释为绝对的操纵杆运动。 使用getMotionRange(int)
查询职位的范围。
常量值:16(0x00000010)
int SOURCE_CLASS_MASK
输入源类的掩码。 每个不同的输入源常量都具有一个或多个输入源类位,用于为其输入事件指定所需的解释。
常量值:255(0x000000ff)
int SOURCE_CLASS_NONE
输入源没有类。 根据设备类型决定如何处理设备取决于应用程序。
常量值:0(0x00000000)
int SOURCE_CLASS_POINTER
输入源是与显示器关联的定点设备。 例子: SOURCE_TOUCHSCREEN
, SOURCE_MOUSE
。 甲MotionEvent
应根据被解释为在显示单元绝对坐标View
层次结构。 当手指触摸显示屏或选择按钮被按下/释放时,指示向下/向上指示。 使用getMotionRange(int)
查询指针设备的范围。 某些设备允许在显示区域外触摸,因此有效范围可能比实际显示尺寸稍小或更大。
常量值:2(0x00000002)
int SOURCE_CLASS_POSITION
输入源是与显示器无关的绝对定位设备(不像SOURCE_CLASS_POINTER
)。 MotionEvent
应该被解释为设备特定表面单位的绝对坐标。 使用getMotionRange(int)
来查询职位的范围。
常量值:8(0x00000008)
int SOURCE_CLASS_TRACKBALL
输入源是一个轨迹球导航设备。 示例: SOURCE_TRACKBALL
。 MotionEvent
解释为用于导航目的的设备特定单元中的相对移动。 指针向下/向上指示何时按下/释放选择按钮。 使用getMotionRange(int)
查询运动范围。
常量值:4(0x00000004)
int SOURCE_GAMEPAD
输入源是一个游戏手柄。 (它也可能是一个SOURCE_JOYSTICK
)。
也可以看看:
常量值:1025(0x00000401)
int SOURCE_HDMI
输入源是通过基于HDMI的总线连接的设备。 钥匙通过HDMI-CEC或MHL信号线进入,并被视为由本地连接的DPAD或键盘生成。
常量值:33554433(0x02000001)
int SOURCE_JOYSTICK
输入源是一个游戏杆。 (它也可能是SOURCE_GAMEPAD
)。
也可以看看:
常量值:16777232(0x01000010)
int SOURCE_KEYBOARD
输入源是一个键盘。 这个源代表几乎任何有按钮的东西。 使用getKeyboardType()
来确定键盘是否有字母键并可用于输入文本。
也可以看看:
常量值:257(0x00000101)
int SOURCE_MOUSE
输入源是一个鼠标指针设备。 该代码还用于其他类似鼠标的指点设备,如触控板和轨迹点。
也可以看看:
常量值:8194(0x00002002)
int SOURCE_STYLUS
输入源是触控笔指点设备。
请注意,该位仅表示输入设备能够从触控笔获得输入。 要确定某个触摸事件是否由触控笔产生,请检查每个指针getToolType(int)
返回的工具类型。
单点触摸事件可能会使用不同工具类型的多个指针,例如具有一个工具类型为TOOL_TYPE_FINGER
指针的事件和另一个工具类型为TOOL_TYPE_STYLUS
指针。 因此,检查每个指针的工具类型非常重要,无论getSource()
报告的源是getSource()
。
也可以看看:
常量值:16386(0x00004002)
int SOURCE_TOUCHPAD
输入源是与显示器无关的触摸板或数字化仪平板电脑(不像 SOURCE_TOUCHSCREEN
)。
也可以看看:
常量值:1048584(0x00100008)
int SOURCE_TOUCHSCREEN
输入源是触摸屏指针设备。
也可以看看:
常量值:4098(0x00001002)
int SOURCE_TOUCH_NAVIGATION
输入源是一个触摸设备,其运动应解释为导航事件。 例如,向上滑动应该像在D-Pad上按压一样向上聚焦遍历。 向左,向右滑动和向下滑动应该以类似的方式处理。
也可以看看:
常量值:2097152(0x00200000)
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. |
int getControllerNumber ()
给定输入设备的控制器编号。
系统初始配置时,每个游戏手柄或游戏杆都有一个唯一的正控制器编号。 此数字可能会因设备断开/重新连接或用户重新分配等事件而发生变化。 数字的任何变化都会触发一个事件,可以通过注册一个InputManager.InputDeviceListener
来观察事件。
所有不是游戏手柄或操纵杆的输入设备都将被分配一个控制器号码0。
Returns | |
---|---|
int |
The controller number of the device. |
String getDescriptor ()
获取输入设备描述符,这是输入设备的稳定标识符。
输入设备描述符唯一标识输入设备。 其值旨在在系统重新启动时保持不变,即使输入设备在任何时候断开连接,重新连接或重新配置,该值也不应改变。
有可能有多个具有相同输入设备描述符的InputDevice
实例。 在单个人体输入设备注册多个描述设备独立功能的InputDevice
实例(HID集合)的情况下,可能会发生这种情况,例如同样具有触控板的键盘。 或者,也可能是输入设备无法区分,例如由同一制造商生产的两个键盘。
仅当应用程序需要记住与特定输入设备关联的设置时,才应使用由getDescriptor()
返回的输入设备描述符。 对于在运行时引用逻辑InputDevice
实例时的所有其他用途,请使用由getId()
返回的getId()
。
Returns | |
---|---|
String |
The input device descriptor. |
InputDevice getDevice (int id)
获取有关具有指定标识的输入设备的信息。
Parameters | |
---|---|
id |
int : The device id. |
Returns | |
---|---|
InputDevice |
The input device or null if not found. |
int[] getDeviceIds ()
获取系统中所有输入设备的ID。
Returns | |
---|---|
int[] |
The input device ids. |
int getId ()
获取输入设备ID。
每个输入设备在系统首次配置时会收到一个唯一的ID。 输入设备ID可能会在系统重新启动或输入设备在任何时候断开连接,重新连接或重新配置时更改。 如果您需要一个稳定的标识符来存储跨引导和重新配置的设备,请使用getDescriptor()
。
Returns | |
---|---|
int |
The input device id. |
KeyCharacterMap getKeyCharacterMap ()
获取与此输入设备关联的关键字符映射。
Returns | |
---|---|
KeyCharacterMap |
The key character map. |
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. |
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. |
List<InputDevice.MotionRange> getMotionRanges ()
获取设备支持的所有轴的范围。
Returns | |
---|---|
List<InputDevice.MotionRange> |
The motion ranges for the device. |
也可以看看:
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 |
int getSources ()
获取此输入设备支持的输入源作为组合位域。
Returns | |
---|---|
int |
The supported input sources. |
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 |
Vibrator getVibrator ()
获取与设备关联的振动器服务(如果有)。 即使设备没有振动器,结果也不会为空。 使用hasVibrator()
来确定是否存在振动器。 请注意,与设备相关的振动器可能与系统振动器不同。 为了获得系统振动器的实例,请以VIBRATOR_SERVICE
作为参数来调用getSystemService(Class
。
Returns | |
---|---|
Vibrator |
The vibrator service associated with the device, never null. |
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. |
boolean hasMicrophone ()
报告设备是否具有内置麦克风。
Returns | |
---|---|
boolean |
Whether the device has a built-in microphone. |
boolean isVirtual ()
如果设备是虚拟输入设备而不是真实输入设备,则返回true,如虚拟键盘(请参阅 VIRTUAL_KEYBOARD
)。
虚拟输入设备用于实现系统级功能,用户不应看到或配置虚拟输入设备。
Returns | |
---|---|
boolean |
True if the device is virtual. |
也可以看看:
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. |
String toString ()
返回对象的字符串表示形式。 一般来说, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
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 . |