如何在Android冰淇淋三明治上启用硬件和虚拟键盘

Lap*_*anc 26 android

我正在为一家客户的公司开发Django的库存管理应用程序,并希望使用冰淇淋三明治平板电脑作为最终用户设备.我使用USB条形码阅读器,工作正常.

我的问题是,一旦条形码阅读器插入,它就被认为是真正的键盘,我再也无法访问虚拟键盘了.这对我来说是一个大问题,因为我只使用条形码阅读器对EAN13代码进行编码,并且需要旁边的软键盘......

有没有办法同时启用虚拟键盘和真实键盘?我真的需要帮助....

谢谢 !

Lap*_*anc 18

好吧,我找到了解决问题的方法!(现在不知道关于赏金的内容......)

当您输入文本区域(例如:在导航器上)时,您只需触摸时钟左侧的键盘图标即可.在"使用物理键盘"旁边,您必须选择"否".

我发现即使这样,条形码阅读器仍然是活动的(yessss!),软键盘也会弹出!


des*_*mad 15

是的,条形码扫描仪被检测为物理键盘.当键盘连接到设备时,默认情况下禁用软键盘.要启用它,我们需要通过以下方式关闭硬件键盘:

设置>语言和输入>选择输入法

选项名称可能因设备而异.即使我们将其关闭,我们也可以将扫描仪与软键盘一起使用.

不,目前无法以编程方式完成此任务.我们所能做的最多就是检测连接扫描仪/键盘的时间并将用户重定向到输入法选择窗口,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();
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 11

您可以使用InputMethodManager强制打开软件键盘:

InputMethodManager imm = (InputMethodManager)getContext().getSystemService(
                                              Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Run Code Online (Sandbox Code Playgroud)

  • 其他人不要混淆:如果涉及物理键盘,这不一定能解决问题. (3认同)
  • 如果存在物理键盘,问题仍然存在.像条形码扫描仪.这不是答案. (3认同)

mun*_*ikh 5

试试这个强制打开软键盘:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
Run Code Online (Sandbox Code Playgroud)

要关闭软键盘:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(_pay_box_helper.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)

  • 已连接外接键盘时,上面的代码无效. (2认同)