2016-12-06 7 views
2

В настоящее время я использую CoreAudio в macOS, чтобы определить, используется ли конкретное устройство ввода аудио. Я пытаюсь найти немного больше информации о том, что происходит с этим устройством, если оно используется, но изо всех сил пытается найти любую информацию о том, как это сделать.Определите, какое приложение использует аудиоустройство

1) Возможно ли найти приложение, которое в настоящее время использует специальное устройство ввода звука?

2) Можно ли определить, использует ли приложение аудиоустройство (ввод или вывод) и отключено ли устройство в этом конкретном приложении?

Благодаря

ответ

2

Если приложение сперло устройство (т.е. имеет монопольный доступ к нему) через kAudioDevicePropertyHogMode, то значение pid_t связанные с этим свойством является идентификатором процесса процесса грубого (или -1, если устройство не забивается.)

В противном случае, по крайней мере для устройств вывода, несколько приложений могут совместно использовать устройство, а различные аудиопотоки смешиваются. В этом случае лучшее, что вы можете сделать (что я знаю), это проверить kAudioDevicePropertyDeviceIsRunningSomewhere, который сообщит вам, используется ли устройство, но не использует какой-либо его процесс.

Для вопроса 2, приглушение звука является собственностью аудиоустройства, в частности kAudioDevicePropertyMute. Если какое-либо приложение устанавливает это свойство в true, то устройство будет отключено для всех приложений.