Most visited

Recently visited

Added in API level 1

KeyCharacterMap

public class KeyCharacterMap
extends Object implements Parcelable

java.lang.Object
   ↳ android.view.KeyCharacterMap


介绍键盘设备提供的按键及其相关标签。

Summary

Nested classes

class KeyCharacterMap.KeyData

这个类是在API级别11弃用改用getDisplayLabel(int)getNumber(int)get(int, int)

class KeyCharacterMap.UnavailableException

当无法加载关键字符映射时,由load(int)抛出。

Constants

int ALPHA

带有所有字母的键盘,也可能是一些数字。

int BUILT_IN_KEYBOARD

此常数在API级别11中已弃用。不应再使用此常数,因为不能保证设备具有可用于键入文本的内置键盘。 可能没有内置键盘,内置键盘可能是NUMERICSPECIAL_FUNCTION键盘,或者可能安装了多个键盘,包括外接键盘。 在解释从框架收到的按键时,应用程序应使用收到的KeyEvent指定的设备ID。 在合成按键以在其他地方传送或翻译来自未知键盘的按键时,应用程序应使用特殊的VIRTUAL_KEYBOARD设备标识。

int COMBINING_ACCENT

int COMBINING_ACCENT_MASK

使用此值 get(int, int)的返回值,以获得“死键”的重音字符的可打印表示。

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已被废弃,而不是使用getDisplayLabel(int)getNumber(int)或者get(int, int)

int getKeyboardType()

获取键盘类型。

char getMatch(int keyCode, char[] chars, int metaState)

获取可由指定的密钥代码生成的字符数组中的第一个字符。

char getMatch(int keyCode, char[] chars)

获取可由指定的密钥代码生成的字符数组中的第一个字符。

int getModifierBehavior()

获取一个常量,用于描述此键盘的修饰键(如 KEYCODE_SHIFT_LEFT

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

Constants

ALPHA

Added in API level 1
int ALPHA

带有所有字母的键盘,也可能是一些数字。

字母键盘直接支持文本输入,但可能具有小型布局的精简布局。 full keyboard ,某些符号只能使用特殊的屏幕上的字符拾取器访问。 此外,为了提高打字速度和准确性,该框架为字母键盘提供了特殊功能,例如自动大写和切换/锁定切换以及Alt键。

这种类型的键盘通常是为拇指打字而设计的。

常量值:3(0x00000003)

BUILT_IN_KEYBOARD

Added in API level 1
int BUILT_IN_KEYBOARD

此常数在API级别11中已弃用。
不应再使用此常量,因为不能保证设备具有可用于键入文本的内置键盘。 可能没有内置键盘,内置键盘可能是NUMERICSPECIAL_FUNCTION键盘,也可能是安装了多个键盘,包括外接键盘。 在解释从框架收到的按键时,应用程序应使用收到的KeyEvent指定的设备ID。 在合成按键以在其他地方传送或翻译来自未知键盘的按键时,应用程序应使用特殊的VIRTUAL_KEYBOARD设备标识。

设备内置键盘的ID始终为0。

常量值:0(0x00000000)

COMBINING_ACCENT

Added in API level 1
int COMBINING_ACCENT

常量值:-2147483648(0x80000000)

COMBINING_ACCENT_MASK

Added in API level 1
int COMBINING_ACCENT_MASK

使用此值 get(int, int)的返回值,以获得“无用键”的重音字符的可打印表示。

常量值:2147483647(0x7fffffff)

FULL

Added in API level 11
int FULL

一个完整的PC式键盘。

全键盘的行为就像一个PC键盘。 所有符号都可以通过按下键盘上的按键来直接访问,而不需要屏幕上的支持或可供选择的功能,如自动大写。

这种类型的键盘通常设计用于完全双手输入。

常量值:4(0x00000004)

HEX_INPUT

Added in API level 1
char HEX_INPUT

这个专用字符用于通过十六进制数字触发Unicode字符输入。

常量值:61184(0x0000ef00)

MODIFIER_BEHAVIOR_CHORDED

Added in API level 11
int MODIFIER_BEHAVIOR_CHORDED

修饰键可以用字符键排列。

也可以看看:

常量值:0(0x00000000)

MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED

Added in API level 11
int MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED

修饰键可以用字符键排列,或者当单独按下时可以切换到锁定或锁定状态。

也可以看看:

常数值:1(0x00000001)

NUMERIC

Added in API level 1
int NUMERIC

数字(12键)键盘。

数字键盘支持使用多点击方式的文本输入。 可能需要多次点击一个键才能生成所需的字母或符号。

这种类型的键盘通常是为拇指打字而设计的。

常数值:1(0x00000001)

PICKER_DIALOG_INPUT

Added in API level 1
char PICKER_DIALOG_INPUT

这个私人使用的字符用于为各种符号提供一个字符选择器。

常数值:61185(0x0000ef01)

PREDICTIVE

Added in API level 1
int PREDICTIVE

包含所有字母的键盘,但每个键的字母不得超过一个。

这种类型的键盘通常是为拇指打字而设计的。

常量值:2(0x00000002)

SPECIAL_FUNCTION

Added in API level 11
int SPECIAL_FUNCTION

仅用于控制特殊功能而非打字的键盘。

特殊功能键盘仅包含实际上未用于打字的非打印键,如HOME和POWER。

常量值:5(0x00000005)

VIRTUAL_KEYBOARD

Added in API level 11
int VIRTUAL_KEYBOARD

具有完整布局的通用虚拟键盘的ID,可用于合成关键事件。 通常与getEvents(char[])一起getEvents(char[])

常量值:-1(0xffffffff)

Fields

CREATOR

Added in API level 16
Creator<KeyCharacterMap> CREATOR

Public methods

describeContents

Added in API level 16
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.

deviceHasKey

Added in API level 3
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.

deviceHasKeys

Added in API level 3
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.

get

Added in API level 1
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.

getDeadChar

Added in API level 1
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.

getDisplayLabel

Added in API level 1
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).

getEvents

Added in API level 1
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.

getKeyData

Added in API level 1
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.

getKeyboardType

Added in API level 1
int getKeyboardType ()

获取键盘类型。 返回NUMERICPREDICTIVEALPHAFULL或者SPECIAL_FUNCTION

不同的键盘类型具有不同的语义。 有关详细信息,请参阅与键盘常量关联的文档。

Returns
int The keyboard type.

getMatch

Added in API level 1
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.

getMatch

Added in API level 1
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.

getModifierBehavior

Added in API level 11
int getModifierBehavior ()

获取一个常量,用于描述此键盘的修饰键(如 KEYCODE_SHIFT_LEFT

目前有两种行为可以合并:

  • Chorded behavior: When the modifier key is pressed together with one or more character keys, the keyboard inserts the modified keys and then resets the modifier state when the modifier key is released.
  • Toggled behavior: When the modifier key is pressed and released on its own it first toggles into a latched state. When latched, the modifier will apply to next character key that is pressed and will then reset itself to the initial state. If the modifier is already latched and the modifier key is pressed and release on its own again, then it toggles into a locked state. When locked, the modifier will apply to all subsequent character keys that are pressed until unlocked by pressing the modifier key on its own one more time to reset it to the initial state. Toggled behavior is useful for small profile keyboards designed for thumb typing.

keyboard typeFULLSPECIAL_FUNCTIONMODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED时,此功能当前返回MODIFIER_BEHAVIOR_CHORDED 将来,该功能还可能考虑到全局键盘辅助功能设置,其他用户首选项或新设备功能。

Returns
int The modifier behavior for this keyboard.

也可以看看:

getNumber

Added in API level 1
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.

isPrintingKey

Added in API level 1
boolean isPrintingKey (int keyCode)

如果指定的键生成字形,则返回true。

Parameters
keyCode int: The key code.
Returns
boolean True if the key is a printing key.

load

Added in API level 1
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.

writeToParcel

Added in API level 16
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.

Protected methods

finalize

Added in API level 1
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

Hooray!