文/腾讯优测研发工程师 吴宇焕
优测小优有话说:
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. Displaying Window In Center In Oracle Forms 6i

    Center window automatically  in Oracle Forms 6i, use the following procedure by passing window name ...

  2. timer控件、三级联动

    timer控件: 实现时间日期自增长: using System; using System.Collections.Generic; using System.ComponentModel; usi ...

  3. 描述Linux运行级别0-6的各自含义

    中文: 0: 关机模式 1:单用户模式<==破解root密码 2:无网络支持的多用户模式 3:有网络支持的多用户模式(文本模式,工作中最长使用的模式) 4:保留,未使用 5:有网络支持又x-wi ...

  4. TCP短连接TIME_WAIT问题解决方法大全

    tcp连接是网络编程中最基础的概念,基于不同的使用场景,我们一般区分为“长连接”和“短连接”,长短连接的优点和缺点这里就不详细展开了,有心的同学直接去google查询,本文主要关注如何解决tcp短连接 ...

  5. 0518 Scrum 项目 5.0

     燃尽图: Sprint 1看板: 成员 团队贡献分 许佳仪 22 柯晓君 21 卓宇靖 18 赖文亮 19

  6. python中requests

    #发送无参数的get请求import requests def get_html(url): res = requests.get(url) return res.text #发送无参数的post请求 ...

  7. WebView注入Java对象注意事项

    在android4.2以前,注入步骤如下: webview.getSetting().setJavaScriptEnable(true); class JsObject { public String ...

  8. JavaScript的Date对象

    整理了一些JavaScript时间的对象,如下所示: toLocaleString()得到当前的年月日和时间的字符串 toLocaleTimeString() 得到当前的时间字符串 toLocaleD ...

  9. 关于strcpy和memcpy

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

  10. CSS3中媒体查询,更换样式表

    <link rel="stylesheet" href="css/1.css" media="(min- width:600px)"& ...