android4.0 物理键盘与软键盘同时使用修改
来源:互联网 发布:图书管理系统php 编辑:程序博客网 时间:2024/06/05 18:28
用android4.0发现插了扫描枪之后软键盘不出现了,最开始以为是应用软件设置有问题,改了下发现不是,上网搜所了几个说修改
参考:http://blog.csdn.net/DrakeBlue/article/details/39049495
frameworks/base/services/java/com/android/server/wm/WindowManagerService.java
关键代码:行6618 computeScreenConfigurationLocked()方法中
boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS; if (hardKeyboardAvailable != mHardKeyboardAvailable) { mHardKeyboardAvailable = hardKeyboardAvailable; mHardKeyboardEnabled = !hardKeyboardAvailable; mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); } if (!mHardKeyboardEnabled) { config.keyboard = Configuration.KEYBOARD_NOKEYS; }将mHardKeyboardEnabled直接改成false
这样改软键盘是能用但是物理键盘是用不了的
还是要自己跟踪代码frameworks/base/core/java/android/inputmethodservice/InputMethodService.java中
onConfigurationChanged方法最后几行代码
<span style="font-size:18px;">// If user uses hard keyboard, IME button should always be shown. boolean showing = onEvaluateInputViewShown(); mImm.setImeWindowStatus(mToken, IME_ACTIVE | (showing ? IME_VISIBLE : 0), mBackDisposition);</span>我估计这里就是隐藏软键盘的地方 接着找onEvaluateInputViewShown方法
public boolean onEvaluateInputViewShown() { Configuration config = getResources().getConfiguration(); return config.keyboard == Configuration.KEYBOARD_NOKEYS || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES; }直接将这个返回值改成true发现软键盘与物理键盘能同时使用 想了下怕有问题 还是接着往下找
frameworks/base/service/input/InputReader.cpp中函数
void InputReader::updateInputConfigurationLocked()
中有这样几行代码:
if ((sources & AINPUT_SOURCE_TOUCHSCREEN) == AINPUT_SOURCE_TOUCHSCREEN) { touchScreenConfig = InputConfiguration::TOUCHSCREEN_FINGER; } if ((sources & AINPUT_SOURCE_TRACKBALL) == AINPUT_SOURCE_TRACKBALL) { navigationConfig = InputConfiguration::NAVIGATION_TRACKBALL; } else if ((sources & AINPUT_SOURCE_DPAD) == AINPUT_SOURCE_DPAD) { navigationConfig = InputConfiguration::NAVIGATION_DPAD; } if (deviceInfo.getKeyboardType() == AINPUT_KEYBOARD_TYPE_ALPHABETIC) { keyboardConfig = InputConfiguration::KEYBOARD_QWERTY; }直接将最后一个修改如下
if (deviceInfo.getKeyboardType() == AINPUT_KEYBOARD_TYPE_ALPHABETIC) { //keyboardConfig = InputConfiguration::KEYBOARD_QWERTY;//modify by hclydao }直接注释掉
经初步测试软键盘与硬键盘能同时使用,不知道这样修改会不会有问题.
0 0
- android4.0 物理键盘与软键盘同时使用修改
- android5.0 物理键盘与软键盘同时使用修改
- android5.0 物理键盘与软键盘同时使用修改
- 通过settings.db自定义Android系统默认设置:SHOW_IME_WITH_HARD_KEYBOARD 默认物理键盘与软键盘同时使用
- 解决Android 5.1物理键盘与软键盘的同时使用
- 解决Android 5.1物理键盘与软键盘的同时使用
- Android插入物理键盘的同时显示软键盘
- Android物理键盘与虚拟键盘同时使用
- Android4.1屏蔽物理键盘
- QT 软键盘,物理键盘的完美实现
- QT 软键盘,物理键盘的完美实现
- android4.0.4 外接物理键盘设置
- Android在外接物理键盘时,如何强制调用系统软键盘
- Android 如何在插入外接物理键盘时还能显示软键盘
- android中AlertDialog包含EditText时弹出键盘(dia和软键盘同时弹出)
- S5PV310 Android4.0 物理按键
- S5PV310 Android4.0 物理按键
- Android 禁止使用物理键盘
- 1031. Hello World for U (20)
- cmake形式的开源软件的交叉编译方法
- IOS创建的pch文件
- SNMP从入门到开发:基础篇
- Android中View绘制流程以及invalidate()等相关方法分析
- android4.0 物理键盘与软键盘同时使用修改
- IOS开发使用极光平台进行远程推送
- 菜鸟学shell编程
- tcgetattr函数与tcsetattr函数控制终端
- 嵌入式设备远程登录pc的三种方式
- swfupload的参数配置及属性说明
- hadoop 的MapReduce原理与心得!!!
- Xcode6.2正式版 下载地址(网盘)
- Linux下静态链接库与动态链接库的区别