如何使用 MediaRecorder 打开或关闭录音
How to ON or OFF audio recording using MediaRecorder
我正在使用 MediaRecorder
实现一个演示视频和音频录制
从 hear 下载演示:Android MediaRecorder Sample
MainActivity.java
中有一种方法prepareVideoRecorder()
。在这个方法中初始化和设置Source音频和视频像:
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
现在我想要音频 ON 或 OFF 功能。
为此,我会这样尝试:
if (!AppSetting.getValue(activity, Config.AUDIO, false)) {
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
}else {
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
}
但应用崩溃并出现以下错误:
java.lang.IllegalStateException
at android.media.MediaRecorder.setAudioEncoder(Native Method)
那么我该如何解决这个错误或者音频有另一种解决方案 ON 或 OFF:
我找到了解决方案:
如果我的开关是 ON 然后 if
部分执行(声音是记录)。如果我的开关是 OFF 然后 else
部分执行(声音不记录)。
if (AppSetting.getValue(activity, Config.AUDIO, false)) {
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setMaxDuration(duration);
mMediaRecorder.setProfile(profile);
} else {
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(profile.fileFormat);
mMediaRecorder.setVideoEncoder(profile.videoCodec);
mMediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
mMediaRecorder.setVideoFrameRate(profile.videoFrameRate);
mMediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
mMediaRecorder.setMaxDuration(duration);
}
我正在使用 MediaRecorder
从 hear 下载演示:Android MediaRecorder Sample
MainActivity.java
中有一种方法prepareVideoRecorder()
。在这个方法中初始化和设置Source音频和视频像:
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
现在我想要音频 ON 或 OFF 功能。
为此,我会这样尝试:
if (!AppSetting.getValue(activity, Config.AUDIO, false)) {
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
}else {
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
}
但应用崩溃并出现以下错误:
java.lang.IllegalStateException
at android.media.MediaRecorder.setAudioEncoder(Native Method)
那么我该如何解决这个错误或者音频有另一种解决方案 ON 或 OFF:
我找到了解决方案:
如果我的开关是 ON 然后 if
部分执行(声音是记录)。如果我的开关是 OFF 然后 else
部分执行(声音不记录)。
if (AppSetting.getValue(activity, Config.AUDIO, false)) {
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setMaxDuration(duration);
mMediaRecorder.setProfile(profile);
} else {
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(profile.fileFormat);
mMediaRecorder.setVideoEncoder(profile.videoCodec);
mMediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
mMediaRecorder.setVideoFrameRate(profile.videoFrameRate);
mMediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
mMediaRecorder.setMaxDuration(duration);
}