我有一个能读取麦克风的应用程序。具体来说,我正在探测麦克风上的吹气声;)它在很多HTC设备上都不起作用。我买了一个HTC Droid Eris以及一个HTC Droid难以置信。除了这些,我有很多朋友的报告说,宏达电的设备也经历了这个问题,包括相对新的宏达电雷电。
因此,调试这款应用程序就会发现,在星巴克,周围房间的噪音记录在4000到11000之间。一旦我吹进麦克风,输入音量就会下降到400 0度:每次,一直都是。
有人知道这是否可以以编程方式禁用吗?
我就是这么读输入的..。
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;
}
}发布于 2012-10-24 23:01:28
它在很小的程度上是可以安置的。
使用音频源MediaRecorder.AudioSource.VOICE_RECOGNITION而不是MediaRecorder.AudioSource.MIC将关闭该输入的音频过滤器。一般来说,从设备到设备的过滤来看,这是一种疯狂的西方。即使使用VOICE_RECOGNITION也不是完美的,因为只有在冰淇淋三明治兼容性定义中才采用了关闭过滤器。HTC在冰淇淋三明治之前就使用了它,所以对于你的情况来说,这可能是正确的选择。
来自Android4.0兼容性定义文档第5.3节
除了上述录制规范外,当应用程序开始使用
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION音频源录制音频流时:
https://stackoverflow.com/questions/10424133
复制相似问题