2011-01-12 8 views
2

私はJavaでmp3プレーヤーを作ろうとしています。音量を制御する方法を理解できません。私はこのコードまで書かれているJavaでSourceDataLineの音量を設定するには

  // Adjust the volume on the output line. 
     if (dataLine.isControlSupported(FloatControl.Type.MASTER_GAIN)) { 
      FloatControl volume = (FloatControl) dataLine.getControl(FloatControl.Type.MASTER_GAIN); 
      volume.setValue(100.0F); 
     } 

すべてがうまく働いたが、それは、このIF文の上でジャンプしているため、明らかデータラインはサポートされている制御されていません:

私はこのような何かを試してみました。

私の質問は次のとおりです。これがなぜ起こっているのか、この問題を回避するために私のアプリケーションのボリュームを制御するにはどうしたらいいですか?

答えて

1

dataLine.getControls()が返すものは何ですか?

に関連付けられたコントロールのセットを取得します。回線が開いているときには、一部のコントロールは しか利用できない場合があります。 場合は何もコントロールが長さ0

の配列を返します この方法は、あなたがしたい場合は、ボリュームは、あなたがFloatControl.Type.VOLUME制御のためにテストする必要はないでしょうか、存在しませんか

+0

dataLine.getControls()現在の値でこの マスターゲインを返します:0.0デシベル(範囲:-80.0 - 6.0206) ミュート現在の値でのコントロール:False 現在の値を持つバランス:0.0(範囲:-1.0 - 1.0) 現在の値でパン:0.0(範囲:-1.0 - 1.0) 私はその間に自分のコードを乱しています。マスターゲインの値が実際に変更されていることに気がついたが、その曲の中のどんな音も聞こえない – Liviu

1

OK GUYS、

私は私の混乱を発見しました。私は実際には、システムリソースを取得するdataLine.open(audioFormat)関数を呼び出すことを忘れていました。

だからコードがケースには誰もが問題のこの種を持って、うまくworkesすぎ

関連する問題