2010-12-03 24 views
5

Estoy tratando de tomar pequeñas grabaciones para encontrar el nivel de presión sonora de un servicio, pero Android no me da acceso al hardware. Consigo los siguientes errores en Logcat:No puedo acceder a AudioRecorder

alt text

El error proviene de la siguiente código:

AudioRecord recordInstance = null; 

    // We're important... 
    android.os.Process 
      .setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); 

    short bufferSize = 4096;// 2048; 


    recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, this //line 167 
      .getFrequency(), this.getChannelConfiguration(), this 
      .getAudioEncoding(), bufferSize); //object not created 

    tempBuffer = new short[bufferSize]; 
    recordInstance.startRecording(); 

Lo que pasa es que recordInstance no se crea correctamente y por lo que cuando se llega al final y llama a recordInstance.startRecording(), recordInstance sigue siendo nulo. Android rechaza mi solicitud de programas en la definición. ¿Alguien sabe lo que indican esos errores? No pude encontrar una lista en línea.

AudioRecord Docs

Gracias

Respuesta

19

Verificar tres cosas:

  1. Sus permisos (que necesita para dar permiso para que RECORD_AUDIO)

  2. ¿Se ha quedado esta vez y no se llama recordInstance .lanzamiento()? Si es así, puede haber atado recursos de audio y es probable que no funcione hasta que reinicie el teléfono. Lo he encontrado en mi experiencia de todos modos.

3.El tamaño del búfer. Hay un método estático AudioRecord.getMinBufferSize()

+3

Era el recordInstance.release(). Gracias – FuegoFingers

+0

La parte difícil es cuando se trabaja en cosas y pruebas, a veces el programa se bloquea y la forma de llamar a recordInstance.release() entonces? De hecho, voy a hacer una nueva pregunta sobre eso ahora mismo. – chaimp

+0

Asegurándome de que se cumplan las 3 condiciones solucionó el problema para mí. Agradable (+1). aunque hacky, ¿un manejador de excepciones universal/no capturado podría hacer el truco? –

Cuestiones relacionadas