How to get iPhone OS 3.1 muffled keyboard sound?
我已将 iPhone 的 Tock 声音添加到我自己的自定义键盘中,如下所示:
1 2 3 4 5 6 | NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"]; SystemSoundID soundID; AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID); AudioServicesPlaySystemSound(soundID); // we don't dispose of the sound to keep the sound in the cache for the next time //AudioServicesDisposeSystemSoundID(soundID); |
然而,在 iPhone OS 3.1 中,键盘的 Tock 声音被抑制了,例如比其他声音和 3.0 中的声音要安静得多。我的方法的声音仍然很大并且处于最大音量。如何获得与 iPhone 的默认键盘相同的音量?
顺便说一句,Twitterrific 中的 Tock 声音被适当地消音了。
干杯
法师先生
使用 0x450 作为 SystemSoundID 在正确的音量下为我工作 - 请注意,它不尊重键盘点击打开/关闭偏好。
我不确定它的便携性——它适用于我的模拟器和第三代 iPod Touch。我怀疑它适用于所有设备,但可能会在软件更新中更改,恕不另行通知。
我通过在 AudioServicesPlaySystemSound 上设置断点并按普通键盘键得到这个数字 - 第一条汇编指令将 SystemSoundID 复制到寄存器中,因此您可以在调试器的"寄存器"视图中看到它。
使用 AVAudioPlayer 而不是 AudioServices,您将可以访问允许您降低和提高声音音量的音量属性。
通过使用支持 UIInputViewAudioFeedback 的客户输入视图,您可以以正确的音量播放声音并尊重用户的按键声音设置。
这可能很愚蠢,但我在其他示例代码中看到还有一个