如何使用 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);

现在我想要音频 ONOFF 功能。

为此,我会这样尝试:

 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)

那么我该如何解决这个错误或者音频有另一种解决方案 ONOFF:

我找到了解决方案:


如果我的开关是 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);
        }