Ввод с клавиатуры в Android NDK с использованием NativeActivity
Я ищу способ получить ввод с программной клавиатуры от Android NativeActivity.
Я обнаружил, что здесь приведен пример кода, как получить программную клавиатуру (и она работает), но не хватает нескольких интересных моментов:
- Как получить ввод с клавиатуры после отображения.
- Как избежать сбоя приложения, когда пользователь нажимает кнопку "назад", чтобы закрыть клавиатуру.
Если у кого-то есть ответы на любой из этих вопросов или, что еще лучше, более простой способ показать клавиатуру, не требующую использования JNI, пожалуйста, поделитесь.
Заранее спасибо,
Jaime
2 ответа
Если кому-то интересно, вы получаете доступ к вводу с клавиатуры обычным способом, используя обратный вызов, назначенный 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.
Еще одна важная вещь, которую нужно проверить - это действие клавиши (клавиша вверх, клавиша вниз или смешанная), в противном случае вы будете реагировать как на нажатие клавиш, так и на нажатие клавиш. Вот как вы можете проверить наличие ключа:
if(AKeyEvent_getAction(event) == AKEY_EVENT_ACTION_UP)
fprintf("key up!");