Sto registrando l'audio per i messaggi vocali nell'app usando il seguente codice.
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();
L'uso di MediaRecorder.AudioSource.VOICE_COMMUNICATION anziché MediaRecorder.AudioSource.MIC) è molto utile per la registrazione di audio puliti preelaborati.
Ma recentemente ho riscontrato alcuni problemi in cui i file registrati sono vuoti vengono segnalati su alcuni dispositivi che sono stati recentemente aggiornati ad Android 10. Va notato che non tutti i dispositivi Android 10 hanno questi problemi, solo alcuni cioè Nokia 6.1 e Mi A2.
Non ci sono errori o eccezioni, ma solo file di output audio vuoti.
Se utilizzo MediaRecorder.AudioSource.MIC), il problema non si vede.
Ho trovato le seguenti informazioni relative ad Android 10 e VOICE_COMMUNICATION La versione di Android 10 include i seguenti requisiti per l'acquisizione con VOICE_COMMUNICATION.
Sulla base di questo ho verificato la disponibilità di AcousticEchoCanceler, AutomaticGainControl e NoiseSuppressor utilizzando il seguente codice.
AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()
E ho trovato lo stesso risultato su Mi A2 e OnePlus 6 con Android 10. Entrambi i dispositivi mostrano AcousticEchoCanceler e NoiseSuppressor come disponibili e AutomaticGainControl come non disponibile.
Poiché il problema non è presente su tutti i dispositivi Android, non voglio ripiegare sull'uso di MediaRecorder.AudioSource.MIC) . Allo stesso tempo, non ci sono errori, eccezioni o fattori di differenziazione che mi dicono quando ricorrere a MediaRecorder.AudioSource.MIC) .
AGGIORNAMENTO: il problema viene risolto quando Google Assistant è disattivato su Mi A2. Questo potrebbe essere il puntatore: https://developer.android.com/guide/topics/media/sharing-audio-input
Qualsiasi aiuto in merito è apprezzato.