Domanda

sto cercando di prendere piccole registrazioni per trovare il livello di pressione sonora di un servizio ma Android wont darmi accesso all'hardware. Ottengo i seguenti errori in Logcat:

alt text

L'errore deriva dal seguente codice:

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();

Quello che succede è che recordInstance non viene mai creato correttamente e in modo che quando si arriva alla fine e chiama recordInstance.startRecording (), recordInstance è ancora nulla. Android rifiuta i miei programmi richiesta presso la definizione. Qualcuno sa che cosa quelle di errno indicano? Non riuscivo a trovare un elenco on-line.

AudioRecord Docs

Grazie

È stato utile?

Soluzione

Controlla tre cose:

  1. Le autorizzazioni (è necessario dare il permesso per RECORD_AUDIO)

  2. Hai eseguito una volta e non chiamato recordInstance.release ()? Se è così si può avere legato risorse audio e probabilmente non funzionerà finché non si riavvia il telefono. Ho scoperto che nella mia esperienza comunque.

dimensione di buffer 3.. C'è un metodo statico AudioRecord.getMinBufferSize ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top