Вопрос

Я пытаюсь принять небольшие записи, чтобы найти уровень звукового давления от сервиса, но 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();

Что произойдет, так это то, что RegifinStance никогда не создается должным образом и поэтому, когда он доходит до конца и вызывает запись recorInSstance.Startrecording (), RecordInstance по-прежнему NULL. Android отклоняет мои программы запрос в определении. Кто-нибудь знает, что указывают на эти errno? Я не мог найти список онлайн.

AudioRecord Docs.

Спасибо

Это было полезно?

Решение

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

  1. Ваши разрешения (вам нужно дать разрешение на Record_audio)

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

3. Размер буфера. Существует статический метод AudioRecord.getMinBuffersize ()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top