如何在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) }