2014-01-08 3 views
1

Я пытаюсь изменить том на моем Mac, работающем под управлением OSX Mavericks. Я в настоящее время использую этот код:Объем изменения Java OSX

Runtime.getRuntime().exec("/usr/bin/osascript -e 'set volume 15'"); 

Но, хотя я не получаю никаких ошибок, объем не меняется. Я попытался запустить ту же команду с терминала, и она сработала. Что я делаю не так?

+4

Попытка: Строка [] cmd = {"osascript", "-e", "set volume 15"}; Runtime.getRuntime(). Exec (cmd); – gtgaxiola

+0

Возможно [интеграция OS X для Java] (https://developer.apple.com/library/mac/documentation/Java/Conceptual/Java14Development/07-NativePlatformIntegration/NativePlatformIntegration.html) поможет – gtgaxiola

+1

Теоретически вы также можете сделать 'FloatControl volume = (FloatControl) AudioSystem.getSourceDataLine (null) .getControl (FloatControl.Type.VOLUME); volume.setValue (15); 'Но я не пробовал это в OSX. – VGR

ответ

1

Используйте ProcessBuilder, и установить три части команды (osascript, -e и set volume 15) в виде отдельных «слов» в команде. Затем вы получите Java для обработки правильного цитирования для вас, а не для того, чтобы понять это для себя (что немного сложно при рассмотрении аргументов с пробелами).

Одиночные кавычки являются признаком интерактивной оболочки, а не osascript.

Смежные вопросы