Как отключить физическую клавиатуру в коде (используйте виртуальную клавиатуру все время)
Вы можете спросить, почему я хочу этого. Вот почему:
Я использовал сканер штрих-кода для экрана входа в приложение. Однако подключение сканера штрих-кода заставит мой планшет использовать физическую клавиатуру (он считает, что сканер является клавиатурой), и это предотвращает появление виртуальной клавиатуры (что я хочу для некоторых других экранов). Я должен вручную щелкнуть по системной панели, чтобы отключить физическую клавиатуру для всплывающей виртуальной клавиатуры.
Итак, есть ли способ отключить физическую клавиатуру в коде или создать виртуальную клавиатуру, даже если подключена какая-то "клавиатура"?
Ответы
Ответ 1
Попробуйте выполнить
Settings
> Language & Input
> В Keyboard and input methods
нажмите Default
. Можно ли отключить или отключить аппаратную/физическую клавиатуру?
Это счетчик интуитивно понятен, но после этого я могу использовать как физическую клавиатуру, так и виртуальную клавиатуру на своем устройстве (Android 4.2)
Ответ 2
Похоже, у вас есть некоторые неприятности в вашем случае. Из Configuration документации по классам.
public int hardKeyboardHidden --- Добавлен в уровень API 3
Флаг, указывающий, имеет ли жесткая клавиатура были скрыты. Это будет установлено на устройстве с механизмом для скрытия клавиатура от пользователя, когда этот механизм закрыт. Один из: HARDKEYBOARDHIDDEN_NO, HARDKEYBOARDHIDDEN_YES.
Вы можете предпринять некоторые действия для этого изменения конфигурации. Но я думаю, что нет возможности отключить физическую клавиатуру в андроиде.
Update
Там mHardKeyboardSwitch
является частным членом, который содержит ссылку на SwitchView
, которая используется для отражения предпочтений аппаратной клавиатуры пользователя. Он не может использоваться для отключения аппаратной клавиатуры, поскольку к нему нельзя получить доступ за пределами этого класса.
Ответ 3
Я думаю, вы можете указать в вашем файле манифеста использовать на softinputmode и обрабатывать изменение конфигурации для клавиатуры | keyboard_hidden
Ответ 4
Да, сканер штрих-кода распознается как физическая клавиатура. Когда клавиатура подключена к устройству, по умолчанию мягкая клавиатура отключена. Чтобы включить его, нам нужно отключить аппаратную клавиатуру с помощью:
Настройки > Язык и ввод > Выберите метод ввода
Имя опции может отличаться от устройства к устройству. Мы сможем использовать сканер вместе с мягкой клавиатурой, даже если мы отключим его.
И нет, в настоящее время нет возможности программно выполнить это. Самое большее, что мы можем сделать, это обнаружить, когда сканер/клавиатура подключена и перенаправить пользователя в окно выбора метода ввода, переопределив метод onConfigurationChanged
следующим образом:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
.showInputMethodPicker();
Toast.makeText(this, "Barcode Scanner detected. Please turn OFF Hardware/Physical keyboard to enable softkeyboard to function.", Toast.LENGTH_LONG).show();
}
}
Ответ 5
Вы можете изменить и перестроить AFS.
Откройте WindowManagerService.java, который находится в mydroid/frameworks/base/services/java/com/android/server/wm
Найдите строки следующим образом:
if (hardKeyboardAvailable != mHardKeyboardAvailable) {
mHardKeyboardAvailable = hardKeyboardAvailable;
mHardKeyboardEnabled = hardKeyboardAvailable;
mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
}
И замените 3 строки на mHardKeyboardEnabled = false;