Firefly开源社区

打印 上一主题 下一主题

[Android] 连接有物理键盘时,如何不要让弹出软键盘

107

积分

0

威望

0

贡献

技术小白

积分
107

连接有物理键盘时,如何不要让弹出软键盘

发表于 2020-8-18 20:55:52      浏览:6117 | 回复:0        打印      只看该作者   [复制链接] 楼主
硬件:AIO-3399J,源码“Android 7.1 SDK源码(industry版本)”,下载时间2020-7-13。

  1. public class InputMethodService extends AbstractInputMethodService {
  2.     public boolean onEvaluateInputViewShown() {
  3.         if (mSettingsObserver == null) {
  4.             Log.w(TAG, "onEvaluateInputViewShown: mSettingsObserver must not be null here.");
  5.             return false;
  6.         }
  7.         if (mSettingsObserver.shouldShowImeWithHardKeyboard()) {
  8.             return true;
  9.         }
  10.         Configuration config = getResources().getConfiguration();
  11.         return config.keyboard == Configuration.KEYBOARD_NOKEYS
  12.                 || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES;
  13.     }
  14. }
复制代码

跟踪下来,连接有物理键盘时,config.keyboard的确是Configuration.KEYBOARD_QWERTY,但该函数要返回false,还须要同时满足两个条件,一是mSettingsObserver.shouldShowImeWithHardKeyboard()返回false,二是config.hardKeyboardHidden不是Configuration.HARDKEYBOARDHIDDEN_YES。我试下来,这两个条件都没有满足。

第一个条件:mSettingsObserver.shouldShowImeWithHardKeyboard()。会调用Settings.Secure.getInt(mService.getContentResolver(), Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0),得到的值是ShowImeWithHardKeyboardType.TRUE,也就是说函数返回true。

第二个条件:config.hardKeyboardHidden值是Configuration.HARDKEYBOARDHIDDEN_YES。对这问题我对照之前下过的“Android 7.1 SDK源码”(非industry版本),发现两个版本在computeScreenConfigurationLocked时赋给config.hardKeyboardHidden值不一样。以下是industry版本,设的值是Configuration.HARDKEYBOARDHIDDEN_YES。
  1. void computeScreenConfigurationLocked(Configuration config) {
  2.   ....
  3.   // Let the policy update hidden states.
  4.   config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
  5.   config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
  6.   config.navigationHidden = Configuration.NAVIGATIONHIDDEN_NO;
  7.   mPolicy.adjustConfigurationLw(config, keyboardPresence, navigationPresence);
  8. }
复制代码

而在非industry版本,设置的值是Configuration.HARDKEYBOARDHIDDEN_NO。

——“Android 7.1 SDK源码(industry版本)”下,连接有物理键盘时,如何不要让弹出软键盘?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表