前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分辨率获取异常-Android更新引发的小坑

分辨率获取异常-Android更新引发的小坑

作者头像
用户5521279
发布2019-06-02 19:50:25
1.2K0
发布2019-06-02 19:50:25
举报
文章被收录于专栏:搜狗测试搜狗测试

作为一个测试工程师,经常被一些难以复现的bug困扰很久,理论上不可能出现,但线上确实又有很多用户反馈,比如小编前段时间碰到了一个比较有意思的bug,涉及到一些Android版本变更引发的问题,在这里和大家分享一下:

背景: 最近几个月我们经常收到用户反馈,输入法在不同设备上,英文26键键盘长的不一样,有的有一行数字,有的没有。 其实这里涉及到我们的英文26键数字键盘的开关下发策略: 只针对手机分辨率等于1080*1920的用户,下发网络开关打开英文26键数字键盘(详细背景这里不阐述了)。

处理过程: 策略下发时,我们抽查了几台不同分辨率的手机进行测试,验证没有问题,结果上线后,断断续续的会收到一些用户反馈,也没发现什么规律; 最近我们将线上反馈进行了一些整理,发现华为手机用户较多,于是用公司的几台1080P的华为手机试了一下,发现确实有的生效,有的不生效,emmmmm,这就很有意思了。 考虑到分辨率策略问题,赶紧联系开发同学一起打断点检查,发现不生效的设备我们拿到的分辨率是1080*1792!!!

看到这个值时我们才恍然大悟,一定是虚拟导航栏的缘故,这个差值的高度刚好吻合虚拟导航栏的高度,回头检查出问题的手机都是启用了虚拟导航栏,导致我们获取到的分辨率与原始标准分辨率不一样了。

那么问题来了,为什么我们会获取到错误的分辨率,而不是手机的一个固定分辨率值呢?

经过调查,Android4.2之前是没有虚拟导航栏这个概念的,当时的java函数也不会考虑到这一点,在Android4.2之后才引入了虚拟导航栏,同时采用了一套新的函数来获取真实分辨率。而我们输入法目前仍然使用的是Android4.2之前的方法,详细如下:

我们使用的获取屏幕分辨率的方法是:

用这个方法获取到的屏幕分辨率是会被虚拟导航栏吃掉高度的。 经过网上查询了解到Google已经更新了获取分辨率的方法,使用新方法,无论手机虚拟导航栏是否隐藏都可以正确的获取分辨率。

结论及反思: 问题原因找到了,同步给开发更换方法。 通过这个问题,我们不得不进行思考,虚拟导航键会影响屏幕分辨率获取,那么例如近些年增加的横竖屏分屏模式、异形屏、AB屏、大A屏等等影响因素会不会再次导致我们获取错误参数呢?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档