腾讯优测优分享 | 适配路上,避免掉入“扫码调用相机”的坑
Posted 腾讯优测
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了腾讯优测优分享 | 适配路上,避免掉入“扫码调用相机”的坑相关的知识,希望对你有一定的参考价值。
最近做的项目有幸用到了腾讯优测云测试平台,做android开发最大的问题应该就是适配了。曾经有这么一个段子:某个做Android应用的创业公司破产了,不是因为技术不行,而是因为他们没钱买机器来做适配了。
当然这仅仅是一个段子,但Android的碎片化确实是一个很严重的问题。由于Android系统是开源的,各个厂商可能都会有自己定制的ROM。
那么问题就来了,我们做的APP需要针对这些不同的ROM来适配,保证APP能够在不同的ROM下正常使用。Android手机和ROM那么多,我们不可能把所有的手机都买回来做适配。
那有没有什么快捷的途径可以进行适配呢?
有了腾讯优测,从此适配变得如此简单。咦,我怎么好像在给这个产品做广告呢?随便打赏点就好了~
下面我把项目中扫描出来的跟相机有关的问题跟大家分享一下,避免再次入坑。
项目中有一个功能点是扫描二维码,我们使用了开源的zxing来实现这个功能。本来这是一个很简单的流程,调用相机,对焦扫描二维码,对二维码中的信息进行解码。
但是问题来了,各个厂商的相机参数不同,屏幕尺寸的比例又不统一,如果设置的previewSize参数不对,调用相机的时候会发现画面有拉伸,有时候还会出现花屏的现象。
那么如何根据屏幕的尺寸来设置正确的相机预览尺寸呢?
好在我们可以获取到相机所支持的所有预览尺寸,以及屏幕的宽度和高度。
通过如下代码可以获取到相机所支持的所有预览尺寸:
Camera.Parameters parameters = camera.getParameters();
List sizes = parameters.getSupportedPreviewSizes();
获取到预览尺寸列表之后,再获取屏幕的尺寸:
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
其中,displayMetrics对象包含了屏幕的宽和高。
我们可以根据屏幕的尺寸,从相机所支持的预览尺寸列表中,选择最合适的previewSize来设置camera的参数。如何选择最合适的预览尺寸,可以参考官方demo中的做法。
这里的代码不能格式化,只好贴截图了:
我这里说到的坑只是适配问题的冰山一角,后续如果有更多的填坑经历,我再与大家一起分享~
文/腾讯 刘宁
腾讯优测是专业的移动云测试平台,为应用、游戏、H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供自动化兼容性测试、云手机远程租用与调试、漏洞分析、自动化测试工具Xtest等多种质量检测工具,更为VIP客户配备了专家团队提供定制化综合测试解决方案。
以上是关于腾讯优测优分享 | 适配路上,避免掉入“扫码调用相机”的坑的主要内容,如果未能解决你的问题,请参考以下文章
腾讯优测优分享-Android适配中两个世界的碰撞——视觉&开发