<AudioRecord> "No se pudo obtener la entrada de audio para la fuente de grabación 1"

He estado teniendo este problema con la inicialización de AudioRecord para Android. He buscado durante bastante tiempo en la web sin éxito.

Para el teléfono, estoy usando un Samsung GalaxyS en SDK versión 7. Para la inicialización de AudioRecord , estoy usando 8000 como la tasa de muestreo, MONO para configuración de canal, 16bit para formato de audio, y de acuerdo con el registro, el minBufferSize es Set to 4160. He añadido el permiso AUDIO_RECORD al manifiesto.

Mi código para la inicialización es como sigue:

 ... private static int SAMPLE_RATE = 8000; private static int CHANNEL_CONFIG = AudioFormat.CHANNEL_CONFIGURATION_MONO; private static int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; // ??? Both 8Bit and Default are deemed illegal. public MicVolumeManager() { this.bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT); PhoneDebugger.debug("AUDIO-BUFFER-SIZE", Integer.toString(this.bufferSize)); this.recorder = new AudioRecord(AudioSource.MIC, SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT, this.bufferSize); this.audioBuffer = new byte[this.bufferSize]; } ... 

Sin embargo, el objeto (this.recorder) no se pudo inicializar. Lo siguiente es del registro usando DDMS:

AUDIO-BUFFER-SIZE (3253): 4160
AudioRecord (3253): set (): sampleRate 8000, canales 16, frameCount 2080
AudioPolicyManager (2175): getInput () inputSource 1, samplingRate 8000, formato 1, canales 10, acústica 0
AudioFlinger (2175): openInput () openInputStream devuelto entrada 0x0, SamplingRate 8000, Formato 1, Canales 10, acústica 0, estado -17
AudioRecord (3253): No se pudo obtener la entrada de audio para la fuente de grabación 1
AudioRecord-JNI (3253): Error al crear la instancia de AudioRecord : error de verificación de inicialización.
AudioRecord-Java (3253): [android.media.AudioRecord] Código de error -20 al inicializar el objeto AudioRecord nativo.

Cualquier ayuda por favor? ¡Muchas gracias!

Para mí, la causa fue el fracaso de llamar a AudioRecord.release () para una instancia anterior de AudioRecord; Ató recursos nativos en AudioFlinger e interferió con instancias subsecuentes de AudioRecord. Lo vi en un Samsung Fascinate (Galaxy S) Android 2.1 (Eclair); Ya sea el Eclair o la aplicación de Samsung puede ser particularmente intolerante.

Tuve el mismo error, hasta que reinició el dispositivo.

Parece que en mi Galaxy S el impl nativo es buggy: varias veces la adquisición y liberación de un AudioRecorder (durante el tiempo de actividad del teléfono entero) causa ese error.

Después de usar el grabador de audio, debe detenerlo y soltarlo. Entonces, cuando init el grabador de audio la próxima vez, está bien.

Hola He tenido el mismo problema al intentar inicializar un objeto AudioRecord y la solución que he encontrado fue probar el parámetro configurtion antes de intentar instanciar el objeto AudioRecord actual. Aquí está la ruina que he usado:

  /** * Scan for the best configuration parameter for AudioRecord object on this device. * Constants value are the audio source, the encoding and the number of channels. * That means were are actually looking for the fitting sample rate and the minimum * buffer size. Once both values have been determined, the corresponding program * variable are initialized (audioSource, sampleRate, channelConfig, audioFormat) * For each tested sample rate we request the minimum allowed buffer size. Testing the * return value let us know if the configuration parameter are good to go on this * device or not. * * This should be called in at start of the application in onCreate(). * * */ public void initRecorderParameters(int[] sampleRates){ for (int i = 0; i < sampleRates.length; ++i){ try { Log.i(TAG, "Indexing "+sampleRates[i]+"Hz Sample Rate"); int tmpBufferSize = AudioRecord.getMinBufferSize(sampleRates[i], AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); // Test the minimum allowed buffer size with this configuration on this device. if(tmpBufferSize != AudioRecord.ERROR_BAD_VALUE){ // Seems like we have ourself the optimum AudioRecord parameter for this device. AudioRecord tmpRecoder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRates[i], AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, tmpBufferSize); // Test if an AudioRecord instance can be initialized with the given parameters. if(tmpRecoder.getState() == AudioRecord.STATE_INITIALIZED){ String configResume = "initRecorderParameters(sRates) has found recorder settings supported by the device:" + "\nSource = MICROPHONE" + "\nsRate = "+sampleRates[i]+"Hz" + "\nChannel = MONO" + "\nEncoding = 16BIT"; Log.i(TAG, configResume); //+++Release temporary recorder resources and leave. tmpRecoder.release(); tmpRecoder = null; return; } }else{ Log.w(TAG, "Incorrect buffer size. Continue sweeping Sampling Rate..."); } } catch (IllegalArgumentException e) { Log.e(TAG, "The "+sampleRates[i]+"Hz Sampling Rate is not supported on this device"); } } } 

Puedo esta ayuda.

Dickwan

Esto también está afectando a las pestañas de la galaxia Sansung GT-P1000 y posteriores 10.1 uno

Este error es bastante difícil de reproducir y un reinicio es la única manera que encontré para escapar de este mal estado …

¿Hay un seguidor de bugs a seguir en samsung?

Si usted no tomó el permiso de Record_Audio entonces lo toma incluso que usted que consigue error entonces apaga su móvil que enciende de nuevo entonces funciona su app.

Creo que el hardware de audio no puede soportar hasta 10 canales, que se establece como entrada, así que trate de usar 2 canales, y ver si puede funcionar.

  • PhoneGap plugin de Android para la grabación de audio de mayor calidad?
  • Cómo grabar audio desde un auricular bluetooth (startBluetoothSco ())
  • Android AudioRecord que configuraciones para grabar llamadas
  • Aumentar la salida de volumen del audio grabado
  • Transmitir audio a http-post en Android
  • Problemas con la clase MediaRecorder para grabar audio - prepare () da una excepción - Permiso denegado
  • ¿Es posible en Android registrar algo reproducido por MediaPlayer?
  • No se puede recuperar el puntero AudioTrack para write ()
  • Android Media Grabación utilizando hilos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.