目前我正在尝试从麦克风录制声波并在 Java 中实时显示振幅值。我遇到了 Targetdataline,但我在理解我从中获取数据时遇到了一些麻烦。
来自 Oracle 的示例代码指出:
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format, line.getBufferSize());
ByteArrayOutputStream out = new ByteArrayOutputStream();
int numBytesRead;
byte[] data = new byte[line.getBufferSize() / 5];
// Begin audio capture.
line.start();
// Here, stopped is a global boolean set by another thread.
while (!stopped) {
// Read the next chunk of data from the TargetDataLine.
numBytesRead = line.read(data, 0, data.length);
****ADDED CODE HERE*****
// Save this chunk of data.
out.write(data, 0, numBytesRead);
}
因此,我目前正在尝试添加代码以获取幅度值的输入流,但是当我打印添加的代码行中的变量数据时,我得到了大量的字节。
for (int j=0; j<data.length; j++) {
System.out.format("%02X ", data[j]);
}
以前使用过 TargetDataLine 的人知道我可以如何使用它吗?