我想创建一个应用程序,当iPhone处于静音模式时,它会创建声音,音乐或系统声音.在静音模式下,音乐或系统音调是否可以播放任何类型的声音?
这不可行,但我可以说你不能这样做.你可能有充分的理由去播放声音.
如果您正在使用音频会话,请
在文件的开头添加
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
应该做的伎俩.请注意,如果您播放音乐或声音,则会暂停iPod播放.
完成此操作后,可能在某个播放声音的类的初始化中,您可以实例化如下声音:
// probably an instance variable: AVAudioPlayer *player; NSString *path = [[NSBundle mainBundle] pathForResource...]; NSURL *url = [NSURL fileURLWithPath:path]; player = [[AVAudioPlayer alloc] initWithContentsOfURL:url];
完成后,您可以随时使用它:
[player play]; // Play the sound [player pause]; // Pause the sound halfway through playing player.currentTime += 10 // skip forward 10 seconds player.duration // Get the duration
还有其他不错的东西.查找AVAudioPlayer类引用.
而对于Swift 2,3,4.2
do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.sharedInstance().setActive(true) } catch { print(error) }
是的,当手机设置为振动时,您可以播放声音.只需使用AVAudioPlayer类.
默认情况下,播放音频会话声音不会影响iPhone上静音开关的设置.换句话说,如果您拨打电话播放声音并且iPhone上的静音(硬件)开关设置为静音,您仍然会听到声音.
这就是你想要的.所以现在你知道,当手机处于静音模式时播放音频会话仍然会播放你需要知道如何创建音频会话来播放声音的声音,如下所示:取自本网站:http:// iosdevelopertips .COM /音频/播放,短声,音频会话services.html
SystemSoundID soundID; NSString *path = [[NSBundle mainBundle] pathForResource:@"RapidFire" ofType:@"wav"]; AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID); AudioServicesPlaySystemSound (soundID);
为此,您需要导入头文件,并将AudioToolbox.framework添加到项目中.
就是这样.
所以从这个答案你现在知道你可以在手机振动时播放声音.您不需要额外的或特殊的代码来允许您执行此功能,因为它默认情况下已经这样做了.
PK
适用于iOS 6及更高版本
NSError *setCategoryErr = nil; NSError *activationErr = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryErr]; [[AVAudioSession sharedInstance] setActive:YES error:&activationErr];