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

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

文/騰訊優測研發工程師 吳宇煥
優測小優有話說:

 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 開發 最新文章