Записанное аудио с использованием MediaRecorder.AudioSource.VOICE_COMMUNICATION пусто на некоторых устройствах с Android 10 - PullRequest
10 голосов
/ 21 февраля 2020

Я записываю аудио для голосовых сообщений в приложении, используя следующий код.

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.MI C) очень полезен при записи предварительно обработанных чистых од ios.

Но недавно я обнаружил, что некоторые проблемы, из-за которых записанные файлы пусты, сообщаются на нескольких устройствах, которые были недавно обновлен до Android 10. Следует отметить, что не все устройства Android 10 имеют эти проблемы, только несколько, например, Nokia 6.1 и Mi A2.

Нет ошибок или исключений, а только пустой звук выходные файлы.

Если я использую MediaRecorder.AudioSource.MI C) , то проблема не видна.

Я нашел следующую информацию, связанную с Android 10 и VOICE_COMMUNICATION Релиз Android 10 включает следующие требования для захвата с помощью VOICE_COMMUNICATION.

На основании этого я проверил наличие AcousticEchoCancel То есть, AutomaticGainControl и NoiseSuppressor, используя следующий код:

AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()

И нашли тот же результат на Mi A2 и OnePlus 6 с Android 10. Оба устройства показывают AcousticEchoCanceler и NoiseSuppressor как доступные и AutomaticGainControl как нет доступно.

Поскольку проблема существует не на всех Android устройствах, я не хочу использовать MediaRecorder.AudioSource.MI C) . В то же время, нет ошибки, исключения или дифференцирующего фактора, который бы указывал мне, когда обращаться к MediaRecorder.AudioSource.MI C) .

ОБНОВЛЕНИЕ: Эта проблема решается, когда помощник Google отключен на Mi A2. Это может быть указатель: https://developer.android.com/guide/topics/media/sharing-audio-input

Любая помощь в этом отношении приветствуется.

1 Ответ

1 голос
/ 11 марта 2020

Я закончил с использованием MediaRecorder.AudioSource.VOICE_RECOGNITION вместо MediaRecorder.AudioSource.VOICE_COMMUNICATION на всех android версиях.

Мы закончили брать образцы на 15+ различных устройств и обнаружили, что MediaRecorder.AudioSource.VOICE_RECOGNITION лучше всего работает с большинством устройств, включая телефоны высокого класса и среднего класса.

Насколько я понимаю, с первоначальной проблемой столкнулись на некоторых устройствах на некоторых устройствах кажется, что OEM-производители сталкиваются с проблемами реализации Android 10 и VOICE_COMMUNICATION https://source.android.com/devices/audio/implement-pre-processing

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