Преобразование символа в кодовый ключ

У меня есть символ, и я хочу преобразовать его в ограничения KeyEvent KeyCode. Http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_0

Например, если у меня есть символ «0», я хочу преобразовать его в

Константа ключевого кода: '0'.

Постоянное значение: 7 (0x00000007)

Как указано на странице KeyEvent. Что может быть лучшим способом для этого? Есть ли какая-либо предопределенная функция?

Solutions Collecting From Web of "Преобразование символа в кодовый ключ"

Вот решение, которое я использую для добавления символов в 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 

Нет, вы не можете прочитать символ «0» из ввода и использовать магическую функцию, чтобы преобразовать ее в KeyEvent.KEYCODE_0 … Если вы это сделаете, вам придется написать синтаксический анализатор, который включит прочитанное письмо и вернет эти значения самостоятельно ,

Насколько мне известно, перед чтением персонажа вы должны были захватить вещь в onKey() . В зависимости от количества ключей, которые вам нужно обрабатывать таким образом, виртуальная клавиатура Android может быть вашим единственным вариантом, если этот шаблонный код не делает трюк

 switch(keyPress) { case '0': return KeyEvent.KEYCODE_0; case '1': return ... //... case 'Z': return KeyEvent.KEYCODE_Z; } 

Я все еще новичок в 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 } } } 

У меня возникла идея, когда я читал код метода uiautomator исходном коде рамки uiautomator :

Очень грубое решение, но работает для большинства персонажей.

Не забудьте сделать прописную букву, если текст содержит строчные буквы, вы можете добавить META_SHIFT_ON в этом случае, если вы отправите KeyEvent

  for (int i = 0; i < text.length(); i++) { final char ch = text.charAt(i); try { dispatch(KeyEvent.class.getField("KEYCODE_" + ch).getInt(null)); } catch (Exception e) { Log.e(_TAG, "Unknown keycode for " + ch); } }