我想即使在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错误:&错误];

如果(!结果&&错误){
//处理错误
}

考虑到对此答案的最新评论,我认为我可以将其发布为替代方法。 :-)

10-04 23:09