1

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

 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;

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

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

AudioServicesPlaySystemSound(sysSound)

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

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

任何一个......请?

4

2 回答 2

0

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

于 2011-07-27T03:21:32.460 回答
0

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

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

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

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

于 2018-05-29T15:15:42.600 回答