2011-02-11 88 views
1

我想做出集计算机

  1. 读一行从一个文件中的Java程序(ex.File文字是:“你好”)
  2. 如果行=“你好”,然后
  3. 如果计算机音量大于1则获得计算机音量然后音量=音量/ 2

我不知道该程序的音量部分如何。我在网上查了一下过去一小时,似乎无法想出如何做到这一点,或者甚至有可能。

我忘了补充(我使用Windows 7)

+1

相关讨论:http://stackoverflow.com/questions/3249550/is-there-a-way-in-java-jna-to-set-the-master-system-volume-reliably-in -xpvi – Igor 2011-02-11 02:23:51

+0

查看[使用JavaSound控制主卷]的链接(http://www.coderanch.com/t/492931/java/java/Adjusting-master-volume-Windows-XP)。不过,对于它的普遍性有一些疑问。 – 2011-02-11 02:58:03

回答

1

这是我如何成功地使用终端命令(我用的是Mac运行OS X 10.10)设置的系统主音量:

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.1至7.0,你会打电话这样的方法:

setOutputVolume(3.5f); 

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

1

我知道这个问题很老,但也许我的答案帮助其他人。 我找到了useful tool(下载链接位于页面底部)。 使用此工具,您可以调整系统音量并执行许多其他操作(例如打开您的光驱)。只需下载它并将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,

“因为Java是跨平台的,它不能做平台特定的东西,比如改变音量或者你想要控制操作系统的任何东西,你需要使用操作系统独特的API层来做到这一点。“ source