对,好吧。我第一次使用Java来解决问题。我买了一套名为Sennheiser 120 HD的新耳机;但是有一个问题。 如果没有恒定的音频发射,那么耳机的底座将最终超时并关闭。耳机是静电的垃圾,耳朵很可怕。对我来说,这个解决方案目前是全天候播放音乐以防止死亡。也许我很奇怪,但我不想每周7天每天都听音乐。
我相信一个可行的解决办法是不断发出基地可以检测到但我听不到的声音。应用程序需要高效,因为它全天候运行。
我一直在做一些研究,但我对Java没有经验。我无法找到任何发出特定频率的库。有谁知道吗?
在商店的退货政策不再有效之前,最好在 4天内获得此解决方案。如果这不起作用,请注意。
答案 0 :(得分:3)
我认为你会发现听到恒定频率的声音对耳朵是痛苦的。但是,你可以这样做,只使用标准的Java库:
AudioFormat format = new AudioFormat(44000f, 16, 1, true, false);
SourceDataLine line = (SourceDataLine)AudioSystem.getLine(new DataLine.Info(SourceDataLine.class, format));
line.open(format);
line.start();
double f = 440; // Hz
double t = 3; // seconds
byte[] buffer = new byte[(int)(format.getSampleRate() * t * 2 + .5)];
f *= Math.PI / format.getSampleRate();
for(int i = 0; i < buffer.length; i += 2) {
int value = (int)(32767 * Math.sin(i * f));
buffer[i + 1] = (byte)((value >> 8) & 0xFF);
buffer[i] = (byte)(value & 0xFF);
}
line.write(buffer, 0, buffer.length);
line.drain();