Как включить или выключить запись звука с помощью MediaRecorder - PullRequest
0 голосов
/ 26 декабря 2018

Я использую одну демо-запись видео и аудио с использованием MediaRecorder

Загрузите демо-версию с listen: Образец Android MediaRecorder

Существует один метод prepareVideoRecorder() в MainActivity.java.в этом методе инициализация и устанавливают источник Аудио и видео как:

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)

Так, как я могу решить эту ошибку, или естьдругое решение для Audio ON или OFF :

1 Ответ

0 голосов
/ 28 декабря 2018

Я получил решение:


Если мой переключатель ВКЛ , то if Партия выполняется (Звук записывается).если мой переключатель OFF , тогда else part execute (Звук не записывается).


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);
        }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...