原文地址: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 版本调整方法:

  1. +++ b/vendor/mediatek/proprietary/packages/apps/Camera2/feature/setting/continuousshot/src/com/mediatek/camera/feature/setting/CaptureSound.java
  2. @@ -85,12 +85,12 @@ class CaptureSound {
  3. // force load if user don't call load before play.
  4. load();
  5. }
  6. - mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 1.0f);
  7. + mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 0.5f);
  8. if (mStreamId == 0) {
  9. // play failed,load and play again.
  10. load();
  11. sUserCount--;
  12. - mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 1.0f);
  13. + mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 0.5f);
  14. LogHelper.d(TAG, "[play]done mStreamId = " + mStreamId);
  15. }
  16. }