【问题标题】:How to adjust speaker volume from Java program?如何从 Java 程序调整扬声器音量?
【发布时间】:2009-11-14 16:54:28
【问题描述】:

我运行的是Win Vista,在窗口右下角的时钟旁边有一个喇叭图标,我可以点击它来调节音量,不知道我的Java程序中有没有办法自动执行此操作?

例如,当我的 Java 程序启动时,它会将音量调到 80,当程序退出时,它会将音量变回原来的水平。如果有办法实现这种效果,我不介意使用Runtime.getRuntime().exec()

【问题讨论】:

    标签: java volume


    【解决方案1】:

    Java 的主要前提之一是用它编写的应用程序应该在任何平台上工作。这就是为什么他们在 Java 1.4 SDK 中放弃了对环境变量的支持,但后来又重新启用了它。这就是为什么无法使用“cls”之类的命令来清理 Java 控制台的原因,因为它可以在某些平台上运行,但在其他平台上却不行。

    话虽如此,您将无法使用 Java 进行操作。您可以使用 C++ 创建 JNI DLL,也可以使用 C++ 或 C# 创建应用程序。

    有关在 C++ 中执行此操作的更多信息:

    change volume win32 c++

    【讨论】:

    • 关于控制台控制的争论被打破了。 ANSI 序列没有任何问题,只是 Windows 不支持开箱即用。
    • @Thorbjorn 我知道我的例子不适合这种情况。
    • @EricSchafer 但是您可以通过使用 C# 中的 Windows API(使用 DllImport)来做到这一点,对吧?
    • 或者使用 jna 和一个 dll(我猜和 jni 一样)
    【解决方案2】:

    查看javax.sound API。 Here 是一个关于此的教程,特别是 here(在更改线路的音量一章中)您可以阅读如何设置音量。这些知识应该提供足够的 Google 关键字来查找示例。

    【讨论】:

      【解决方案3】:

      我使用以下代码来模拟音量调节:

      Robot robot;             // Set speaker volume to 80
      try
      {
        robot=new Robot();
        robot.mouseMove(1828,1178);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(90);
        robot.mouseMove(1828,906);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(260);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
      }
      catch (AWTException ex)
      {
        System.err.println("Can't start Robot: " + ex);
        System.exit(0);
      }
      

      它成功了!

      【讨论】:

        【解决方案4】:

        通过鼠标点击打开音量控制后,如果相对调整适合您,您还可以使用向上/向下键命令调整音量。

        import java.awt.event.KeyEvent;    
        robot.keyPress(KeyEvent.VK_UP);
        robot.delay(200);
        robot.keyRelease(KeyEvent.VK_DOWN);
        

        【讨论】:

          猜你喜欢
          • 2011-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          • 2012-08-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多