KeyCharacterMap использовать только из кода

Мне нужно вставить в приложение для Android специальный символ, который не включен ни в один из существующих файлов KeyCharacterMap. Генерация ключевых событий - единственный способ получить какой-либо активный контроль, не зная, какой именно.

Чтобы загрузить эту карту, чтобы сгенерировать KeyEvent из, я должен указать идентификатор карты, но этот идентификатор поступает из InputDevice, а для моего вновь созданного файла kcm такого устройства нет.

Как лучше всего использовать эту раскладку без существующего устройства ввода или подделать устройство ввода?

0
0
198
1

Ответы 1

Я считаю, что с помощью этого решения вы можете сгенерировать специальный ключ:

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

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

Вы можете построить строку [] szStringText с помощью "! / §)". Обычно код преобразует символ. Источник: https://www.codota.com/code/java/classes/android.view.KeyCharacterMap

Я так и сделал, но нужные мне символы не являются частью карт, поэтому getEvents не вернет никакого результата. Мне пришлось использовать локальную раскладку клавиатуры с региональными символами. Мне нужен способ вставки символов без загрузки специальной раскладки клавиатуры.

Droidum 24.10.2018 16:52

Другие вопросы по теме