【发布时间】:2013-03-19 23:50:18
【问题描述】:
在AudioServicesPlayAlertSound的文档中,它说我可以在播放声音时禁用振动:
iPhone—播放指定的声音。如果用户已配置 环上振动的设置应用程序,也调用振动。 但是,如果您的应用的音频会话是 配置了 AVAudioSessionCategoryPlayAndRecord 或 AVAudioSessionCategoryRecord 音频会话类别。
但是,即使在将我的类别设置为“播放和录制”后,我的 iPhone 4S (iOS 5.1.1) 仍然感到震动。它同时响起和振动。
#import <AudioToolbox/AudioServices.h>
#import <AVFoundation/AVAudioSession.h>
NSError* error;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord
error:&error];
if (error == nil) {
AudioServicesPlayAlertSound(1000);
}
我也试过AudioServicesPlaySystemSound,但结果是一样的。我想禁用振动的原因是因为我正在制作一个应用程序,用户必须将她的手机放在很远的地方,并且手机不应该因振动而翻倒。
【问题讨论】:
-
你查了吗this
-
@RDC 您发布的链接中的解决方案也使用
AudioServicesPlaySystemSound。它有同样的问题,在某些声音 ID 上振动,例如 1000(电子邮件接收音效)。 -
我在文档中看到的唯一公开的常量是
kSystemSoundID_Vibrate。您是如何想出“1000”作为通过AudioServicesPlaySystemSound()的合法事物的? (它也适用于我,但这似乎很脆弱。)Apple 似乎有可能将振动硬编码为特殊的声音。由于这些是私人声音,Apple 不需要它们遵循您上面引用的文档似乎是合理的。 -
@JonBrooks 整个系统声音常量集合在这里:iphonedevwiki.net/index.php/AudioServices
-
@JoJo 你知道 Digisocial 使用的一些特定声音吗?
标签: iphone ios cocoa-touch