5

我正在尝试录制小型录音以从服务中查找声压级,但 Android 不会让我访问硬件。我在 Logcat 中收到以下错误:

替代文字

错误来自以下代码:

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 仍然为空。Android 在定义处拒绝了我的程序请求。有谁知道那些errno的指示?我在网上找不到清单。

录音文件

谢谢

4

1 回答 1

19

检查三件事:

  1. 您的权限(您需要授予 RECORD_AUDIO 权限)

  2. 您是否运行过一次而不是调用 recordInstance.release()?如果是这样,您可能已经占用了音频资源,并且在您重新启动手机之前它可能无法正常工作。无论如何,我在我的经验中发现了这一点。

3.缓冲区大小。有一个静态方法 AudioRecord.getMinBufferSize()

于 2010-12-23T05:01:11.403 回答