【安卓学习之常见问题】 横屏模式下的键盘的监听问题

█ 【安卓学习之常见问题】 横屏模式下的键盘的监听问题

█ 相关文章:

- 
 ● 【安卓学习之第三方库】库的使用2-jar类库的使用(以dom4j为例)和升级(以极光推送为例)

█ 读前说明:

- 
 ● 本文通过学习别人写demo,学习一些课件,参考一些博客,’学习相关知识,如果涉及侵权请告知
 ● 本文只简单罗列相关的代码实现过程
 ● 涉及到的逻辑以及说明也只是简单介绍,主要当做笔记,了解过程而已

█ 我的问题:

- 
 ● 我的需求是,收银软件系统中,扫码枪的功能实现,直接使用.Android外接USB扫码枪 - 简书的方案,测试都ok;
 ● 随着功能的完善,突然发现,键盘输入有问题,经常测试发现,键盘的弹出和收起无法检测,也就是isInput 一直为false;

SoftKeyBoardListener.setListener(aty, new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {
     @Override
     public void keyBoardShow(int height) {
         Logger.eTag("键盘显示==== 高度" + height + ",,,isInput==" + isInput);
         isInput = true;
     }

     @Override
     public void keyBoardHide(int height) {
         Logger.eTag("键盘隐藏 ====高度" + height);
         isInput = false;
     }
});

█ 发现问题:

- 
 ● 那以前为什么可以用?
 ● 我又开始网上搜索了几个方案,如 Android全局监听键盘弹出/收起事件,支持在任何类_Let’sCoding-CSDN博客Android 轮子哥 软键盘监听类等等:
 经常测试,都可以监听到键盘,但是移植到我的项目中,就不行了
  KeyboardWatcher.with(this).setListener(this);
 
 ● 那以前为什么可以用?别人的项目又可以用?那肯定是和我的项目有关系了?
 ● 历经千测万试,终于发现问题的所在:
  键盘的监听,都是通过键盘弹出占用了原来的界面面积(高度变小了),从而判断键盘是否有没有弹出;那么如果键盘的弹出,是在另一个界面,那么这种方面就无效了:
 ● 收银软件系统都是平板模式,因此我设置的都是横屏模式

android:screenOrientation="landscape"

恰好又在手机的横屏模式下,键盘全屏显示,因此该种方法不可行,这里对app的键盘显示的四种情况进行测试:

1.App在手机上的竖屏模式:键盘未全屏显示;
2.App在平板上的竖屏模式:键盘未全屏显示;
3.App在手机上的横屏模式:键盘全屏显示
4.App在平板上的横屏模式:键盘未全屏;

测试如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

KeyboardWatcher.with(this).setListener(this);

█ 解决问题:

- 
 ● 在键盘全屏模式下,目前没有方法可以检测,本来是想通过如下方法,不过发现一只返回true:

	InputMethodManager inputMethodManager = (InputMethodManager)aty.getSystemService(Context.INPUT_METHOD_SERVICE);
	boolean isInput = inputMethodManager.isActive();

● 那么就只有一种方法,不让键盘全屏:
  比如不能让用户不能再手机的竖屏模式下操作;
  比如设置键盘为非全屏模式;

●  如何设置键盘为非全屏模式?
  通过设置EditText的属性即可实现,参考 Android:横屏时禁止输入法全屏 - 简书

	mEditText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
    <EditText
        android:id="@+id/et"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="平板上的竖屏模式:键盘未全屏"
        android:imeOptions="flagNoExtractUi"/>

█ demo运行:

- 
 ● 待写
  
█ 其他知识:

- 
 ● app被搞了, 怎么写加固?

用三方就行了
自己写加固问题比较多,需要长时间维护和测试
自己写,意味着你要做到第三方卖钱的地步,这成本可高了
第三方的有很多免费的可以用
加固基本原理就是把原来的apk代码加密起来,然后制作一个apk壳子入口,启动的时候动态解密原来的代码,然后load到虚拟内存里运行,所以破解难度较大,需要在动态内存中提取
现在商业的加固工具中还会用到很多技术

● 怎么成为安卓逆向高手?

apk打包原理、混淆原理、加固原理
如何在动态内存中把已经加固应用的代码提取出来
熟悉hook钩子

逆向本质都差不多,去看雪论坛学习!

█ 相关资料:

- 
 ● 1.2018-11-26 Android串口盒子+扫码枪开发 - 简书
 ● 2.2018-05-10 Android外接USB扫码枪 - 简书
 ● 3.2018-11-15 Android全局监听键盘弹出/收起事件,支持在任何类_Let’sCoding-CSDN博客源码地址
 ● 4.2015-12-22 Android 另类方法监听软键盘的弹出收起事件 - csonezp - 博客园
 ● 5.2015-08-24 Android在Fragment中监听软键盘的弹出和关闭_xianjiajun22的专栏-CSDN博客_androidfragment监听软键盘消失
 ● 6.2016-09-08 Android完美检测键盘弹出/收起_yanjunhui2011的专栏-CSDN博客_android键盘收起通知
 ● 7.2019-07-04 Android 轮子哥 软键盘监听类
 ● 8.2018-05-09 Android:横屏时禁止输入法全屏 - 简书
 ● 9. 2014-05-21 Fragment整个生命周期演示_SnailDream-CSDN博客_onviewcreated生命周期
 ● 10. 2014-02-08 AndroidApp监听软键盘按键的三种方式_祝福的博客-CSDN博客_android键盘按键监听
 ● 11. 2018-11-08 Android全屏时软键盘监听 - 简书

转载请注明出处:
https://blog.csdn.net/ljb568838953/article/details/106563485

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值