Как переключить «Использовать физическую клавиатуру»

Я пытаюсь решить то же самое, что и следующие посты:

Как переключить использование физической клавиатуры. и Переключиться с физической на программную клавиатуру

По сути, я хочу переключить нативную опцию с Android, чтобы включить или выключить физическую клавиатуру. Однако я хочу создать эту кнопку с помощью кода.

Ни по одной из этих ссылок нет одного хорошего ответа. Может кто-нибудь помочь мне?


person hsr-eufinity    schedule 05.11.2012    source источник
comment
Я очень удивлюсь, если это возможно.   -  person CommonsWare    schedule 05.11.2012
comment
Дело в том, что у них уже есть возможность сделать это в системе, почему бы не предоставить эту возможность пользователям? :S... Я очень надеюсь, что ты ошибаешься :P   -  person hsr-eufinity    schedule 05.11.2012
comment
Причина, по которой я удивлюсь, если это возможно, заключается в том, что изменение методов ввода (например, с программной клавиатуры A на программную клавиатуру B) невозможно (по соображениям конфиденциальности и безопасности), и я предполагаю, что аппаратная клавиатура будет просто рассматривается еще один метод ввода.   -  person CommonsWare    schedule 05.11.2012
comment
Я понимаю, о чем вы говорите, но не вижу в этом никаких проблем, так как эта кнопка-переключатель контролирует только использование или неиспользование софт-клавиатуры. Если я отключу физическую клавиатуру, но она все еще подключена, я все равно смогу использовать ее для ввода текста, единственное, что произойдет, это то, что ОС также отобразит программную клавиатуру.   -  person hsr-eufinity    schedule 05.11.2012


Ответы (1)


НЕТ, в настоящее время нет способа сделать это программно. Максимум, что мы можем сделать, это определить, когда клавиатура/сканер подключена, и перенаправить пользователя в окно выбора метода ввода, переопределив метод onConfigurationChanged в вашем классе Application:

@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();
  }
}
person desidigitalnomad    schedule 18.06.2014