将字符转换为键码

dea*_*mer 11 android

我有一个字符,我想将其转换为KeyEvent KeyCode约束http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_0

就像我有一个'0'字符,我想转换成

密钥代码常量:'0'密钥.

常数值:7(0x00000007)

在KeyEvent页面中指定.这可能是最好的方法吗?有没有预定义的功能呢?

小智 9

这是我用来将chars放在webview中的解决方案:

char[] szRes = szStringText.toCharArray(); // Convert String to Char array

KeyCharacterMap CharMap;
if(Build.VERSION.SDK_INT >= 11) // My soft runs until API 5
    CharMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD);
else
    CharMap = KeyCharacterMap.load(KeyCharacterMap.ALPHA);

KeyEvent[] events = CharMap.getEvents(szRes);

for(int i=0; i<events.length; i++)
    MainWebView.dispatchKeyEvent(events[i]); // MainWebView is webview
Run Code Online (Sandbox Code Playgroud)


Hie*_*ieu 7

我对 Java/Android 还很陌生,所以我的答案可能无法开箱即用,但您可能仍然明白这个想法。

import android.view.KeyCharacterMap;
import android.view.KeyEvent;    
...
public class Sample {
    ...
    public boolean convertStringToKeyCode(String text) {

        KeyCharacterMap mKeyCharacterMap = 
            KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD);

        KeyEvent[] events = mKeyCharacterMap.getEvents(text.toCharArray());

        for (KeyEvent event2 : events) {
            // We get key events for both UP and DOWN actions,
            // so we may just need one.
            if (event2.getAction() == 0) {
                int keycode = event2.getKeyCode();
                // Do some work
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

当我阅读框架源代码sendText中的方法代码时,我得到了这个想法:uiautomator


Sha*_*ark 2

不,您不能从输入中读取字符“0”并使用神奇的函数将其转换为 KeyEvent.KEYCODE_0 ...如果这样做,您将必须编写一个解析器来打开读取的字母并自己返回这些值。

据我所知,在阅读这个角色之前,您应该已经捕获了onKey(). 根据您需要以这种方式处理的按键数量,如果此样板代码无法解决问题,虚拟 Android 键盘可能是您唯一的选择

switch(keyPress)
{
  case '0': return KeyEvent.KEYCODE_0;
  case '1': return ...
  //...
  case 'Z': return KeyEvent.KEYCODE_Z;
}
Run Code Online (Sandbox Code Playgroud)