6

我有一个读取麦克风的应用程序。具体来说,我检测到对麦克风吹气;)它不适用于很多 HTC 设备。我拿起了 HTC Droid Eris 和 HTC Droid Incredible。除了那些我有很多朋友的报告之外,他们的 HTC 设备也遇到了这个问题,包括相对较新的 HTC Thunderbolt。

因此,调试应用程序表明,星巴克的环境房间噪音记录在 4000-11000 之间。一旦我对着麦克风吹气,输入音量就会下降到 4000 秒:每次,一直。

任何人都知道这是否可以通过编程方式禁用?

这就是我阅读输入的方式...

    int minBufferSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
    AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize);
    short[] buffer = new short[minBufferSize];

    audioRecord.startRecording();
    audioRecord.read(buffer, 0, minBufferSize);

    int i = 0;
    for (short sample : buffer) {
        inputVolume = Math.abs(sample);
        maxVolumeIn = (inputVolume > maxVolumeIn) ? inputVolume : maxVolumeIn;
        if (inputVolume >= micSensitivity) {
            Log.d(TAG, "Blowing Detected. Volume Level: " + inputVolume);
            break;
        }
    }
4

1 回答 1

5

它可以设置到非常小的程度。

使用音频源MediaRecorder.AudioSource.VOICE_RECOGNITION而不是MediaRecorder.AudioSource.MIC将关闭该输入的音频过滤器。一般来说,就您在设备之间看到的过滤而言,这是一种狂野的西部。即使使用VOICE_RECOGNITION也不是完美的,因为仅在 Ice Cream Sandwich 兼容性定义中采用了过滤器。HTC 在 Ice Cream Sandwich 之前使用过它,但对于您的情况,它可能是正确的选择。

来自Android 4.0 兼容性定义文档的第 5.3 节:

除了上述录制规范外,当应用程序开始使用android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION音频源录制音频流时:

  • 如果存在降噪处理,则必须禁用。
  • 如果存在自动增益控制,则必须禁用。
于 2012-10-24T23:01:28.170 回答