No se pudo grabar con Samsung Galaxy S2, pero podría grabar con otros teléfonos de MIC
-
27-10-2019 - |
Pregunta
Sin embargo, mi aplicación no pudo grabar en Samsung Galaxy S 2 de MIC, ha estado grabando en otros teléfonos de MIC.
Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
En mi código, selecciono el tipo de origen de 0 a 4, seleccione el tipo de codificador como AMR-NB, AMR-WB, AAC o predeterminado, seleccione el tipo de formato de salida como .3GP, .mp4 o .Amr y también seleccione el canal de audio como 1 o 2. Intento todas las combinaciones que están actuadas. Al menos una de las combinaciones funciona en muchos teléfonos. Pero ninguno de ellos podría funcionar en Samsung Galaxy S 2. Grabia el archivo y la duración del registro es cierta, ¡pero la voz es solo silencio!
En mi investigación en la web con este problema, encuentro que podría derivarse del tipo de micrófono. Aunque en mi código selecciono el tipo de fuente de audio como predeterminado, micrófono, enlace descendente de voz, enlace ascendente de voz, llamada de voz, no podría funcionar. Luego configuré el tipo de fuente de audio tan duro por ese 0, 1, 2, 3, 4 en lugar de Mediarecorder.audiosurce.mic, etc. Pero tampoco podría funcionar ...
Solución
He tenido problemas en el S2 donde una aplicación bloqueará el micrófono y no lo lanzará, especialmente si está haciendo ciclos de desarrollo rápido donde bloquea y libera el micrófono justo cuando desinstala la aplicación (y vuelve a instalar un nueva versión). A veces se desbloquea después de haber pasado un tiempo, pero la forma segura de asegurarse de que el micrófono esté disponible es reiniciar el teléfono después de un intento fallido.
He podido grabar audio usando la siguiente configuración en el AudioRecord
objeto:
int buffer_size = 2 * AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(
MediaRecorder.AudioSource.MIC, //audio source
16000, //16kHz sample rate
AudioFormat.CHANNEL_IN_MONO, //channel
AudioFormat.ENCODING_PCM_16BIT, //encoding
buffer_size ); //buffer size