gpt4 book ai didi

macos - 如果系统偏好设置默认声音发生更改,如何获取通知

转载 作者:行者123 更新时间:2023-12-03 16:16:28 27 4
gpt4 key购买 nike

这相当简单(我认为)。我只是想在用户更改系统偏好设置 - 声音中的默认声音输入或声音输出设备时在我的应用程序中收到通知。不过,如果我能从苹果文档中找出它,那我就该死了。

顺便说一句,这是针对 OSX 的,而不是 IOS。

谢谢大家!

最佳答案

为默认输出设备设置AudioObjectPropertyAddress:

AudioObjectPropertyAddress outputDeviceAddress = {
kAudioHardwarePropertyDefaultOutputDevice,
kAudioObjectPropertyScopeGlobal,
kAudioObjectPropertyElementMaster
};

然后,使用 AudioObjectAddPropertyListener 注册默认设备中更改的监听器:

AudioObjectAddPropertyListener(kAudioObjectSystemObject, 
&outputDeviceAddress,
&callbackFunction, nil);

回调函数如下所示:

OSStatus callbackFunction(AudioObjectID inObjectID, 
UInt32 inNumberAddresses,
const AudioObjectPropertyAddress inAddresses[],
void *inClientData)

顺便说一句,您还应该使用 AudioObjectPropertyAddress 告诉 HAL 管理自己的通知线程。您可以通过将运行循环选择器设置为 NULL 来完成此操作。实际上,我在设置输出设备监听器之前执行了此步骤。

AudioObjectPropertyAddress runLoopAddress = {
kAudioHardwarePropertyRunLoop,
kAudioObjectPropertyScopeGlobal,
kAudioObjectPropertyElementMaster
};

CFRunLoopRef runLoop = NULL;
UInt32 size = sizeof(CFRunLoopRef);
AudioObjectSetPropertyData(kAudioObjectSystemObject,
&runLoopAddress, 0, NULL, size, &runLoop);

关于macos - 如果系统偏好设置默认声音发生更改,如何获取通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com