最近在做的项目需要用到遥控器,当把遥控器的驱动移植到源码里编译烧录后,发现当焦点移动到任意的EditText时候,输入法的软件盘都不会弹出,在设置的“语言与输入法”里面一看以前“指针与触控板”变成了物理键盘。
通过查看源码发现原来有外设输入设备驱动的时候系统自动转成物理键盘,软键盘不会弹出,所以现在的做法是禁止物理键盘
基于Android4.2.2 修改的地方在\frameworks\base\services\java\com\android\server\wm\WindowManagerServices.java
// Determine whether a hard keyboard is available and enabled.
boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS;
if (hardKeyboardAvailable != mHardKeyboardAvailable) {
mHardKeyboardAvailable = hardKeyboardAvailable;
mHardKeyboardEnabled = hardKeyboardAvailable; //false;
mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
}
修改地方就在蓝色字体部分 关闭的时候 mHardKeyboardEnabled的值为false,这样物理键盘就不可用了