JAVA用JSlider改变音量

时间:2014-07-14 07:29:58

标签: java audio volume

我有一个简单的应用程序的问题,可以改变Windows中的音量。我在互联网上找到了一些代码来源,经过我的修改后它才有效,但只能在我的电脑上使用。这是因为我的代码不通用,因为我指的是一个特定的数组,音量控制正在工作。我必须创建一般代码。这个 AudioSystem.getMixerInfo(); 创建了一系列混音器。我怎样才能找到这些阵列中的哪一个用于计算机的扬声器?

这是代码:

public void volumecontrol(){
javax.sound.sampled.Mixer.Info[] mixers = AudioSystem.getMixerInfo();

    Mixer.Info mixerInfo = mixers[4];
    Mixer mixer = AudioSystem.getMixer(mixerInfo);
    Line.Info[] lineinfos = mixer.getTargetLineInfo();

        try {
            Line line = mixer.getLine(lineinfos[0]);
            line.open();
            if(line.isControlSupported(FloatControl.Type.VOLUME)){
                control = (FloatControl) line.getControl(FloatControl.Type.VOLUME);

                control.setValue((float) 0.7);
                int value = (int) (control.getValue()*100);                          

                slider = new JSlider((int)control.getMinimum()*100,(int)control.getMaximum()*100, value);
                slider.setMajorTickSpacing(10);
                slider.setPaintLabels(true);
                System.out.println("Volume:"+control.getValue());                     

                j.add(slider);
                j.pack();
            }
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        }

        slider.addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(ChangeEvent arg0) {
                control.setValue(slider.getValue()/100f);

            }
        });
    }

感谢您的回答!

0 个答案:

没有答案