使用NativeActivity在Android NDK中输入键盘

时间:2012-12-04 16:42:32

标签: android input keyboard android-ndk native-activity

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

我找到了this,它提供了一些示例代码,说明如何将软件键盘输出(并且可以正常工作),但缺少一些兴趣点:

  1. 如何显示键盘的输入。
  2. 当用户使用后退按钮关闭键盘时,如何避免应用程序崩溃。
  3. 如果有人对这些问题中的任何一个有任何答案,或者更好的是,一种更简单的方法来显示不需要使用JNI的键盘,请分享。

    提前致谢,

    的Jaime

2 个答案:

答案 0 :(得分:4)

如果有人想知道,你可以通常的方式访问键盘输入,在你的回调分配到struct 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等密钥代码来访问其他“硬件”按钮。

答案 1 :(得分:0)

要检查的另一个重要事项是关键操作(按键,按键或混音),否则您将对keyup和keydown做出反应。以下是检查密钥的方法:

if(AKeyEvent_getAction(event) == AKEY_EVENT_ACTION_UP)
    fprintf("key up!");