2011-01-12 9 views
2

Ich versuche, einen MP3-Player in Java zu machen, und ich kann nicht herausfinden, wie man die Lautstärke in ihm steuert.Wie man das Volumen einer SourceDataLine in Java einstellt

Ich habe so etwas wie dies versucht:

  // 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); 
     } 

Alles, was ich bis zu diesem Code geschrieben haben, hat gut funktioniert, aber anscheinend ist die Datenleitung nicht unterstützt Kontrolle, weil sie über diese Aussage IF springt.

Meine Frage ist: Haben Sie eine Idee, warum das passiert und wie könnte ich dieses Problem umgehen, so dass ich das Volumen meiner Anwendung kontrollieren konnte?

Antwort

1

Haben Sie versucht zu sehen, was dataLine.getControls() zurückgibt?

Mit dieser Zeile werden die zugehörigen Steuerelemente abgerufen. Einige Steuerungen dürfen nur verfügbar sein, wenn die Leitung offen ist. Wenn gibt es keine Kontrollen, diese Methode ein Array der Länge gibt 0.

Wenn Sie Volumen würde nicht wollen Sie für die FloatControl.Type.VOLUME Steuerung testen?

+0

dataLine.getControls() gibt diesen Master Gain mit aktuellem Wert: 0,0 dB (Bereich: -80,0 - 6,0206) Mutet Steuerung mit aktuellem Wert: Falsch Balance mit aktuellem Wert: 0.0 (Bereich: -1.0 - 1.0) Schwenken mit aktuellem Wert: 0.0 (Bereich: -1.0 - 1.0) Ich habe mich in der Zwischenzeit mit meinem Code beschäftigt erkannte, dass sich die Werte des Master Gains tatsächlich geändert haben, aber ich kann keine Änderungen im Song hören – Liviu

1

OK GUYS,

Ich fand mein Durcheinander. Ich habe tatsächlich vergessen, die Funktion dataLine.open (audioFormat) aufzurufen, die die Systemressourcen abruft.

So workes der Code nur in Ordnung, falls jemand diese Art von Problemen hat zu

Verwandte Themen