2010-12-03 69 views
5

我正在尝试使用小录音从服务中找到声压级,但Android不会让我访问硬件。我收到以下错误,在logcat中:无法访问AudioRecorder

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在定义时拒绝我的程序请求。有人知道那些errno的含义吗?我无法在网上找到列表。

AudioRecord Docs

感谢

回答

19

检查三件事情:

  1. 您的权限(你需要给权限RECORD_AUDIO)

  2. 你有没有运行此一次,不叫recordInstance 。发布()?如果是这样,您可能已经绑定了音频资源,并且在您重新启动手机之前可能无法工作。无论如何,我已经发现了我的经历。

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

+3

它是recordInstance.release()。谢谢 – FuegoFingers 2010-12-23 08:06:13