2011-01-12 4 views
2

Я пытаюсь создать mp3-плеер в java, и я не могу понять, как контролировать громкость в нем.Как установить громкость SourceDataLine в Java

Я пытался что-то вроде этого:

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

Все, что я не написал, пока этот код работал нормально, но, видимо, DATALINE не контроль поддерживается, поскольку он перепрыгивает через это заявление IF.

Мой вопрос заключается в следующем: Есть ли у вас какие-либо идеи, почему это происходит и как я могу решить эту проблему, чтобы я мог контролировать объем моего приложения?

ответ

1

Вы пытались посмотреть, что вернет dataLine.getControls()?

Получает набор элементов управления, связанных с этой линией. Некоторые элементы управления могут быть доступны только при , когда линия открыта. Если нет никаких элементов управления, этот метод возвращает массив длины 0.

Если вы хотите объем вы не хотите, чтобы проверить для контроля FloatControl.Type.VOLUME?

+0

dataLine.getControls() возвращает этот Master Gain с текущим значением: 0,0 дБ (диапазон: -80,0 - 6,0206) Mute Управление с текущим значением: False Баланс с текущим значением: 0,0 (диапазон: -1,0 - 1,0) Панорамирование с текущим значением: 0,0 (диапазон: -1,0 - 1,0) Я в то же время возился с моим кодом и понял, что значения Master Gain IS действительно изменены, но я не могу услышать никаких песен в песне – Liviu

1

OK GUYS,

Я нашел свой беспорядок. Я фактически забыл вызвать функцию dataLine.open (audioFormat), которая приобретает системные ресурсы.

Так код workes просто отлично, в случае, если кто-нибудь имеет такой проблемы тоже