所以,我的主要问题是我还不知道实际的问题是什么。我有两个麦克风,当使用任何一个时,我的程序检测 db 中的音量只能检测到 90 max。我不确定这是对麦克风的限制,还是程序的限制,但它清楚地表明它是 90db,并且无论是否是它都不会更高。如果这证明有帮助,我的麦克风是便宜的罗技网络摄像头和蓝色的雪人麦克风(不便宜)。
如果是麦克风,为什么会发生这种情况,如果不是,那么这是我用来确定数据库级别的代码:
AudioFormat audioFormat = getAudioFormat();
TargetDataLine targetDataLine;
try {
targetDataLine = (TargetDataLine) AudioSystem.getTargetDataLine(audioFormat);
targetDataLine.open();
targetDataLine.start();
byte [] buffer = new byte[2000];
while (true) {
int bytesRead = targetDataLine.read(buffer,0,buffer.length);
if (bytesRead >= 0) {
max = (int) (buffer[0] + (buffer[1] << 8));
for (int p=2;p<bytesRead-1;p+=2) {
int thisValue = (int)(buffer[p] + (buffer[p+1] << 8));
if (thisValue > max) max = thisValue;
}
}
}
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
currentDecibelLabel.setText(Integer.toString((int)(20 * Math.log10(max)))));
有任何想法吗?谢谢!!
编辑:你知道,'max' 是一个global
int
.