我正在开发一个需要能够使用外部 USB 或蓝牙键盘楔的应用程序。然后,我捕获 KeyEvent 并根据需要缓存它们(开始/结束标记)。
因此,此时我有需要将其转换为字符串的 KeyEvent 列表。
所以我需要将这些有序的 KeyEvent 转换为正确的字符串。
List<KeyEvent> events = new ArrayList<KeyEvent>();
String eventString = eventsToString(events); //??????
有任何想法吗?
经过大量研究,这就是我想到的。我用了一个KeyListener
它接受关键事件。然后它附加到Editable
基于关键事件(考虑轮班等)。下面的代码将简单地回显随着关键事件的到来而不断增长的字符串。
KeyListener tkl = new TextKeyListener(Capitalize.NONE, false);
Editable et = Editable.Factory.getInstance().newEditable("");
View.OnKeyListener key = new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
tkl.onKeyDown(null, et, keyCode, event);
else if (event.getAction() == KeyEvent.ACTION_UP)
tkl.onKeyUp(null, et, keyCode, event);
else
tkl.onKeyOther(null, et, event); //NOTE: My devices never used KeyEvent.ACTION_MULTIPLE so I don't know if it should get fired here or with the key down event.
Log.i(("Test: " + et.toString());
}
};
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (key.onKey(null, event.getKeyCode(), event))
return true;
else
return super.dispatchKeyEvent(event);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)