Я записываю аудио для голосовых сообщений в приложении, используя следующий код.
MediaRecorder audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
audioRecorder.setOutputFile(audioRecordingFile);
audioRecorder.prepare();
audioRecorder.start();
Использование MediaRecorder.AudioSource.VOICE_COMMUNICATION вместо MediaRecorder.AudioSource.MIC) очень полезно при записи предварительно обработанных чистых аудиозаписей.
Но недавно я обнаружил, что на некоторых устройствах, которые были недавно обновлены до Android 10, сообщается о некоторых проблемах, связанных с пустыми записанными файлами. Следует отметить, что не у всех устройств Android 10 есть эти проблемы, только у нескольких, то есть Nokia 6.1 и Ми А2.
Там нет ошибок или исключений, но только пустые файлы вывода звука.
Если я использую MediaRecorder.AudioSource.MIC), то проблема не видна.
Я обнаружил следующую информацию, связанную с Android 10 и VOICE_COMMUNICATION. Релиз Android 10 включает следующие требования для захвата с помощью VOICE_COMMUNICATION.
Основываясь на этом, я проверил наличие AcousticEchoCanceler, AutomaticGainControl и NoiseSuppressor, используя следующий код.
AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()
И нашел тот же результат на Mi A2 и OnePlus 6 с Android 10. Оба устройства показывают AcousticEchoCanceler и NoiseSuppressor как доступные и AutomaticGainControl как недоступные.
Поскольку эта проблема присутствует не на всех устройствах Android, я не хочу использовать MediaRecorder.AudioSource.MIC) . В то же время, нет ошибки, исключения или дифференцирующего фактора, который говорит мне, когда следует обращаться к MediaRecorder.AudioSource.MIC) .
ОБНОВЛЕНИЕ: проблема решается, когда помощник Google выключен на Mi A2. Это может быть указатель: https://developer.android.com/guide/topics/media/sharing-audio-input
Любая помощь в этом отношении приветствуется.