現時点ではにJSlider
を使用して、自分のPCのマスターボリュームを制御しようとしています。これまでのところ、私は自分のPCのメインスピーカーのポートを見つけることができました。しかし、私はそれをうまく呼び出してgetValue()やsetValue()のようなメソッドを実行する方法を知らない。私はそれのすべてのための私のPCを検索するには、次のコードを使用しているコンピュータのメイン出力を制御するのに役立つ必要がありますスピーカー
は、オーディオデバイスです:
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ウェブサイトを使用しています。
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を取得できないのですか?このコードを修正して私のスピーカーをコントロールするにはどうしたらいいですか?