在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];