我有一个警报声.我从不希望它“大声”和惊人,所以我通过[NSSound setVolume]将它减少到一个不大声的可听音量.
但似乎音量是相对于当前系统音量设置的.因此,如果我针对max-system-volume的情况减少它,我在低系统容量的情况下听不到它.
如果我使用:[sound setVolume:0.1];
当系统设置为满音量时听起来很棒.但如果系统音量为1/3,则根本听不见.
基本上我想为声音设置最大音量.如果系统音量高于该音量,它将以我预设的最大音量播放.但是,如果系统容量低于系统容量,则会根据系统容量降低系统容量.
像这样:
系统= 1
-Sound = .3
系统= .7
-Sound = .3
系统= .3
-Sound = .3
系统= .2
-Sound = .2
唯一的方法是手动检查系统音量并相应地设置我的声音吗?
最佳答案 NSSound的音量对应于您在QuickTime播放器,iTunes等中看到的音量滑块.它是特定声音的音量,与系统音量相关的和(如您所见)分开.
您可以通过查询Audio Hardware API来获取当前系统卷.获取默认声音输出设备,然后获取其音量.然后,您可以查看它是否高于或低于您想要的音量级别.
(值得注意的是,实际上没有一个全局“系统卷”.有两个默认输出设备和任意数量的具体输出设备,每个都有自己的卷.“系统卷”通常是指默认输出设备的音量.)
但请注意,这不是系统上任何其他应用程序的工作方式,因此这种行为对用户来说似乎是不可预测的.预计错误报告的行为“当系统音量超过一定水平时,音量滑块不起作用”.