Управление громкостью запущенных приложений в Mac OS X через Objective-C - PullRequest
2 голосов
/ 24 февраля 2011

Пожалуйста, ознакомьтесь с фрагментами кода объективного-c и полезными ссылками о том, как я могу контролировать все аудиосигналы вывода в OS X?

Я думаю, что это должно быть что-то вроде уровня прокси где-то в слоях логики OS X.

Спасибо!

1 Ответ

4 голосов
/ 25 февраля 2011

Прискорбно, что для этого не существует простого API. К счастью, это не так сложно, просто многословно.

Сначала получите системное устройство вывода:

UInt32 size;
AudioDeviceID outputDevice;
OSStatus result = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOuputDevice, &size, &outputDevice);

Затем установите громкость:

Float32 theVolume;
result = AudioDeviceSetProperty(theDevice, NULL, 0, /* master channel */ false, kAudioDevicePropertyVolumeScalar, sizeof(Float32), &theVolume);

Очевидно, что я пропустил проверку ошибок, которая является обязательной.

Вещи могут быть немного хитрыми, потому что не все устройства поддерживают канал 0 (главный канал). Если это относится к вашему устройству (возможно, так и есть), у вас есть два варианта: запросить устройство о его предпочтительной стереопаре и установить громкость на этих каналах индивидуально, или просто установить громкость на каналах 1 и 2.

...