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 ...

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top