Приглушить микрофон во время захвата видео с помощью намерения на Android 6.0.1 или выше

Я хочу захватить видео на Android 6.0, а также хочу, чтобы он не записывал звук во время захвата видео. Я попытался отключить микрофон программно, но он не работает на Android 6.0 и выше. Кто-то, пожалуйста, поделитесь своим опытом, чтобы решить эту проблему, любая помощь будет оценена по достоинству! Я использовал код ниже, чтобы отключить микрофон

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
    audioManager.setMode(AudioManager.ADJUST_MUTE);
        if (audioManager.isMicrophoneMute() == false) {
            audioManager.setMicrophoneMute(true);
        } else {
            audioManager.setMicrophoneMute(false);
        }

и для открытой камеры с помощью намерения

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

        fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);

        // set video quality
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
        intent.putExtra(MediaStore.MEDIA_SCANNER_VOLUME, 0);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file

        // start the video capture Intent
        startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);

2 ответа

Попробуй это

private void setMicMuted(boolean state){
AudioManager myAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);

// get the working mode and keep it
int workingAudioMode = myAudioManager.getMode();

myAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);

// change mic state only if needed
if (myAudioManager.isMicrophoneMute() != state) {
    myAudioManager.setMicrophoneMute(state);
}

// set back the original working mode
myAudioManager.setMode(workingAudioMode);

}

Это может помочь при включении режима

 AudioManager audioManager = ((AudioManager) context.getSystemService(Context.AUDIO_SERVICE));
            audioManager.setMode(AudioManager.MODE_NORMAL);
            if(state) //state-boolean
            {
               audioManager.setMicrophoneMute(false);
               audioManager.setMode(AudioManager.MODE_IN_CALL);
               state = false;
            }
            else
            {
              audioManager.setMicrophoneMute(true);
              state = true;
            }
Другие вопросы по тегам