在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
,但结果是一样的。我想要禁用振动的原因是因为我正在制作一个应用程序,用户必须将手机放在远处,手机不应因振动而翻倒。
答案 0 :(得分:8)
我用我的iPhone 4s进行了测试,它完全符合您的要求。
NSError* error;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord
error:&error];
if (error == nil) {
SystemSoundID myAlertSound;
NSURL *url = [NSURL URLWithString:@"/System/Library/Audio/UISounds/new-mail.caf"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &myAlertSound);
AudioServicesPlaySystemSound(myAlertSound);
}
使用AudioServicesCreateSystemSoundID
使用系统声音的文件名创建SystemSoundID
。然后使用AudioServicesPlaySystemSound()
播放没有振动的声音。其他系统声音的文件名可以在下面的链接中找到。
答案 1 :(得分:3)
您是否尝试过播放自己的声音效果而不是Apple内置的声音效果?
如果您在应用中上传音频文件,则可以使用AudioToolBox框架轻松使用它 而你不必再担心振动了。
#import <AudioToolbox/AudioServices.h>
//Initialise your soundID (your app delegate is a good place for this)
SystemSoundID soundToPlay;
NSString *path = [[NSBundle mainBundle] pathForResource:@"<YourFileName>" ofType:@"aif"];
NSURL *pathURL = [NSURL fileURLWithPath : path];
AudioServicesCreateSystemSoundID((__bridge CFURLRef) pathURL, &soundToPlay);
//playback
AudioServicesPlaySystemSound(soundToPlay);