使用NativeActivity在Android NDK中进行键盘输入

5

我正在寻找一种从Android NativeActivity获取软键盘输入的方法。

我发现了这个,它提供了一些示例代码来显示软键盘(并且它可以工作),但缺少以下几个点:

  1. 如何在键盘显示后获取键盘的输入。
  2. 如何避免当用户使用返回按钮关闭键盘时应用程序崩溃。

如果有人对这些问题有任何答案,或者更好的是,有一种不需要使用JNI的简单方法来显示键盘,请分享。

先感谢您,

Jaime

2个回答

6

如果有人想知道,您可以通过在分配给结构体android_app的回调中获取AInputEvents来访问键盘输入:

if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY)
{
lint32_t key_val = AKeyEvent_getKeyCode(event);
fprintf("Received key event: %d\n", key_val);

if((key_val >= AKEYCODE_A && key_val <= AKEYCODE_Z))
{
    fprintf("Got a letter");
}
return 0;
}

您还可以通过检查诸如AKEYCODE_BACK或AKEYCODE_VOLUME_UP等键代码来访问其他“硬件”按钮。

0
另一个需要检查的重要事项是按键动作(按下、松开或混合),否则你将同时响应按下和松开事件。以下是如何检查按键松开事件的方法:
if(AKeyEvent_getAction(event) == AKEY_EVENT_ACTION_UP)
    fprintf("key up!");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接