2009-10-03 39 views
7

我已经加入了iPhone的笃声音我自己的自定义键盘是这样的:如何让iPhone OS 3.1屏蔽键盘声音?

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,然而,键盘声笃一直闷闷的,例如比其他声音更沉默,比3.0版更加沉默。我的方法的声音仍然很响,并且音量最大。我怎样才能获得与iPhone默认键盘相同的音量?

顺便说一下,在Twitterrific中的Tock声音是合适的。

干杯

MrMage

+0

你提供了一种方法来关闭它,对吗?我认识的大多数人绝对讨厌那种声音。 – AlBlue 2009-10-05 07:14:57

+0

当然,我做到了。 – MrMage 2009-10-05 08:13:55

+0

刚刚为它添加了一个赏金。我想有一个完整的解决方案,这感觉(如声音)完全像真实的东西。 – MrMage 2009-10-13 21:36:45

回答

5

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

我不知道这是多么便携 - 它适用于我在模拟器和iPod Touch第三代。我怀疑它适用于所有设备,但在软件更新中如有更改,恕不另行通知。

我通过在AudioServicesPlaySystemSound上设置一个断点并按下正常的键盘键 - 第一个汇编指令将SystemSoundID复制到一个寄存器中,从而可以在调试器的寄存器视图中看到它。

+0

谢谢,这正是我想要的。 – MrMage 2009-10-14 20:40:38

+0

苹果是否会拒绝这个或它是否合法? – user3246173 2014-12-31 16:01:08

2

使用AVAudioPlayer代替AudioServices,你将有机会获得一个音量属性,它允许您降低,提高声音的音量。

+0

我必须将它设置为模仿iPhone的键盘Tock? – MrMage 2009-10-05 08:20:33

+0

体积属性是一个浮点数 - 在0.0到1.0之间的任何地方,尽管看起来1.0以上的值会产生更高的体积。 正如您可能注意到的那样,当您更改iPhone的音量时,键盘声音会发生变化。我会从0.5开始,看看如何比较。 – mahboudz 2009-10-05 09:06:08

+0

我使用ProLevel(http://www.katsurashareware.com/pgs/prolevel.html)来测量默认键盘的输出电平,并在0.45到0.5之间找到了一个结果 – esad 2010-05-02 15:23:00

1

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

1

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