设置电脑音量

时间:2011-02-11 02:06:54

标签: java volume

我想制作一个

的java程序
  1. 从文件中读取一行(例如,文本为:“Hello”)
  2. 如果Line =“Hello”那么
  3. 如果计算机音量为>则获取计算机音量1然后Volume = volume / 2
  4. 我不知道这个程序的音量部分怎么样。我过去一小时在网上看过,我似乎无法了解如何做到这一点,或者甚至是否可能。

    我忘了添加(我正在使用Windows 7)

3 个答案:

答案 0 :(得分:6)

我编写了一个用于控制音量的实用程序类,它的用法如下:

Audio.setMasterOutputVolume(0.5f);

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

您可以复制并使用该代码。

答案 1 :(得分:2)

我知道这个问题很老,但也许我的回答可以帮助其他人。 我找到了useful tool(下载链接位于页面底部)。 使用此工具,您可以调整系统音量并执行许多其他操作(例如打开CD驱动器)。只需下载它并将nircmd.exe放在硬盘上。然后编写以下内容以调整音量:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(pathToNircmdexe + " setsysvolume 32767.5");

这会将您的系统音量设置为50。 要设置音量,您需要选择0到65535之间的数字。如果要使用0到100之间的数字,请使用以下方法。它将转换您想要的音量(通过使用简单的数学:D)

public void setSystemVolume(int volume)
{
    if(volume < 0 || volume > 100)
    {
        throw new RuntimeException("Error: " + volume + " is not a valid number. Choose a number between 0 and 100");
    }

    else
    {
        double endVolume = 655.35 * volume;

        Runtime rt = Runtime.getRuntime();
        Process pr;
        try 
        {
            pr = rt.exec(nircmdFilePath + " setsysvolume " + endVolume);
            pr = rt.exec(nircmdFilePath + " mutesysvolume 0");

        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
}

注意:可悲的是,这只适用于Windows,

  

&#34;因为Java是跨平台的,所以它不能做特定于平台的事情,比如更改音量或者你想做什么来控制操作系统。您需要使用操作系统的唯一API层来执行此操作。&#34; source

答案 2 :(得分:1)

以下是使用终端命令成功设置系统主卷的方法(我正在使用运行OS X 10.10的Mac):

public static void setOutputVolume(float value)
{
    String command = "set volume " + value;
    try
    {
        ProcessBuilder pb = new ProcessBuilder("osascript","-e",command);
        pb.directory(new File("/usr/bin"));
        StringBuffer output = new StringBuffer();
        Process p = pb.start();
        p.waitFor();
        BufferedReader reader =
                new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = reader.readLine())!= null)
        {
            output.append(line + "\n");
        }
        System.out.println(output);
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}

值可以是.1到7.0之间的任何值,您可以像这样调用方法:

setOutputVolume(3.5f);

这会使系统音量大约为其最大值的一半。我不知道在Windows中设置系统卷的任何命令行选项,如果有人知道,也许他们可以插入?