Управление громкостью в Java-приложении - PullRequest
5 голосов
/ 31 октября 2011

Я довольно новичок в Java. Мне нужно контролировать громкость (громкость вверх / вниз, отключение звука) в приложении Java. Я не мог найти способ сделать это. Я занимаюсь разработкой в ​​системе Linux (для информации).

Я устал этот код:

Java-код:

Port lineIn;
FloatControl volCtrl;
try {
  mixer = AudioSystem.getMixer(null);
  lineIn = (Port)mixer.getLine(Port.Info.LINE_IN);
  lineIn.open();
  volCtrl = (FloatControl) lineIn.getControl(

      FloatControl.Type.VOLUME);
  // Assuming getControl call succeeds, 
  // we now have our LINE_IN VOLUME control.
} catch (Exception e) {
  System.out.println("Failed trying to find LINE_IN"
    + " VOLUME control: exception = " + e);
}

но я получил освобождение

Failed trying to find LINE_IN VOLUME control: exception = java.lang.IllegalArgumentException: Line unsupported: COMPACT_DISC source port

Спасибо за вашу помощь

Ответы [ 2 ]

4 голосов
/ 03 сентября 2012

Иногда элементы управления являются вложенными, что затрудняет независимое от платформы решение. Я написал служебный класс, который используется так:

Audio.setMasterOutputVolume(0.5f);

Исходный код здесь: https://github.com/Kunagi/ilarkesto/blob/master/src/main/java/ilarkesto/media/Audio.java

Пользователи Stackoverflow могут использовать код из Audio.java в соответствии с условиями WTFPL.

0 голосов
/ 31 октября 2011

Я не думаю, что есть константа, которая называется VOLUME. Это MASTER_GAIN. Так что вы должны сделать

volCtrl = (floatControl) lineIn.getControl(FloatControl.Type.MASTER_GAIN);
volCtrl.setValue(you_custom_value);
...