将 KeyEvent 对象列表转换为字符串

Ran*_*ndy 2 android

我正在开发一个需要能够使用外部 USB 或蓝牙键盘楔的应用程序。然后我捕获 KeyEvents 并根据需要缓存它们(开始/结束标记)。

所以在这一点上,我有需要转换为字符串的 KeyEvent 列表。

所以我需要将这些有序的 KeyEvents 转换为正确的字符串。

List<KeyEvent> events = new ArrayList<KeyEvent>();
String eventString = eventsToString(events); //??????
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ran*_*ndy 5

经过大量研究,这就是我想出的。我使用了一个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);
}
Run Code Online (Sandbox Code Playgroud)