Как обнаружить присутствие аппаратной клавиатуры? Есть ли способ определить, установлено ли на устройстве, в котором я сейчас работает, установленная аппаратная клавиатура? Как я могу вообще запросить возможности устройства? Ответ 1 "Флаги, предоставленные getResources(). getConfiguration(). хороший способ проверить, какая клавиатура (если есть) доступна. [1] http://d.android.com/reference/android/content/res/Configuration.html#keyboard Ответ 2 Используйте следующий метод для определения наличия жесткой клавиатуры в любое время: (Насколько мне известно, на мягких клавиатурах отсутствуют функции, проверенные ниже) public static boolean isHardKB(Context ctx) { Configuration cf = ctx.getResources().getConfiguration(); return cf.navigation==Configuration.NAVIGATION_DPAD || cf.navigation==Configuration.NAVIGATION_TRACKBALL || cf.navigation==Configuration.NAVIGATION_WHEEL; } Опционально заблокируйте все изменения клавиатуры во время выполнения для каждого затронутого Действия через AndroidManifest: android:configChanges="keyboard|keyboardHidden|navigation" Но обязательно поддержите вышеуказанное изменение манифеста с (по крайней мере) манекеном onConfigurationChanged() @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Optionally employ 'isHardKB()' } Ответ 3 Чтобы обнаружить общую подключенную qwerty-клавиатуру, используйте это: private boolean isKeyboardConnected() { return getResources().getConfiguration().keyboard == KEYBOARD_QWERTY; }
Ответ 1 "Флаги, предоставленные getResources(). getConfiguration(). хороший способ проверить, какая клавиатура (если есть) доступна. [1] http://d.android.com/reference/android/content/res/Configuration.html#keyboard
Ответ 2 Используйте следующий метод для определения наличия жесткой клавиатуры в любое время: (Насколько мне известно, на мягких клавиатурах отсутствуют функции, проверенные ниже) public static boolean isHardKB(Context ctx) { Configuration cf = ctx.getResources().getConfiguration(); return cf.navigation==Configuration.NAVIGATION_DPAD || cf.navigation==Configuration.NAVIGATION_TRACKBALL || cf.navigation==Configuration.NAVIGATION_WHEEL; } Опционально заблокируйте все изменения клавиатуры во время выполнения для каждого затронутого Действия через AndroidManifest: android:configChanges="keyboard|keyboardHidden|navigation" Но обязательно поддержите вышеуказанное изменение манифеста с (по крайней мере) манекеном onConfigurationChanged() @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Optionally employ 'isHardKB()' }
Ответ 3 Чтобы обнаружить общую подключенную qwerty-клавиатуру, используйте это: private boolean isKeyboardConnected() { return getResources().getConfiguration().keyboard == KEYBOARD_QWERTY; }