在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
,但结果是一样的。我想禁用震动的原因是,我正在开发一个应用程序,在这个应用程序中,用户必须把手机放得很远,而手机不应因为震动而倾斜。
AudioServicesPlaySystemSound
。 它存在与某些声音ID(例如1000:电子邮件接收提示音效)震动的相同问题。 - JoJokSystemSoundID_Vibrate
。你怎么想到将"1000"作为要传递给AudioServicesPlaySystemSound()
的合法值呢?(虽然这也对我起作用,但这似乎很脆弱。)苹果可能会硬编码振动到特殊声音中。由于这些是私有声音,所以苹果不需要遵循您引用的文档。 - Jon Brooks