public class KeyCharacterMap
extends Object
implements Parcelable
java.lang.Object | |
↳ | android.view.KeyCharacterMap |
介绍键盘设备提供的按键及其相关标签。
Nested classes |
|
---|---|
class |
KeyCharacterMap.KeyData 这个类是在API级别11弃用改用 |
class |
KeyCharacterMap.UnavailableException 当无法加载关键字符映射时,由 |
Constants |
|
---|---|
int |
ALPHA 带有所有字母的键盘,也可能是一些数字。 |
int |
BUILT_IN_KEYBOARD 此常数在API级别11中已弃用。不应再使用此常数,因为不能保证设备具有可用于键入文本的内置键盘。 可能没有内置键盘,内置键盘可能是 |
int |
COMBINING_ACCENT |
int |
COMBINING_ACCENT_MASK 使用此值 |
int |
FULL 一个完整的PC式键盘。 |
char |
HEX_INPUT 这个专用字符用于通过十六进制数字触发Unicode字符输入。 |
int |
MODIFIER_BEHAVIOR_CHORDED 修饰键可以用字符键排列。 |
int |
MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED 修饰键可以用字符键排列,或者当单独按下时可以切换到锁定或锁定状态。 |
int |
NUMERIC 数字(12键)键盘。 |
char |
PICKER_DIALOG_INPUT 这个私人使用的字符用于为各种符号提供一个字符选择器。 |
int |
PREDICTIVE 包含所有字母的键盘,但每个键的字母不得超过一个。 |
int |
SPECIAL_FUNCTION 仅用于控制特殊功能而非打字的键盘。 |
int |
VIRTUAL_KEYBOARD 具有完整布局的通用虚拟键盘的ID,可用于合成关键事件。 |
Inherited constants |
---|
From interface android.os.Parcelable
|
Fields |
|
---|---|
public static final Creator<KeyCharacterMap> |
CREATOR |
Public methods |
|
---|---|
int |
describeContents() 描述此Parcelable实例的封送表示中包含的特殊对象的种类。 |
static boolean |
deviceHasKey(int keyCode) 查询框架是否在设备上的任何键盘上存在任何物理键,这些键能够产生给定的键码。 |
static boolean[] |
deviceHasKeys(int[] keyCodes) 查询关于设备上连接的任何键盘上是否存在任何物理键的框架,这些键能够生成给定的键码数组。 |
int |
get(int keyCode, int metaState) 获取由指定的键和元键状态组合生成的Unicode字符。 |
static int |
getDeadChar(int accent, int c) 获得通过将产生死音的口音与产生字符的字符c结合而产生的字符。 |
char |
getDisplayLabel(int keyCode) 获取此键的主要字符。 |
KeyEvent[] |
getEvents(char[] chars) 获取一组KeyEvent对象,如果将其放入输入流中,可能会生成所提供的字符序列。 |
boolean |
getKeyData(int keyCode, KeyCharacterMap.KeyData results) 这种方法在API级别11已被废弃,而不是使用 |
int |
getKeyboardType() 获取键盘类型。 |
char |
getMatch(int keyCode, char[] chars, int metaState) 获取可由指定的密钥代码生成的字符数组中的第一个字符。 |
char |
getMatch(int keyCode, char[] chars) 获取可由指定的密钥代码生成的字符数组中的第一个字符。 |
int |
getModifierBehavior() 获取一个常量,用于描述此键盘的修饰键(如 |
char |
getNumber(int keyCode) 获取与该键关联的数字或符号。 |
boolean |
isPrintingKey(int keyCode) 如果指定的键生成字形,则返回true。 |
static KeyCharacterMap |
load(int deviceId) 使用指定的设备ID加载键盘的关键字符映射。 |
void |
writeToParcel(Parcel out, int flags) 将此对象平铺到一个包裹中。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
int ALPHA
带有所有字母的键盘,也可能是一些数字。
字母键盘直接支持文本输入,但可能具有小型布局的精简布局。 与full keyboard
,某些符号只能使用特殊的屏幕上的字符拾取器访问。 此外,为了提高打字速度和准确性,该框架为字母键盘提供了特殊功能,例如自动大写和切换/锁定切换以及Alt键。
这种类型的键盘通常是为拇指打字而设计的。
常量值:3(0x00000003)
int BUILT_IN_KEYBOARD
此常数在API级别11中已弃用。
不应再使用此常量,因为不能保证设备具有可用于键入文本的内置键盘。 可能没有内置键盘,内置键盘可能是NUMERIC
或SPECIAL_FUNCTION
键盘,也可能是安装了多个键盘,包括外接键盘。 在解释从框架收到的按键时,应用程序应使用收到的KeyEvent
指定的设备ID。 在合成按键以在其他地方传送或翻译来自未知键盘的按键时,应用程序应使用特殊的VIRTUAL_KEYBOARD
设备标识。
设备内置键盘的ID始终为0。
常量值:0(0x00000000)
int COMBINING_ACCENT_MASK
使用此值 get(int, int)
的返回值,以获得“无用键”的重音字符的可打印表示。
常量值:2147483647(0x7fffffff)
int FULL
一个完整的PC式键盘。
全键盘的行为就像一个PC键盘。 所有符号都可以通过按下键盘上的按键来直接访问,而不需要屏幕上的支持或可供选择的功能,如自动大写。
这种类型的键盘通常设计用于完全双手输入。
常量值:4(0x00000004)
int MODIFIER_BEHAVIOR_CHORDED
修饰键可以用字符键排列。
也可以看看:
常量值:0(0x00000000)
int MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED
修饰键可以用字符键排列,或者当单独按下时可以切换到锁定或锁定状态。
也可以看看:
常数值:1(0x00000001)
int NUMERIC
数字(12键)键盘。
数字键盘支持使用多点击方式的文本输入。 可能需要多次点击一个键才能生成所需的字母或符号。
这种类型的键盘通常是为拇指打字而设计的。
常数值:1(0x00000001)
char PICKER_DIALOG_INPUT
这个私人使用的字符用于为各种符号提供一个字符选择器。
常数值:61185(0x0000ef01)
int PREDICTIVE
包含所有字母的键盘,但每个键的字母不得超过一个。
这种类型的键盘通常是为拇指打字而设计的。
常量值:2(0x00000002)
int SPECIAL_FUNCTION
仅用于控制特殊功能而非打字的键盘。
特殊功能键盘仅包含实际上未用于打字的非打印键,如HOME和POWER。
常量值:5(0x00000005)
int VIRTUAL_KEYBOARD
具有完整布局的通用虚拟键盘的ID,可用于合成关键事件。 通常与getEvents(char[])
一起getEvents(char[])
。
常量值:-1(0xffffffff)
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. |
boolean deviceHasKey (int keyCode)
查询框架是否在设备上的任何键盘上存在任何物理键,这些键能够产生给定的键码。
Parameters | |
---|---|
keyCode |
int : The key code to query. |
Returns | |
---|---|
boolean |
True if at least one attached keyboard supports the specified key code. |
boolean[] deviceHasKeys (int[] keyCodes)
查询关于设备上连接的任何键盘上是否存在任何物理键的框架,这些键能够生成给定的键码数组。
Parameters | |
---|---|
keyCodes |
int : The array of key codes to query. |
Returns | |
---|---|
boolean[] |
A new array of the same size as the key codes array whose elements are set to true if at least one attached keyboard supports the corresponding key code at the same index in the key codes array. |
int get (int keyCode, int metaState)
获取由指定的键和元键状态组合生成的Unicode字符。
返回指定元位(请参阅 MetaKeyKeyListener
)处于活动状态时指定键可能产生的Unicode字符。
如果该键不是用于键入Unicode字符的键,则返回0。
如果返回值的位设置为 COMBINING_ACCENT
,则该键是一个“无用键”,应该与另一个键合并实际产生一个字符 - 参见 getDeadChar(int, int)
- 在用 COMBINING_ACCENT_MASK
屏蔽 COMBINING_ACCENT_MASK
。
Parameters | |
---|---|
keyCode |
int : The key code. |
metaState |
int : The meta key modifier state. |
Returns | |
---|---|
int |
The associated character or combining accent, or 0 if none. |
int getDeadChar (int accent, int c)
获得通过将产生死音的口音与产生字符的字符c结合而产生的字符。 例如,getDeadChar('`','e')返回è。 getDeadChar('^','')返回'^',getDeadChar('^','^')返回'^'。
Parameters | |
---|---|
accent |
int : The accent character. eg. '`' |
c |
int : The basic character. |
Returns | |
---|---|
int |
The combined character, or 0 if the characters cannot be combined. |
char getDisplayLabel (int keyCode)
获取此键的主要字符。 换句话说,物理打印在它上面的标签。
Parameters | |
---|---|
keyCode |
int : The key code. |
Returns | |
---|---|
char |
The display label character, or 0 if none (eg. for non-printing keys). |
KeyEvent[] getEvents (char[] chars)
获取一组KeyEvent对象,如果将其放入输入流中,可能会生成所提供的字符序列。 不能保证序列是产生这些事件的唯一方式或者是最佳的。
该功能主要用于仪器和测试目的。 它可能无法将字符映射到键码。 特别是, built-in keyboard
设备ID的关键字符映射可能为空。 考虑使用与virtual keyboard
设备ID相关联的关键字符图。
为了强大的文本输入,请勿使用此功能。 相反,使用KeyEvent
构建一个包含所需字符串的动作代码为ACTION_MULTIPLE
KeyEvent(long, String, int, int)
。
Parameters | |
---|---|
chars |
char : The sequence of characters to generate. |
Returns | |
---|---|
KeyEvent[] |
An array of KeyEvent objects, or null if the given char array can not be generated using the current key character map. |
boolean getKeyData (int keyCode, KeyCharacterMap.KeyData results)
此方法在API级别11中已弃用。
改用getDisplayLabel(int)
, getNumber(int)
或者get(int, int)
。
获取给定密钥代码的字符转换数据。
Parameters | |
---|---|
keyCode |
int : The keyCode to query. |
results |
KeyCharacterMap.KeyData : A KeyCharacterMap.KeyData instance that will be filled with the results. |
Returns | |
---|---|
boolean |
True if the key was mapped. If the key was not mapped, results is not modified. |
int getKeyboardType ()
获取键盘类型。 返回NUMERIC
, PREDICTIVE
, ALPHA
, FULL
或者SPECIAL_FUNCTION
。
不同的键盘类型具有不同的语义。 有关详细信息,请参阅与键盘常量关联的文档。
Returns | |
---|---|
int |
The keyboard type. |
char getMatch (int keyCode, char[] chars, int metaState)
获取可由指定的密钥代码生成的字符数组中的第一个字符。 如果有多个选择,则更喜欢使用指定的元键修饰符状态生成的那个。
Parameters | |
---|---|
keyCode |
int : The key code. |
chars |
char : The array of matching characters to consider. |
metaState |
int : The preferred meta key modifier state. |
Returns | |
---|---|
char |
The matching associated character, or 0 if none. |
char getMatch (int keyCode, char[] chars)
获取可由指定的密钥代码生成的字符数组中的第一个字符。
这是一个方便的功能,返回与 getMatch(keyCode, chars, 0)
相同的值。
Parameters | |
---|---|
keyCode |
int : The keycode. |
chars |
char : The array of matching characters to consider. |
Returns | |
---|---|
char |
The matching associated character, or 0 if none. |
int getModifierBehavior ()
获取一个常量,用于描述此键盘的修饰键(如 KEYCODE_SHIFT_LEFT
。
目前有两种行为可以合并:
当keyboard type
为FULL
或SPECIAL_FUNCTION
和MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED
时,此功能当前返回MODIFIER_BEHAVIOR_CHORDED
。 将来,该功能还可能考虑到全局键盘辅助功能设置,其他用户首选项或新设备功能。
Returns | |
---|---|
int |
The modifier behavior for this keyboard. |
char getNumber (int keyCode)
获取与该键关联的数字或符号。
返回字符值,而不是数字值。 如果密钥不是数字,而是符号,则会重新调用该符号。
此方法旨在支持拨号键盘和键盘上的其他数字或符号条目,其中某些键可用作字母键和符号键的双重功能。 此方法返回与该键相关的数字或符号,而与用户是否按下所需的修饰符无关。
For example, on one particular keyboard the keys on the top QWERTY row generate numbers when ALT is pressed such that ALT-Q maps to '1'. So for that keyboard when getNumber(int)
is called with KEYCODE_Q
it returns '1' so that the user can type numbers without pressing ALT when it makes sense.
Parameters | |
---|---|
keyCode |
int : The key code. |
Returns | |
---|---|
char |
The associated numeric or symbolic character, or 0 if none. |
boolean isPrintingKey (int keyCode)
如果指定的键生成字形,则返回true。
Parameters | |
---|---|
keyCode |
int : The key code. |
Returns | |
---|---|
boolean |
True if the key is a printing key. |
KeyCharacterMap load (int deviceId)
使用指定的设备ID加载键盘的关键字符映射。
Parameters | |
---|---|
deviceId |
int : The device id of the keyboard. |
Returns | |
---|---|
KeyCharacterMap |
The associated key character map. |
Throws | |
---|---|
|
UnavailableException} if the key character map could not be loaded because it was malformed or the default key character map is missing from the system. |
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 . |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 方法finalize
可能采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
finalize
类的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在为一个对象调用了 finalize
方法之后,在Java虚拟机再次确定没有任何方法可以通过任何还没有死的线程访问此对象的方法之前,不会采取进一步的操作,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机永远不会多次调用 finalize
方法。
finalize
方法抛出的任何异常 finalize
导致终止此对象的终止,但会被忽略。
Throws | |
---|---|
Throwable |