2011-02-10 9 views
6

Recibo este error al intentar inicializar y el objeto AudioRecord, en un intento de grabar sonidos usando el emulador usando Eclipse."No se pudo obtener la entrada de audio para la fuente de grabación 1" al intentar inicializar el AudioRecord

He intentado con varias frecuencias de muestreo de bits, 8000 es el único que es válido, pero el error continúa apareciendo. He probado varias versiones de sdk, 1.5, 1.6, 2, 2.2 y 2.3.1. (y combinaciones de con el AVD).

Aquí está el código:

 Log.v(TAG, "About to initialize recording"); 
    //int[] samplingRates = {44100, 22050, 16000, 11025, 8000}; 
    int[] samplingRates = {8000}; 

    for (int i = 0; i < samplingRates.length; ++i) 
    { 
     try 
     { 
      Log.d(TAG,"Trying sampling rate: " + samplingRates[i]); 
      int min = AudioRecord.getMinBufferSize(samplingRates[i], 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        //AudioFormat.CHANNEL_IN_MONO, 
        AudioFormat.ENCODING_PCM_16BIT); 
      Log.d(TAG,"MinBufferSize: " + min); 

      AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.MIC, samplingRates[i], 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, min); 
      if (record.getState() == AudioRecord.STATE_INITIALIZED) 
      { 
       Log.d("Recorder", "Audio recorder initialised at " + record.getSampleRate()); 
       return record; 
      } 
      record.release(); 
      record = null; 
     } 
     catch (IllegalArgumentException e) 
     { 
      // Try the next one. 
      Log.d(TAG,"Initialization failed"); 
     } 
    } 
    // None worked. 
    return null; 

El error se produce en la instanciación, ficha AudioRecord = new etc.

Alguien ha visto este mismo problema, que parece ser una solicitud recta hacia adelante de modo I' Me sorprendió si esto es un error, ya que no puedo hacerlo funcionar con diferentes versiones.

He creado los AVD con capacidades de grabación de audio. ¿Hay algo más que deba configurar?

He visto un par de otras publicaciones sobre el mismo problema, pero no hay respuestas.

Gracias de antemano

Chris

+0

Sí, es posible ... Chk este post http://stackoverflow.com/ q/5254994/87918 –

Respuesta

2

Se problema aquí es, probablemente, en realidad doble. En primer lugar, debe obtener todos los parámetros correctos para AudioRecord, es decir, puedo ver que ha probado todas las distintas velocidades de muestreo y configuraciones de canales, pero ¿probó con diferentes profundidades de bits? Si no lo haces todo bien, no funciona. Además, parece que algunos dispositivos Android parecen informar el minBufferSize incorrecto.

embargo, creo que el problema real que está experimentando es que las AVDs no puede grabar audio/vídeo (a pesar de que no pueden quejarse si se configura de modo): http://developer.android.com/guide/topics/media/index.html

Desde el párrafo tres:

Tenga en cuenta que el emulador no tiene hardware para capturar audio o video, pero es probable que los dispositivos móviles actuales brinden estas capacidades, a las que se puede acceder a través de la clase MediaRecorder.

0

Para mí en el Samsung Device, es un trabajo con sólo cambiar AudioFormat.CHANNEL_IN_MONO

o

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize); 
Cuestiones relacionadas