Ввод с клавиатуры в Android NDK с использованием NativeActivity

Я ищу способ получить ввод с программной клавиатуры от Android NativeActivity.

Я обнаружил, что здесь приведен пример кода, как получить программную клавиатуру (и она работает), но не хватает нескольких интересных моментов:

  1. Как получить ввод с клавиатуры после отображения.
  2. Как избежать сбоя приложения, когда пользователь нажимает кнопку "назад", чтобы закрыть клавиатуру.

Если у кого-то есть ответы на любой из этих вопросов или, что еще лучше, более простой способ показать клавиатуру, не требующую использования 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!");
Другие вопросы по тегам