2011-02-10 10 views
6

Continuo a ricevere questo errore quando si tenta di inizializzare e oggetto AudioRecord, nel tentativo di registrare suoni utilizzando l'emulatore utilizzando Eclipse."Impossibile ottenere l'ingresso audio per la sorgente di registrazione 1" quando si tenta di inizializzare AudioRecord

Ho provato con varie velocità di campionamento dei bit, l'8000 è l'unico valido, ma l'errore continua ad apparire. Ho provato varie versioni di sdk, 1.5, 1.6, 2, 2.2 e 2.3.1. (e combinazioni di AVD).

Ecco il codice:

 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; 

L'errore si verifica su di un'istanza, registrare AudioRecord = new ecc

qualcuno ha visto questo stesso problema, che sembra essere una richiesta dritto in avanti in modo I' Sono sorpreso se questo è un bug, in particolare perché non riesco a farlo funzionare con versioni diverse.

Ho creato l'AVD con funzionalità di registrazione audio. C'è qualcos'altro che devo configurare?

Ho visto un paio di altri post sullo stesso problema, ma nessuna risposta.

Grazie in anticipo

Chris

+0

Sì, è possibile ... Chk questo post http://stackoverflow.com/ q/5254994/87918 –

risposta

2

È problema qui è probabilmente in realtà duplice. Innanzitutto, devi avere tutti i parametri giusti per AudioRecord, cioè posso vedere che hai provato tutte le varie frequenze di campionamento e le configurazioni dei canali, ma hai provato diverse profondità di bit? Se non capisci tutto bene, non funziona. Inoltre, sembrerebbe che alcuni dispositivi Android sembrino segnalare minBufferSize errato.

Ma, penso che il vero problema si sta verificando è che i AVDS non possono registrare audio/video (anche se non possono lamentarsi se si configura così): http://developer.android.com/guide/topics/media/index.html

dal punto tre:

Si noti che l'emulatore non ha hardware per acquisire audio o video, ma è probabile che i dispositivi mobili effettivi forniscano queste funzionalità, accessibili tramite la classe MediaRecorder.

0

per me su Samsung dispositivo, è un lavoro con solo cambiando AudioFormat.CHANNEL_IN_MONO

o

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