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

如何在Android冰淇淋三明治上同时启用硬件和虚拟键盘,android,Android,我正在用Django为一家客户的公司开发一个库存管理应用程序,并希望使用冰淇淋三明治平板电脑作为最终用户设备。 我使用一个USB条形码阅读器,工作正常 我的问题是,一旦插入条形码阅读器,它就会被识别为一个真正的键盘,我就不能再访问虚拟键盘了。这对我来说是个大问题,因为我只使用条形码阅读器来编码EAN13代码,并且需要旁边的软键盘 有没有办法同时启用虚拟键盘和真实键盘? 在这方面我真的需要帮助 谢谢大家! 您可以使用InputMethodManager强制打开软件键盘: InputMethodMa

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

我的问题是,一旦插入条形码阅读器,它就会被识别为一个真正的键盘,我就不能再访问虚拟键盘了。这对我来说是个大问题,因为我只使用条形码阅读器来编码EAN13代码,并且需要旁边的软键盘

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


谢谢大家!

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

InputMethodManager imm = (InputMethodManager)getContext().getSystemService(
                                              Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

我找到了解决问题的办法!(现在不知道该怎么处理赏金了…)

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


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

尝试此操作以强制打开软键盘:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(_pay_box_helper.getWindowToken(), 0);
要关闭软键盘,请执行以下操作:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(_pay_box_helper.getWindowToken(), 0);

无法使用常用键盘,因为图标未显示。您需要安装另一个键盘应用程序或键盘切换器应用程序(即使您没有安装任何其他键盘,它也只会显示图标)

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

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

选项名称可能因设备而异。我们将能够使用扫描仪和软键盘,即使我们关闭它

不,目前没有办法通过编程实现这一点。我们最多只能检测扫描仪/键盘何时连接,并通过覆盖
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();
  }
}

我不是一个程序员,但有相同的问题都在这里张贴。在网上搜索了很多之后,我通过谷歌Play商店找到了一个键盘,它似乎对我们很有用(BT扫描器&同时想要软键盘)。克劳斯·魏德纳称之为黑客键盘



只需使用黑客键盘,进入设置-->向下滚动至“语言和输入”-->黑客键盘-->进入-->配置-->向下滚动至“输入模式设置”-->确保选中“始终显示软键盘”。即使扫描仪通过蓝牙连接,软键盘也将保持不动。断开和重新连接蓝牙扫描仪时也能正常工作。

您好,谢谢您的回答,但我不是在Android上开发我的应用程序,而是在Django上,在外部服务器上开发。我需要的是调整Android配置来实现这一点……那么你是通过浏览器访问它的吗?这样其他人就不会感到困惑:如果涉及到物理键盘,这不一定能解决问题。如果存在物理键盘,问题仍然存在。就像条形码扫描器。这不是答案。这不是问题的答案谢谢Maverick,如果我正在开发android应用程序,这将是一个很好的答案,但正如我前面所说的,我只是使用平板电脑通过浏览器访问django应用程序。顺便说一句,我自己找到了解决方案。当已连接外部键盘时,上述代码不起作用。在一个屏幕上有两个edittext,并且我希望在一个edittext上显示软键盘,在另一个上隐藏,这是否可能。因为关注第二版文本,所以想要扫描条形码。只是为了澄清平板电脑上的棒棒糖:安装一些第三方键盘。从顶部向下滑动将允许您直接进入语言和输入设置。选择所需的键盘(不必是第三方键盘),现在即使连接了物理键盘,软键盘也应显示。在v4.1.1版的平板电脑(宝丽来)上,此选项不起作用:(此选项起作用:系统设置、语言和输入、默认值(在“键盘和输入方法”下),关闭硬件物理键盘。该设置不会在重新启动或HW断开/重新连接时生效!!但是,我们是否可以通过编程将其切换为“否”?保存以备以后使用,我将不得不在以后的某个时间解决完全相同的问题:)嗨。。你对这个问题有什么解决办法吗。。我也需要手动输入条形码,也需要从条形码扫描仪输入。。但我的android版本4.2.2不允许我在连接条形码扫描仪时打开屏幕键盘。@kumarSudheer你已经找到办法了吗??我有完全相同的问题,有一个带有物理输入设备的android设备,当插入物理设备时,软键盘总是隐藏在这里。这是我的解决方案(在onConfiguration中没有…但在onResume和onFocus中)。在Application类中给出了onConfiguration更改事件。通过这种方式,我们可以在app.aaRBiyecH中的任何位置检测到插入的扫描仪。如果扫描仪已经(始终)插入,这在常见情况下不起作用。在连接扫描仪之前,您必须关闭硬件键盘的设置。您可以同时使用软键盘和扫描仪,直到卸下并连接正确的扫描仪。我说的只是检查/询问功能的调用点。