关闭铃声后kAudioSessionCategory_MediaPlayback会被静音吗?

时间:2011-06-21 07:00:12

标签: iphone audio avaudiosession system-sounds

根据文档,即使振铃开关设置为关闭也允许播放声音的正确方法是这样的:

 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;

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

然后我在整个应用程序中播放使用

完美播放的短wav文件
AudioServicesPlaySystemSound(sysSound)

....直到铃声关闭然后......沉默?

无论我做什么,如果振铃器关闭,我都无法发出声音?

任何一个......拜托?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

根据我的经验,音频服务播放系统声音永远不会播放。如果你使用AVAudioPlayer播放声音,你应该得到你正在寻找的行为:

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

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

AudioServices和AVAudioPlayer之间的一个显着区别是,如果振铃器被静音,AudioServices播放将几乎立即返回,而AVAudioPlayer将在完成之前获取声音的全部长度。据我所知,检测和响应用户铃声设置的唯一方法是使用AudioServices而不是AVAudioPlayer。如果你只是想在沉默时玩,虽然这不应该是相关的。