gpt4 book ai didi

java - 需要帮助来控制我的电脑的主输出扬声器

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:07 27 4
gpt4 key购买 nike

目前我正在尝试使用Java 中的JSlider 来控制我PC 的主音量。到目前为止,我已经能够找到我电脑的主扬声器端口。但是,我不知道如何成功调用它并运行像 getValue() 或 setValue() 这样的方法。

我使用以下代码在我的电脑上搜索所有音频设备:

Mixer.Info [] mixers = AudioSystem.getMixerInfo();  
System.out.println("There are " + mixers.length + " mixer info objects");
for (Mixer.Info mixerInfo : mixers)
{
System.out.println("mixer name: " + mixerInfo.getName());
Mixer mixer = AudioSystem.getMixer(mixerInfo);
Line.Info [] lineInfos = mixer.getTargetLineInfo(); // target, not source
for (Line.Info lineInfo : lineInfos)
{
System.out.println(" Line.Info: " + lineInfo);
Line line = null;
boolean opened = true;
try
{
line = mixer.getLine(lineInfo);
opened = line.isOpen() || line instanceof Clip;
if (!opened)
{
line.open();
}
FloatControl volCtrl = (FloatControl)line.getControl(FloatControl.Type.VOLUME);
System.out.println(" volCtrl.getValue() = " + volCtrl.getValue());
}
catch (LineUnavailableException e)
{
e.printStackTrace();
}
catch (IllegalArgumentException iaEx)
{
System.out.println(" " + iaEx);
}
finally
{
if (line != null && !opened)
{
line.close();
}
}
}
}

如何控制我的扬声器线路并更改值?

我用过this到目前为止的帮助网站。


更新

好吧,我想我已经接近了一点。在我的测试 GUI 程序下,我正在尝试使用“获取具有所需控件的行”(您给我的链接)下的 Java 教程代码。我将它粘贴到我的 JSlider 的更改监听器下的程序中。

这是它的样子:

Port SPEAKER;
FloatControl volCtrl;
try {
Mixer mixer = AudioSystem.getMixer(null);
SPEAKER = (Port)mixer.getLine(Port.Info.SPEAKER);
SPEAKER.open();
volCtrl = (FloatControl) SPEAKER.getControl(

FloatControl.Type.VOLUME);

} catch (Exception e) {
System.out.println("Failed trying to find LINE_IN"
+ " VOLUME control: exception = " + e);
}

每当我移动 slider 时,它都会打印出错误异常消息“尝试查找失败...”。为什么它不让我在主输出扬声器上获得 volCtrl?如何修复此代码以控制我的 SPEAKER?

最佳答案

JavaRanch 的好发现!我在那里得到了很多宝贵的帮助。

一旦找到您的线路,本教程将展示如何制作控件:http://docs.oracle.com/javase/tutorial/sound/controls.html

但有时高值和低值是出乎意料的。我找到了一条范围从 -80 到 +6 的线(它被设置为模仿 VU 表的分贝范围)。因此,您可能必须对 JSlider 输出进行一些数值转换才能获得合理匹配的 Control 值,尤其是在 Control 是指数的情况下。

关于java - 需要帮助来控制我的电脑的主输出扬声器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10624202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com