在iPhone上播放声音,甚至在静音模式下
我想创build一个应用程序,它可以在iPhone处于静音模式时创build声音,音乐或系统声音。 在静音模式下,是否可以播放任何types的音乐,无论是音乐还是系统音调?
这是不可取的,但我是谁说你不能这样做。 你可能有一个很好的理由来播放声音。
如果您正在使用audio会话,请在文件开始处包含<AVFoundation/AVFoundation.h>
[[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类参考。
是的,您可以在手机设置为振动时播放声音。 只需使用AVAudioPlayer类。
默认情况下,播放audio会话声音将不会尊重iPhone上静音开关的设置。 换句话说,如果您拨打电话播放声音,并且iPhone上的静音(硬件)开关设置为静音,您仍然可以听到声音。
这是你想要的。 所以现在你知道当你的手机处于静音模式时播放audio会话仍然会播放你只需要知道如何创build一个audio会话来播放声音的声音,如下所示: http:// iosdevelopertips .COM /audio/播放,短声,audio会话services.html
SystemSoundID soundID; NSString *path = [[NSBundle mainBundle] pathForResource:@"RapidFire" ofType:@"wav"]; AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID); AudioServicesPlaySystemSound (soundID);
为此,您将需要导入头文件,并将AudioToolbox.framework添加到您的项目中。
就是这样。
所以从这个答案你现在知道你可以播放声音,而手机振动。 您不需要额外或特殊的代码来允许您执行此function,因为默认情况下已经这样做。
PK
适用于iOS 6及以上版本
NSError *setCategoryErr = nil; NSError *activationErr = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryErr]; [[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
Swift 2和Swift 3
do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.sharedInstance().setActive(true) } catch { print(error) }
把这个放在你的viewDidLoad
:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
为了在静音模式下播放声音,甚至当它进入背景时,试试这个:
把这段代码放到应用程序中:didFinishLaunchingWithOpitons:
[[AVAudioSession sharedInstance] setDelegate:self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [[AVAudioSession sharedInstance] setActive:YES error:nil]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
和applicationDidEnterBackground中的这段代码:
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
还设置播放audio/空气播放的背景模式,并包括AVFoundation标题。
对于Objective C,您可以使用以下代码播放系统声音:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; *The system path could be modified.* NSString *path = @"/System/Library/Audio/UISounds/begin_record.caf"; NSURL *url = [NSURL fileURLWithPath:path]; player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; [player play];