如何播放 macOS “垃圾箱”系统声音?
Posted
技术标签:
【中文标题】如何播放 macOS “垃圾箱”系统声音?【英文标题】:How to play the macOS "Trash" system sound? 【发布时间】:2021-07-15 09:32:57 【问题描述】:我在里面发现了几个 macOS 系统声音
/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds
当您在 dock/drag to trash.aif
的查找器中删除文件时,包括垃圾声音。
但是我找不到播放这些声音的 API。我真的不想硬编码任何文件路径。
PS:一种选择可能是将声音简单地复制到我自己的应用程序包中,但如果可能的话,我也想避免这种情况(还有许可?)。
【问题讨论】:
【参考方案1】:导入AudioToolbox
框架并使用AudioservicesPlaySystemSound
函数。参数值未记录在案,并且可能与硬编码路径一样更改。它应该通过应用商店的审核,因为它不是私有 API。
//drag to trash.aif
AudioServicesPlaySystemSound(0x10);
//poof item of dock.aif
AudioServicesPlaySystemSound(0xf);
唯一记录在案的值是:
CF_ENUM(SystemSoundID)
kSystemSoundID_UserPreferredAlert = 0x00001000,
kSystemSoundID_FlashScreen = 0x00000FFE,
// this has been renamed to be consistent
kUserPreferredAlert = kSystemSoundID_UserPreferredAlert
;
这里是未记录值的列表
1 "Volume Mount.aif"
2 "Volume Unmount.aif"
3 "Media Keys.aif"
4 "Sticky Keys ON.aif"
5 "Sticky Keys OFF.aif"
6 "Sticky Keys MODIFER.aif"
7 "Sticky Keys Locked.aif"
8 "Sticky Keys Stuck.aif"
9 "Mouse Keys ON.aif"
10 "Mouse Keys OFF.aif"
11 "Slow Keys, 1st Key Pressed.aif"
12 "Slow Keys, Key Registered.aif"
13 "empty trash.aif"
14 "move to trash.aif"
15 "poof item off dock.aif"
16 "drag to trash.aif"
17 "InkSoundBecomeMouse.aif"
18 "InkSoundStroke1.aif"
19 "InkSoundStroke2.aif"
20 "InkSoundStroke3.aif"
21 "InkSoundStroke4.aif"
22 "burn complete.aif"
23 "burn failed.aif"
24 "Grab.aif"
【讨论】:
除了尝试或暴力破解之外,有没有一种很好的方法可以找出哪些值对应于什么声音? @ErikAigner 我用 HopperApp 反汇编了 AudioToolbox 框架。最初我拆卸 Dock 并查看播放声音的系统调用。以上是关于如何播放 macOS “垃圾箱”系统声音?的主要内容,如果未能解决你的问题,请参考以下文章