前面已经针对拍照快门声音控制流程进行了分析,接下来分析一下录像快门声音的控制流程。
Android 8.1/9.0 MTK Camera源码分析之快门声音控制流程
这两篇文章其实都是相对于手机系统ROM Camera开发过程中,针对ap层快门声音动态控制来说明的。
Android 8.1 Camera api1
早前在Android N以及之前,mtk源码中,/frameworks/base/core/java/android/hardware/Camera.java中是有定义可以控制录像快门声音的公开接口的。而到了Android O之后,camera.java便没有了直接控制的函数了。
由于enableRecordingSound 该接口在Camera.java中去掉了,需要自己添加,才能控制录像快门的音效。
key值为"rec-mute-ogg",调用set函数设置下去。
/**
* @hide
* ljr add for control video shutter sound
*/
private static final String KEY_MUTE_RECORDING_SOUND = "rec-mute-ogg";
/**
* <p>Whether the recording sound can be disabled.</p>
* ljr add for control video shutter sound
* @hide
*/
public void enableRecordingSound(String value) {
if (value.equals("1") || value.equals("0")) {
set(KEY_MUTE_RECORDING_SOUND, value);
}
}
录像快门声音,正常逻辑,一定是执行开始视频录制时进行播放的。所以这里可以先直接看"rec-mute-ogg"这个key被getValue的地方。
文件路径:frameworks/av/services/camera/libcameraservice/api1/CameraClient.cpp
startRecordingMode():
status_t CameraClient::startRecordingMode() {
LOG1("startRecordingMode");
status_t result = NO_ERROR;
// if recording has been enabled, nothing needs to be done
if (mHardware->recordingEnabled()) {
return NO_ERROR;
}