【问题标题】:kAudioSessionCategory_MediaPlayback is silenced with ringer off?kAudioSessionCategory_MediaPlayback 在铃声关闭的情况下静音?
【发布时间】:2011-09-19 06:36:41
【问题描述】:

根据文档,即使铃声开关设置为关闭,允许播放声音的正确方法如下:

 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;

    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);

然后我在整个应用程序中播放可以完美播放的短 wav 文件

AudioServicesPlaySystemSound(sysSound)

....直到铃声关闭,然后......静音?

如果铃声关闭,无论如何我都无法播放声音?

任何人......请?

【问题讨论】:

    标签: iphone audio avaudiosession system-sounds


    【解决方案1】:

    您是否尝试在最后使用 AudioSessionSetActive(YES);

    【讨论】:

      【解决方案2】:

      根据我的经验,当铃声关闭时,AudioServicesPlaySystemSound 永远不会播放。如果您改用 AVAudioPlayer 播放声音,您应该得到您正在寻找的行为:

      let player: AVAudioPlayer = try AVAudioPlayer(contentsOf: url)
      player.delegate = self
      player.play()
      

      您还需要在播放前激活音频会话(如果您还没有)。并设置一个支持声音的音频会话类别,同时像你已经做的那样静音。考虑在没有音频播放时停止音频会话以延长电池寿命。

      AudioServices 和 AVAudioPlayer 之间的一个显着区别是,如果铃声被静音,AudioServices 播放将几乎立即返回,而 AVAudioPlayer 将在完成之前播放完整长度的声音。据我所知,检测和响应用户铃声设置的唯一方法是使用 AudioServices 而不是 AVAudioPlayer。如果您只想在静音的情况下玩游戏,尽管这不相关。

      【讨论】:

        猜你喜欢
        • 2015-02-09
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多