如何在iPhone中的静音模式下使用AVAudioPlayer播放声音
我甚至想在iPhone中以静音模式播放声音。
可以通过使用AVAudioPlayer(不使用AVAudioSession)
(对于ios 3.0+)
提前致谢。
其实,你可以做到这一点。 它通过audio会话进行控制,与AVAudioPlayer
本身无关。 你为什么不想使用AudioSession? 他们在一起玩得很好
在你的应用程序中,你应该初始化audio会话,然后你也可以告诉你打算播放什么样的audio。 如果您是音乐播放器,那么即使启用了振铃/静音开关 ,用户也希望听到audio。
AudioSessionInitialize (NULL, NULL, NULL, NULL); AudioSessionSetActive(true); // Allow playback even if Ring/Silent switch is on mute UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(sessionCategory),&sessionCategory);
我有一个应用程序,我做这件事,并使用AVAudioPlayer播放audio,并启用戒/无声开关,我可以听到audio。
更新(11/6/2013)
在我上面提到的应用程序中,我成功地使用了上面的代码,我(有一段时间)一直使用下面的代码来实现相同的结果:
AVAudioSession * audioSession = [AVAudioSession sharedInstance]; NSError * error = nil; BOOL结果= NO; 如果([audioSession respondsToSelector:@selector(setActive:withOptions:error :)]){ 结果= [audioSession setActive:YES withOptions:0 error:&error]; // iOS6 + } else { [audioSession setActive:YES withFlags:0 error:&error]; // iOS5及以下 } if(!result && error){ //处理错误 } 错误=无; result = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&error]; if(!result && error){ //处理错误 }
我想我会张贴这个作为替代,根据对这个答案的最新评论。 🙂
MarkGranoff的解决scheme是正确的。 但是,如果你喜欢用Obj-c而不是C来做,下面的工作也是一样的:
NSError *error = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error]; [[AVAudioSession sharedInstance] setActive:YES error:&error];
以上答案是正确的。 以下是Swift版本。
do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) //print("AVAudioSession Category Playback OK") do { try AVAudioSession.sharedInstance().setActive(true) //print("AVAudioSession is Active") } catch _ as NSError { //print(error.localizedDescription) } } catch _ as NSError { //print(error.localizedDescription) }