腾讯优测是专业的android自动化测试平台,拥有上千款真机,彻底解决android碎片化问题!
这里我要说的不是闪光灯的硬件特征,也不是说底层驱动的原理,我只是跟大家聊一聊在项目中遇到的一些关于闪光灯的让人挠头的几个问题,也许你也曾遇见过,那我们一起来回味;如果你没遇见过,那我的这篇文章会让你少走一点弯路。

一、判断手机是否有闪光灯

按照常理,我们在使用闪光灯之前需要先判断手机是否有闪光灯,我们常用的判断闪光灯的方法应该有以下两种:

根据腾讯优测数据库中的数据显示,在热门机型中:
使用方法一会有3.7%的机器结果错误,无法准确地判断出手机是否有闪光灯,主要的品牌包含:酷派、天语、联想、三星等。
使用方法二会有9.7%的机器结果错误,主要品牌包含:VIVO、金立、酷派、天语、朵唯、三星等。
如果产品中某个UI显示状态跟此结果相关,那么我们就需要针对这10%左右的手机做适配,设置机型开关明确指定问题机型是否有闪光灯,腾讯优测云测试平台可以提供相关数据和解决方案。

二、开启闪光灯

现象一:对焦可以开启闪光灯

如果我们设置闪光灯的模式为Parameters.FLASH_MODE_ON,那么当我们执行对焦操作的时候,(mCamera.autoFocus(null))闪光灯会亮,有人会说这个很正常,我并不跟大家纠结这个现象是否正确,我只是要告诉大家在热门机型中有46%的机型在这种情况下闪光灯会亮,另外54%的机型则不会亮,这是一种现象上的差异,每个产品根据自己的实际情况适当考虑这个问题。

现象二:不支持闪光灯常亮设置

如果你的App中有一个功能需要开启闪光灯常亮
(Parameters.FLASH_MODE_TORCH),那么你要有个心理准备,将有12%的手机不支持闪光灯常亮。

现象三:设置闪光灯常亮拍照后的图片ExifInterface闪光灯信息不正确

照片的ExifInterface信息中可以查看图片的旋转角度、拍摄时间、拍照时是否使用了闪光灯等信息,这些信息一般都是在生成照片时手机底层自动添加的,如果这个信息中闪光灯的使用情况对你的App有重要的用途时,你就要注意了,因为26%的手机在设置闪光灯为Parameters.FLASH_MODE_TORCH后拍照的照片信息中会返回“未使用闪光灯”的标识。
你可以尝试在拍照的时候自己去写入这个信息,但是成功率不是很高。

现象四:常亮状态与其他状态间的切换

前提条件是我们设置闪光灯为常亮,并且闪光灯成功常亮,此时我们在设置闪光灯模式为Parameters.FLASH_MODE_AUTO后闪光灯依然常亮,这样的机型约占热门机型的12%,遇到这种情况我们需要先设置闪光灯模式为Parameters.FLASH_MODE_OFF关闭闪光灯后再设置其他模式。
PS:有点小问题是有极个别手机设置闪光灯为常亮后即使设置
Parameters.FLASH_MODE_OFF也无法关闭闪光灯,但这种现象极其罕见,只占0.5%甚至更少,我们可以忽略不计,总不能每次切换都险释放Camera吧。

三、关闭闪光灯

既然开了,我们就要负责关。说实话,以前这个问题根本不在我的考虑范内,因为我们在使用Camera的时候都会在Activity被销毁或者暂停时释放Camera,这个时候无论闪光灯是什么状态,都会随着Camera的释放而关闭,直到我遇见了特殊机型,我的世界观发生了变化。
这货如果设置了闪光灯常亮,即使释放了Camera闪光灯依旧稳稳地亮着,而且由于Camera被释放掉了,你再也没办法关闭闪光灯了,关闭App、卸载App,算了,你还是扣电池关机吧。
所以如果你的程序中频繁地切换各种闪光灯模式,那么在释放Camera前最好先把闪光灯模式设置为Parameters.FLASH_MODE_OFF吧,不然我们还能怎么办??
加入腾讯优测官方群 214483489 与大咖们分享技术与时讯!

腾讯优测 李忠丞
_______________________________________________________________________________________
腾讯优测是专业的移动云测试平台,为应用、游戏、H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供自动化兼容性测试、云手机远程租用与调试、漏洞分析、自动化测试工具Xtest等多种质量检测工具,更为VIP客户配备了专家团队提供定制化综合测试解决方案。

腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿的更多相关文章

  1. 腾讯优测-优社区干货精选 |  那些年,我们在Android机型适配上遇到的坑之Camera拍照时快门咔嚓声

    文/腾讯优测研发工程师 吴宇焕 优测小优有话说: android机型适配的坑自然是不少,不想掉坑快来优测优社区~ 现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想 ...

  2. 腾讯优测-优社区干货精选 | android开发在路上:少去踩坑,多走捷径(下)

    文/腾讯公司 陈江峰 优测小优有话说: android开发的坑自然是不少,不想掉坑快来优测优社区~ 6.Android APP开发中其它需要提醒的问题 android4.4在UI线程无法进行网络操作. ...

  3. 优测优社区干货精选|老司机乱谈编辑器之神——vim

    文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...

  4. 【腾讯优测干货分享】Android 相机预览方向及其适配探索

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/583ba1df25d735cd2797004d 由于Android系统的开放策略 ...

  5. 腾讯优测优分享 | Android适配中的一些特殊情况小结

    腾讯优测是专业的自动化测试平台,提供全面兼容适配测试,远程真机租用等多维度的测试服务! 作为一名"艰苦卓绝"的软件工程师,我在开发路上经常被各种奇葩情况虐的体无完肤...今天就想与 ...

  6. 腾讯优测优分享 | Android性能测试工具化实现

    腾讯优测专业的移动云测试平台,自动化测试提供性能测试数据,云真机实时输出性能数据,让测试更简单! 1.Android性能测试介绍 提到Android性能测试,我们总免不了俗地要首先介绍下Android ...

  7. 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?

    腾讯优测是专业的移动自动化测试平台,提供多维度的自动化测试服务,让测试更简单! 近期有报道称,澳大利亚悉尼市新某大学的一名男生在课堂上看电影,不料耳机没有插好,变成了现场直播... 如果你认为耳机没插 ...

  8. 【腾讯优测干货分享】如何降低App的待机内存(四)——进阶:内存原理

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/3FTPFvZRqyAQnU047kmWJQ 1.4进阶:内存原理 在 ...

  9. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...

随机推荐

  1. 448. Find All Numbers Disappeared in an Array Add to List

    题目描述 题目分析 有个[1,n]的条件要充分利用起来. 题目代码 public class Solution { public List<Integer> findDisappeared ...

  2. Mac下用g++编译opencv程序报错

    问题描述: 在Mac下安装好opencv, 安装:    bash  brew install opencv      写了一个opencv程序:    ``` C++ //作用就是:取视频的每一帧, ...

  3. 《BI那点儿事》数据流转换——查找转换

    查找转换通过联接输入列中的数据和引用数据集中的列来执行查找.是完全匹配查找.在源表中查找与字表能关联的所有源表记录.准备数据.源表 T_QualMoisture_Middle_Detail字典表 T_ ...

  4. shiro的Helloworld

    package shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePassword ...

  5. Python之No module named setuptools 安装pip

    早上运行程序的时候发现没有引入相应的module,然后使用pip去安装的时候发现自己没有在安装pip,于是在自己的软件群里边找见了pip安装包,在pip的解压目录下运行python setup.py ...

  6. 1.jquery的变量赋予方式

    1.首先通过将变量赋予 $_ = window.$ _jQuery = window.JQuery 2.将函数赋给两个全局变量 window.jQuery = window.$ = jQuery 3. ...

  7. junit基础篇、中级篇-实例代码

    学习文章: http://blog.csdn.net/andycpp/article/details/1327147 http://wenku.baidu.com/link?url=C27gDEj0l ...

  8. const char * char * const

    2 区分 const * 与 * const 的差别 ( 1 ) 指针本身是常量不可变 ( char * ) const  pCount; const (char *)  pCount; ( 2 ) ...

  9. guava学习--File1

    ByteSource:表示一个可读的字节.通常情况下,我们期望的字节来源是一个文件,但它也可以从一个字节数组读取字节. File f1 = new File("D:\\test2.txt&q ...

  10. JDE Client开发端 左侧边栏设置