我想即使在iPhone的静音模式下也可以播放声音。
可以通过使用AVAudioPlayer来完成(不使用AVAudioSession)
(适用于ios 3.0以上版本)
提前致谢。
最佳答案
实际上,您可以执行此操作。它是通过 Audio Session 控制的,与AVAudioPlayer
本身无关。您为什么不想使用AudioSession?他们在一起很好玩...
在您的应用中,您应该初始化 Audio Session ,然后还可以告诉您指出要播放哪种音频。如果您是音乐播放器,那么即使启用了铃声/静音开关,用户还是希望听到音频。
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播放音频,并且在启用铃声/静音开关的情况下,我可以听到音频。
更新(11/6/2013)
在上面提到的应用程序中,我成功使用了上面的代码,在一段时间内,我一直在使用以下代码来获得相同的结果:
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
NSError *错误=无;
BOOL结果=否;
如果([audioSession responsesToSelector:@selector(setActive:withOptions:error :)]){
结果= [audioSession setActive:YES withOptions:0 error:&error];//iOS6 +
} 别的 {
[audioSession setActive:YES withFlags:0 error:&error];//iOS5及以下版本
}
如果(!结果&&错误){
//处理错误
}
错误=零;
结果= [audioSession setCategory:AVAudioSessionCategoryPlayback错误:&错误];
如果(!结果&&错误){
//处理错误
}
考虑到对此答案的最新评论,我认为我可以将其发布为替代方法。 :-)