Не удается получить доступ к AudioRecorder - PullRequest
5 голосов
/ 03 декабря 2010

Я пытаюсь взять небольшие записи, чтобы найти уровень звукового давления от службы, но Android не даст мне доступ к оборудованию. Я получаю следующие ошибки в Logcat:

alt text

Ошибка происходит из следующего кода:

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

Что происходит, так это то, что recordInstance никогда не создается должным образом, и поэтому, когда он достигает конца и вызывает recordInstance.startRecording (), recordInstance все еще имеет значение null. Android отклоняет мой запрос программы по определению. Кто-нибудь знает, что указывают эти ошибки? Я не могу найти список в Интернете.

Документация AudioRecord

Спасибо

1 Ответ

19 голосов
/ 23 декабря 2010

Проверьте три вещи:

  1. Ваши разрешения (вам необходимо дать разрешение на RECORD_AUDIO)

  2. Вы запускали это один раз и не вызывалиrecordInstance.release ()?Если это так, возможно, вы связали аудио ресурсы, и, скорее всего, они не будут работать, пока вы не перезагрузите телефон.В любом случае я обнаружил, что по своему опыту.

3. Размер буфера.Есть статический метод AudioRecord.getMinBufferSize ()

...