使用Java调节电脑音量?

4

我希望可以通过一个命令将电脑的主音量调高或者调低至100%或0%。 我看到可以使用FloatControl来实现,但是我不确定该如何使用。


请参考Can Java Sound be used to control the system volume?了解不好的消息。 - Andrew Thompson
2个回答

4
请查看使用JavaSound控制Windows XP主音量的内容。
来自链接的内容:
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();  
            }  
        }  
    }  
} 

4
考虑将该链接中的一些信息放入您的回答正文中。 - arshajii
是的,这样更好,谢谢 :) 我只是问一下,因为仅提供链接的答案并不被认为是特别好的。 - arshajii
是的,对不起。我只是不想从链接中复制太多信息,然后因此被踩。 - syb0rg
请参阅Can Java Sound be used to control the system volume?了解有关该源(以及此问题总体上)的坏消息。 - Andrew Thompson

2
在播放特定音频剪辑时,可以使用 FloatControl
AudioInputStream audioInputStream = 
   AudioSystem.getAudioInputStream(new File("MyClip.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
FloatControl volumeControl = 
    (FloatControl) clip.getControl(FloatControl.Type.VOLUME);
volumeControl.setValue(10.0f); // Increase volume by 10 decibels.
clip.start();

另请参见:使用控件处理音频

很不幸,目前可用的Java声音控件都无法影响系统音量。请参考我的相关问答链接以获取更多细节。 - Andrew Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接