腾讯优测是专业的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. django admin下拉列表不显示值,显示为object的处理

    问题:模板中创建form表单中的下拉列表, 前台打开页面显示object,而不是值,如图: 尝试了多种办法无果,最后解决了,处理办法是修改models.py,原来的model: class Techn ...

  2. Linux Shell 批量更换文件名或后缀名

    把下列所有.c的文件名修改为.cc rename .c .cc *.c

  3. KDE、GNOME 和 XFCE 桌面比较

    KDE.GNOME 和 XFCE 桌面比较   这么多年来,很多人一直都在他们的 linux 桌面端使用 KDE 或者 GNOME 桌面环境.在这两个桌面环境多年不断发展的同时,其它的桌面也在持续增加 ...

  4. js正则表达式入门

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. String和StringBuffer、StringBuilder的区别

    目录: 1.String类的不可变性 2.用String的时候需要注意什么 3.String与StringBuilder的区别 4.StringBuilder和StringBuffer的区别 Stri ...

  6. mybatis批量更新 UPDATE mysql

    oracle和mysql数据库的批量update在mybatis中配置不太一样: oracle数据库: <update id="batchUpdate" parameterT ...

  7. DEV GridControl.TableView FocusedRow选中行背景颜色

    上次修改了TableView.RowStyle,导致了一个问题:覆盖了GridControl默认的选中行颜色. 于是需要重写选中行的颜色. 刚开始的想法是: <dxg:TableView> ...

  8. [Android] Web Console: Uncaught TypeError: Object [object Object] has no method 'xxx'

    我们开发的产品,有一部分功能,需要在WebView中打开web页面,然后在web页面中通过js方法回调部分native的功能. 对于web回调native的开发方式,如果不了解的话,可以参考我以前的一 ...

  9. C# 跨线程调用控件

    在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...

  10. Java:集合工具类-Collections

    Java.util.Collections 集合框架工具类Collections,其方法都是静态的,本身没有构造函数. 常见方法: static <T extends Comparable< ...