Estoy grabando audio para mensajes de voz en la aplicación usando el siguiente código.
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();
El uso de MediaRecorder.AudioSource.VOICE_COMMUNICATION en lugar de MediaRecorder.AudioSource.MIC) es muy útil para grabar audios limpios preprocesados.
Pero, recientemente encontré que algunos problemas en los que los archivos grabados están vacíos se informan en algunos dispositivos que se actualizaron recientemente a Android 10. Cabe señalar que no todos los dispositivos Android 10 tienen estos problemas, solo algunos, es decir, Nokia 6.1 y Mi A2.
No hay error ni excepción, sino solo archivos de salida de audio vacíos.
Si uso MediaRecorder.AudioSource.MIC) , el problema no se ve.
Encontré la siguiente información relacionada con Android 10 y VOICE_COMMUNICATION. La versión de Android 10 incluye los siguientes requisitos para la captura con VOICE_COMMUNICATION.
Basado en esto, verifiqué la disponibilidad de AcousticEchoCanceler, AutomaticGainControl y NoiseSuppressor usando el siguiente código.
AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()
Y encontré el mismo resultado en Mi A2 y OnePlus 6 con Android 10. Ambos dispositivos muestran AcousticEchoCanceler y NoiseSuppressor como disponibles y AutomaticGainControl como no disponibles.
Dado que el problema no está presente en todos los dispositivos Android, no quiero recurrir al uso de MediaRecorder.AudioSource.MIC) . Al mismo tiempo, no hay ningún error, excepción o factor diferenciador que me indique cuándo recurrir a MediaRecorder.AudioSource.MIC) .
ACTUALIZACIÓN: El problema se resuelve cuando el Asistente de Google está apagado en Mi A2. Este podría ser el puntero: https://developer.android.com/guide/topics/media/sharing-audio-input
Cualquier ayuda con respecto a esto es apreciada.