騰訊優測-優社區乾貨精選 |安卓適配之Camera拍照時快門咔嚓聲

文/騰訊優測研發工程師 吳宇煥

優測小優有話說:

     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定製化測試-優管家】等多維度測試服務,深受用戶信賴。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章