【问题标题】:How to get iPhone OS 3.1 muffled keyboard sound?如何获得 iPhone OS 3.1 低沉的键盘声音?
【发布时间】:2010-12-03 14:15:36
【问题描述】:

我已将 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 声音被适当地消音了。

干杯

魔法师

【问题讨论】:

  • 你已经提供了一种关闭它的方法,对吧?我认识的大多数人都非常讨厌这种声音。
  • 刚刚为它添加了赏金。我希望有一个完整的解决方案,感觉(例如声音)与真实的东西完全一样。

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


【解决方案1】:

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

【讨论】:

  • 我必须设置哪个音量来模仿 iPhone 的键盘 Tock?
  • 音量属性是一个浮点数 - 介于 0.0 和 1.0 之间,尽管看起来超过 1.0 的值会产生更高的音量。您可能会注意到,键盘声音会随着您更改 iPhone 的音量而变化。我会从 0.5 开始,看看比较如何。
  • 我使用 ProLevel (katsurashareware.com/pgs/prolevel.html) 来测量默认键盘的输出电平,结果在 0.45 到 0.5 之间
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    使用 0x450 作为 SystemSoundID 在正确的音量下对我有用 - 请注意,它不尊重键盘点击打开/关闭首选项。

    我不确定它的便携性——它适用于我的模拟器和第三代 iPod Touch。我怀疑它适用于所有设备,但可能会在软件更新中更改,恕不另行通知。

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

    【讨论】:

    • 谢谢,这正是我想要的。
    • 苹果会拒绝这个还是应用商店合法?
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2023-03-14
      相关资源
      最近更新 更多