Установить громкость компьютера - PullRequest
1 голос
/ 11 февраля 2011

Я хочу сделать Java-программу, которая

  1. Читает строку из файла (например, текст файла: "Hello")
  2. , если Line = "Hello"затем
  3. получить объем компьютера, если объем компьютера> 1, то объем = объем / 2

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

Я забыл добавить (я использую Windows 7)

Ответы [ 3 ]

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

Я написал служебный класс для управления громкостью, который используется следующим образом:

Audio.setMasterOutputVolume(0.5f);

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

Вы можете скопировать и использовать код.

2 голосов
/ 24 мая 2016

Я знаю, что вопрос старый, но, возможно, мой ответ кому-нибудь еще поможет. Я нашел полезный инструмент (ссылка на скачивание внизу страницы). С помощью этого инструмента вы можете регулировать громкость вашей системы и делать много других вещей (например, открыть свой 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,

"поскольку Java является кроссплатформенной, она не может выполнять специфичные для платформы вещи, такие как изменение громкости или все, что вы хотите сделать для управления ОС. Для этого вам нужно использовать уникальный уровень API операционной системы». источник

1 голос
/ 06 февраля 2015

Вот как я успешно установил основной том системы с помощью команды терминала (я использую 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);
    }
}
Значение

может быть в диапазоне от 0,1 до 7,0, и вы бы вызвали метод следующим образом:

setOutputVolume(3.5f);

Это приведет к тому, что объем системы будет примерно вдвое меньше максимального. Я не знаю каких-либо параметров командной строки для установки системного тома в Windows, если кто-нибудь знает о них, возможно, они могут подключиться?

...