我正在尝试录制一些小唱片,以从服务中找到声压级,但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仍为null。 Android在定义时拒绝了我的程序请求。有人知道那些errno表示什么吗?我找不到在线列表。

AudioRecord Docs

谢谢

最佳答案

检查三件事:

  • 您的权限(您需要授予RECORD_AUDIO的权限)
  • 您是否曾经运行过一次而不是调用recordInstance.release()?如果是这样,您可能已经束缚了音频资源,并且在重新启动手机之前可能无法工作。无论如何,我都发现了这一点。

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

    07-26 09:42