android - 无法访问录音机

标签 android audio audiorecord

我正在尝试通过小型录音来查找服务的声压级,但 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 仍然为空。 Android 在定义时拒绝了我的程序请求。有谁知道那些 errno 表示什么?我在网上找不到列表。

AudioRecord Docs

谢谢

最佳答案

检查三件事:

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

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

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

关于android - 无法访问录音机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342482/

相关文章:

android - AudioRecord同时播放音频-访问输出播放数据

android - onPeriodicNotification 和 onMarkerReached 之间的区别 - Android

android - 在 eclipse 中为 android 项目创建 xml 文件时出错

android - 将付费应用迁移到 Google Play 上的应用内购买

ios - 如何提高 MPMediaItem 的频率范围? (类似于参数均衡器,例如,将 500 Hz 提升 12 dB)

iOS Swift - 使用蓝牙外置扬声器时音质不佳

android, AudioRecord.read() --> 缓冲区溢出,如何处理缓冲区?

android - 无法将新的 APK 文件上传到 Android Play 商店

android - 在 Android 5.0 Lollipop 上以编程方式在 View 上设置主题

javascript - 没有 getUserMedia 的声音分析