原文地址:https://online.mediatek.com/FAQ#/SW/FAQ07404
[DESCRIPTION]
相机连拍快门声音和拍照数量不一致
[ANALYSE]
长按快门连拍,快门声音比拍出的照片数量多。因为目前长按快门连拍时,声音的循环播放是AP端来控制的,跟拍照的次数没有关系,所以会不同步。
[SOLUTION]
JB版本按以下方法调整:
连拍时快门声音的播放是在modeactor.java中的函数onShutterButtonLongPressed()中通过调用以下代码来实现的:
mStreamID = mBurstSound.play(mSoundID, 1.0f, 1.0f, 1, -1, 1.0f);
最后一个参数表示播放的速率,可以在0.5-2之间进行调整,如果想让声音播放的慢一些,可以把这个值调小一些。
JB2/JB3版本按以下方法调整:
连拍时快门声音的播放是在photoactor.java中的函数shuttercallback的onShutter()中通过调用以下代码来实现的:
mStreamID = mBurstSound.play(mSoundID, 1.0f, 1.0f, 1, -1, 1.0f);
最后一个参数表示播放的速率,可以在0.5-2之间进行调整,如果想让声音播放的慢一些,可以把这个值调小一些。
如果调成0.5还是感觉比连拍播的快,那只能去更换拍照音的音源了,即/system/media/audio/ui/camera_shutter.ogg文件。
R0 版本调整方法:
+++ b/vendor/mediatek/proprietary/packages/apps/Camera2/feature/setting/continuousshot/src/com/mediatek/camera/feature/setting/CaptureSound.java
@@ -85,12 +85,12 @@ class CaptureSound {
// force load if user don't call load before play.
load();
}
- mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 1.0f);
+ mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 0.5f);
if (mStreamId == 0) {
// play failed,load and play again.
load();
sUserCount--;
- mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 1.0f);
+ mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 0.5f);
LogHelper.d(TAG, "[play]done mStreamId = " + mStreamId);
}
}