700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Android系统】虚拟按键 平板设备中重叠的问题

【Android系统】虚拟按键 平板设备中重叠的问题

时间:2019-09-21 16:04:26

相关推荐

【Android系统】虚拟按键 平板设备中重叠的问题

问题背景:做的机器是平板,屏是横屏(分辨率是width > height, 1280*720 这种)。Android 9源码编译的vbmeta, vendor, system下进去,虚拟按键(back,home,app_swith)从左到右重叠,显示在屏幕右侧。要求:平板设备,肯定是要显示在底部,不能显示在右侧。不正常现象如下图:

现象分析,因为我主要是搞驱动的,framework里面很多也看不懂。只能从现象上去分析解决问题,下面是心路历程:1.最开始发现Android界面app图标特别大,后面就发现是DPI (像素密度) 太大导致的。(adb shell wm density 可以设置dpi)2.进行了设置不同dpi尝试,分别a. adb shell wm density 100b. adb shell wm density 160c. adb shell wm density 320发现a虚拟按键显示在屏幕下方b虚拟按键显示在右侧,重叠,显示较小c虚拟按键显示在右侧,重叠,显示较大3.结论:像素密度导致了虚拟按键的位置和大小不同。 (后面发现这个确实在framework中有软件代码)

后面就是找了下代码,百度搜了下虚拟按键代码位置。代码路径:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java里函数 setInitialDisplaySize()然后打了一些log:1. 首先确认了下,底层驱动穿上来的屏幕width和height2. 尝试修改了这段程序里的几个旋转角度 (试了修改mSeascapeRotation, 虚拟按键方向没变化)(修改这个原因是由于adb shell wm density设置时,发现这个变化了,反过来想可能相关)

3.同时发现这个变化了:在虚拟按键显示在底部时,这个变量为false在虚拟按键显示在右侧时,这个变量为true所以我这里直接将它设置为false,后面就显示正常了。 (但是我的机器,触摸屏触摸不到)所以我又遇到一个问题:是TP固件的问题导致底部不能触摸,还是通过修改虚拟按键ui宽度解决这个问题(自己想的肯定是TP固件没调好,但是开发中间阶段,肯定是虚拟按键能使用就行了)(此时adb shell wm density 260, 虚拟按键变大了,可以使用了,但是客户的app是160dpi开发的。。。😓😓,后面应该还是要调试tp固件)

先改下虚拟按键高度,保证能用吧,tp效果后面再调试修改位置,文件目录:

再打点log,主要是计算shortSizeDp和longSizeDp两句话里面的

修改好了!!end~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。