騰訊優測-優社區乾貨精選 | 那些年,咱們在Android機型適配上遇到的坑之Camera拍照時快門咔嚓聲

文/騰訊優測研發工程師 吳宇煥
優測小優有話說: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

相關文章
相關標籤/搜索