JSlider
을 Java
에 사용하여 PC의 마스터 볼륨을 제어하려고합니다. 지금까지 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();
}
}
}
}
어떻게 내 스피커 라인의 제어를 얻고 값을 변경 않습니다
내가 모든 내 PC를 검색하려면 다음 코드를 사용하고 오디오 장치는?
나는 지금까지 도움을 청하니 this 웹 사이트를 사용했습니다.
UPDATE 내가 조금 더 가까이 온 것 같아요, 그래서
좋아요. 내 테스트 GUI 프로그램에서 Java 튜토리얼의 코드를 "원하는 컨트롤이있는 라인 얻기"(당신이 내게 준 링크)를 사용하려고합니다. JSlider의 Change Listener 아래에 내 프로그램에 붙여 넣었습니다. 이는 모습입니다
: 나는 그것이 오류 예외 메시지를 출력한다 슬라이더 이동 때마다
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);
}
"찾기 위해 노력하고 실패를 ...". 왜 내 출력 스피커에서 volCtrl을 얻을 수 없습니까? 스피커를 제어하려면이 코드를 어떻게 수정하면됩니까?