android4.2之后Camera的framework層Camera.java里面加上了enable或者disable快門音的接口:
enableShutterSound(boolean enabled)
通過在app里調用enableShutterSound(true)或者enableShutterSound(false)就可以實現拍照的時候開啟或者關閉快門音。
但是需要注意的是:很多機器是強制快門音的,也就是說你在app里調用上述接口也許根本不起作用,你明明enableShutterSound(false)了,但是拍照的時候快門音照樣響起,原因在於燒制的系統版本里面有一個值被寫死了:ro.camera.sound.forced = 1
可以adb shell進到device里面,getprop ro.camera.sound.forced如果得到是0,說明快門音可以被靜音處理,調用enableShutterSound(false)能起作用;如果是1,說明快門音被強制設置了,這時調用enableShutterSound(false)就不起作用。
要想讓Camera的快門音能夠被靜音,就需要在編譯供燒機的系統版本之前,將ro.camera.sound.forced設成0,各家硬件平台定義這個值的地方可能稍有差異,但是大致都在以下位置:
(1)Intel 一般在 vendor/intel/common/init.common.rc里面
(2)qcom 一般在device/qcom/YOURPLATFORM/system.prop里面
(3)Samsung 一般在device/YOURPROJECT/system.prop里面
(4)MTK 一般在mediatek/config/YOURPROJECT/system.prop里面