正文  多媒体 > 录音 >

Camera shutter sound 有时off,有时On 声音不统一,时有时无

App 出现的问题为: 录制video 时,shutter sound的声音不统一,时有时无。 进入Camera应用--> 录像开始 --> 点击shutter时,无shutter sound --> 录像停止时,click shutter,无shutter sound --......

App 出现的问题为:

       录制video 时,shutter sound的声音不统一,时有时无。

       进入Camera应用--> 录像开始 --> 点击shutter时,无shutter sound --> 录像停止时,click shutter,无shutter sound --> 播放录制的视频 --> back键,返回到取景界面 --> 再次录像 ,有shutter sound.

       分析:

      只要点击back键,再次录制视频的时候,shutter sound不是预期的结果,推断出在onResume()方法中,没有从preference.xml中取KEY_SHUTTER_SOUND的值,而发生来默认行为。查看代码

   

String cameraSound = mPreferences.getString(CameraSettings.KEY_SHUTTER_SOUND,
getString(R.string.pref_camera_shutter_sound_default));

if (cameraSound != null) {
   int shutterSound = cameraSound.equals("on") ? 1 : 0;
   mCameraDevice.setCameraShutterSound(shutterSound);
}

 

发现上述代码出现在onCreate()方法中,而onResume()无类似的代码。将此代码从onCreate()方法中move到onResume()方法中,问题得到解决。

 

至此深刻地理解了Activity的生命周期。

从上图可知, 第一次启动Camera,进入取景界面,并开始录像,onCreate()方法得以执行,则shuttersound的value会从 preference.xml中取得,接着用户点击播放录制的视频,然后back键回到取景的界面,再次录像,本次click shutter的时候,执行的是onResume()方法,而onResume()方法中shuttersound并没有从preference.xml 中进行取值,而是调用默认的

R.string.pref_camera_shutter_sound_default

而我已经在string.xml中设定该值为on。