【问题标题】:Keyboard input in android NDK using NativeActivityandroid NDK 中使用 NativeActivity 的键盘输入
【发布时间】:2012-11-22 08:38:14
【问题描述】:
我正在寻找一种从 Android NativeActivity 的软件键盘获取输入的方法。
我找到了this,它提供了一些关于如何取出软件键盘的示例代码(并且可以正常工作),但缺少一些兴趣点:
- 如何在显示后获取键盘输入。
- 如何避免用户使用返回按钮关闭键盘时应用崩溃。
如果有人对这些问题中的任何一个有任何答案,或者更好的是显示不需要使用 JNI 的键盘的更简单方法,请分享。
提前致谢,
詹姆
【问题讨论】:
标签:
android
input
keyboard
android-ndk
native-activity
【解决方案1】:
如果有人想知道,您可以通过通常的方式访问键盘输入,在分配给您获取 AInputEvents 的 struct android_app 的回调中:
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 等关键代码来访问其他“硬件”按钮。
【解决方案2】:
另一个需要检查的重要事项是按键动作(向上键、向下键或混合键),否则您将对 keyup 和 keydown 做出反应。以下是检查密钥的方法:
if(AKeyEvent_getAction(event) == AKEY_EVENT_ACTION_UP)
fprintf("key up!");