文/腾讯优测研发工程师 吴宇焕
优测小优有话说:
android机型适配的坑自然是不少,不想掉坑快来优测优社区~

现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想关又关不掉。。。。。不过话说回来,静音拍照你想做啥?
来到主题上,因为网络上有很多关于“删除或修改快门声音文件是关闭快门声的方法”的内容,所以我就不赘述了。今天我想和大家说的是:在开发中,针对camera的静音功能我们会遇到哪些机型兼容问题?
从Google官方API中也没有明确的指出关于相机拍照时快门声音是如何控制的,关于shutter第一个参数API只是解释为在相机拍照的瞬间进行回调,并没有明确说明是否是对拍照声音的操作。

当调用Camera的takePicture方法进行拍照时,为了防止偷拍等行为,会发出快门拍照的声音,而且此声音无法通过调节音量进行关闭,但由于不同机型不同Rom的差别,使得各个厂商针对此声音的处理不同。
至此我总结了使用takePicture中ShutterCallback来控制拍照声音的三种情况:
1、当takePicture传入第一个参数ShutterCallback(ShutterCallback参数不为空)时,系统会发出快门拍照的声音。
例如HTC 3D EVO,因此这款手机的快门声音可以通过此方法进行控制。

2、无论是否传入ShutterCallback参数系统都没有快门拍照的声音。
例如LG P720手机就有此问题,此类手机问题比较严重,手机厂商自行修改了Rom,导致任何情况下调用takePicture方法进行拍照都没有声音,通过反编译系统照相机可以看出,系统照相机拍照声音是可以随意控制的,当需要声音时直接在应用中调用SoundPool发出拍照音效,否则静音处理。所以我们在设计应用时针对这类机型也可以自行控制拍照声音。
而步步高vivo Y1手机同样有此现象,但和LG不同的是,这款机型的厂商修改了Rom,把拍照声音的控制写在了HAL层中,调用声音的接口没有暴露出来,我们只能通过反射进行对声音的设置。
3、无论是否传入ShutterCallback参数系统都有快门拍照的声音。
例如华为Y220t,这类手机比较麻烦,通过反编译Framework层关于拍照声音是在硬件抽象层(HAL)实现的,所以应用开发无法通过代码控制拍照声音的播放,只能给以相应的提示告诉用户当前静音无效,拍照时会发出快门的声音。
综上所述,使用takePicture中ShutterCallback来控制快门声音时需要针对不同机型做不同处理。

腾讯优测(utest.qq.com)是专业化的移动APP自动化测试工具,提供【兼容性测试】【云手机】【漏洞检测】【VIP定制化测试-优管家】等多维度测试服务,深受用户信赖。

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

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

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

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

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

  3. 腾讯优测优分享 | 游戏的UI自动化测试可以这样开展

    腾讯优测是专业的自动化测试平台,提供自动化测试-全面兼容性测试,云真机-远程真机租用,漏洞分析等多维度的测试服务,让测试更简单! 对于目前的两大游戏引擎cocos-2dx.unity3D,其UI自动化 ...

  4. 腾讯优测优分享 | 这些年,我们追过的 fiddler

    腾讯优测是专业的移动云测试平台,提供全面兼容性测试,远程真机租用,漏洞分析等多维度的测试服务,旗下优分享提供大量的移动研发及测试相关的干货! 一.fiddler原理简介 fiddler是目前最强大最好 ...

  5. 腾讯优测优分享 | 探索react native首屏渲染最佳实践

    腾讯优测是专业的移动云测试平台,旗下的优分享不定时提供大量移动研发及测试相关的干货~ 此文主要与以下内容相关,希望对大家有帮助. react native给了我们使用javascript开发原生app ...

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

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

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

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

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

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

  9. 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿

    腾讯优测是专业的android自动化测试平台,拥有上千款真机,彻底解决android碎片化问题! 这里我要说的不是闪光灯的硬件特征,也不是说底层驱动的原理,我只是跟大家聊一聊在项目中遇到的一些关于闪光 ...

随机推荐

  1. How To Use DBLink In Oracle Forms 6i

    You want to connect multiple databases in oracle forms to perform certain tasks, for example you nee ...

  2. 后勤数据抽取流程图 Logistic Data Extraction

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. 【Android】Spinner使用

    Spinner:下拉列表,主要用于显示一些选项供用户选择,类似PC应用程序里面的Combobox. 使用Spinner需要以下条件: 1.一个 Spinner 控件 2.数据 3.一个Adapter ...

  4. Java精确计算小数

    Java在计算浮点数的时候,由于二进制无法精确表示0.1的值(就好比十进制无法精确表示1/3一样),所以一般会对小数格式化处理. 但是如果涉及到金钱的项目,一点点误差都不能有,必须使用精确运算的时候, ...

  5. shockt通信

    目前为止,我们使用的最多网络协议还是tcp/ip网络.通常来说,我们习惯上称为tcp/ip协议栈.至于协议栈分成几层,有两种说法.一种是五层,一种是七层. 5.应用层    4.传输层    3.网络 ...

  6. 进程、线程、socket套接字-资源大小 & 切换代价

    另,进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 今天查了一下进程和线程的资源占用. 比如问:栈和堆的大 ...

  7. 0010 Linux 目录操作命令

    01.更改目录 cd  /  返回根目录 cd ~  返回用户根目录 cd -  返回上个操作目录目录 ,等同于cd $OLDPWD 02.查看工作目录 pwd 03.创建目录 mkdir 目录名 0 ...

  8. JVM实用参数——新生代垃圾回收

    JVM实用参数目录 JVM实用参数——新生代垃圾回收 概述 第1部分  新生代垃圾回收介绍 第2部分 参数介绍 参考 第1部分  新生代垃圾回收介绍 本部分,我们将关注堆(heap) 中一个主要区域, ...

  9. 关于strcpy和memcpy

    strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符.已知strcpy函 ...

  10. cookie包含中文导致的问题

    周五项目测试完毕没问题之后上线,上线之后发现有的账户登录不上 原因为,用来记录追踪用户的cookie中包含cookie.读取,写入时候发生异常. 异常大概是这个样子: java.lang.Illega ...