Подтвердить что ты не робот

Как отключить физическую клавиатуру в коде (используйте виртуальную клавиатуру все время)

Вы можете спросить, почему я хочу этого. Вот почему:

Я использовал сканер штрих-кода для экрана входа в приложение. Однако подключение сканера штрих-кода заставит мой планшет использовать физическую клавиатуру (он считает, что сканер является клавиатурой), и это предотвращает появление виртуальной клавиатуры (что я хочу для некоторых других экранов). Я должен вручную щелкнуть по системной панели, чтобы отключить физическую клавиатуру для всплывающей виртуальной клавиатуры.

Итак, есть ли способ отключить физическую клавиатуру в коде или создать виртуальную клавиатуру, даже если подключена какая-то "клавиатура"?

4b9b3361

Ответ 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;