文/腾讯优测研发工程师 吴宇焕
优测小优有话说:android
android机型适配的坑天然是很多,不想掉坑快来优测优社区~
如今Android手机通常都会带有照相功能,有不少朋友就发现手机照相时快门声音很响,想关又关不掉。。。。。不过话说回来,静音拍照你想作啥?
来到主题上,由于网络上有不少关于“删除或修改快门声音文件是关闭快门声的方法”的内容,因此我就不赘述了。今天我想和你们说的是:在开发中,针对camera的静音功能咱们会遇到哪些机型兼容问题?
从Google官方API中也没有明确的指出关于相机拍照时快门声音是如何控制的,关于shutter第一个参数API只是解释为在相机拍照的瞬间进行回调,并无明确说明是不是对拍照声音的操做。网络
当调用Camera的takePicture方法进行拍照时,为了防止偷拍等行为,会发出快门拍照的声音,并且此声音没法经过调节音量进行关闭,但因为不一样机型不一样Rom的差异,使得各个厂商针对此声音的处理不一样。
至此我总结了使用takePicture中ShutterCallback来控制拍照声音的三种状况:
一、当takePicture传入第一个参数ShutterCallback(ShutterCallback参数不为空)时,系统会发出快门拍照的声音。
例如HTC 3D EVO,所以这款手机的快门声音能够经过此方法进行控制。工具
二、不管是否传入ShutterCallback参数系统都没有快门拍照的声音。
例如LG P720手机就有此问题,此类手机问题比较严重,手机厂商自行修改了Rom,致使任何状况下调用takePicture方法进行拍照都没有声音,经过反编译系统照相机能够看出,系统照相机拍照声音是能够随意控制的,当须要声音时直接在应用中调用SoundPool发出拍照音效,不然静音处理。因此咱们在设计应用时针对这类机型也能够自行控制拍照声音。
而步步高vivo Y1手机一样有此现象,但和LG不一样的是,这款机型的厂商修改了Rom,把拍照声音的控制写在了HAL层中,调用声音的接口没有暴露出来,咱们只能经过反射进行对声音的设置。
三、不管是否传入ShutterCallback参数系统都有快门拍照的声音。
例如华为Y220t,这类手机比较麻烦,经过反编译Framework层关于拍照声音是在硬件抽象层(HAL)实现的,因此应用开发没法经过代码控制拍照声音的播放,只能给以相应的提示告诉用户当前静音无效,拍照时会发出快门的声音。
综上所述,使用takePicture中ShutterCallback来控制快门声音时须要针对不一样机型作不一样处理。测试
腾讯优测(utest.qq.com)是专业化的移动APP自动化测试工具,提供【兼容性测试】【云手机】【漏洞检测】【VIP定制化测试-优管家】等多维度测试服务,深受用户信赖。spa