【问题标题】:Controlling volume in a java application在 Java 应用程序中控制音量
【发布时间】:2011-12-18 20:36:34
【问题描述】:

我在 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

感谢您的帮助

【问题讨论】:

    标签: java volume


    【解决方案1】:

    有时控件是嵌套的,这使得独立于平台的解决方案变得困难。我写了一个实用程序类,它是这样使用的:

    Audio.setMasterOutputVolume(0.5f);
    

    源码在这里:https://github.com/Kunagi/ilarkesto/blob/master/src/main/java/ilarkesto/media/Audio.java

    Stackoverflow 用户可以根据 WTFPL 条款使用 Audio.java 中的代码。

    【讨论】:

      【解决方案2】:

      我不认为有一个叫做 VOLUME 的常量。它的 MASTER_GAIN。所以你应该这样做

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

      【讨论】:

      • 这里一个叫VOLUME的常量,否则它不会编译。
      猜你喜欢
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多