non possono accedere AudioRecorder
-
30-09-2019 - |
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:
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.
Grazie
Soluzione
Controlla tre cose:
-
Le autorizzazioni (è necessario dare il permesso per RECORD_AUDIO)
-
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 ()