如何获得iPhone OS 3.1低沉的键盘声音?

时间:2009-10-03 15:04:43

标签: iphone objective-c keyboard audio core-audio

我已将iPhone的Tock声音添加到我自己的自定义键盘中,如下所示:

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声音适当地低沉。

干杯

MrMage

4 个答案:

答案 0 :(得分:5)

使用0x450作为SystemSoundID以正确的音量为我工作 - 请注意它不尊重键盘点击开/关偏好。

我不确定这是多么便携 - 它适用于模拟器和iPod Touch第三代。我怀疑它适用于所有设备,但在软件更新时可能会在没有通知的情况下发生变化。

我通过在AudioServicesPlaySystemSound上设置断点并按下普通键盘键来获得此编号 - 第一个汇编指令将SystemSoundID复制到寄存器中,因此您可以在调试器的“寄存器”视图中看到它。

答案 1 :(得分:2)

使用AVAudioPlayer而不是AudioServices,您将可以访问音量属性,以便降低和提高声音的音量。

答案 2 :(得分:1)

这可能很愚蠢,但我在其他示例代码中看到还有一个tick声音文件。从我见过的例子来看,它是ofType:@"caf",所以值得一试。对不起,如果我走了。

答案 3 :(得分:1)

通过使用支持UIInputViewAudioFeedback的客户输入视图,您可以播放正确音量的声音并尊重用户按键声音设置。