iOS使用虚拟AVAudioPlayer从振铃切换到系统音量

时间:2016-09-13 19:00:45

标签: ios avaudioplayer volume

我的应用目前正根据铃声音量播放声音。许多用户看到它的音板应用程序很烦人。我注意到,当广告弹出一个视频时,音量控制会在关闭广告并恢复使用该应用后更改为系统音量。考虑到这一点,我希望在启动应用程序时使用通过AVAudioPlayer播放的虚拟(静音)声音,有点欺骗它使用系统声音控制器而不是振铃器。这是我当前用来播放声音的代码:

    func playSound(fNameOnly : String, sFileExt : String = "mp3"){

    let soundUrl = NSBundle.mainBundle().URLForResource(fNameOnly, withExtension: sFileExt)
    var SSID : SystemSoundID = 0
    if gSoundsOn && soundUrl != nil {

        AudioServicesCreateSystemSoundID(soundUrl!, &SSID)

        AudioServicesPlaySystemSoundWithCompletion(SSID){
            AudioServicesDisposeSystemSoundID(SSID)
            self.soundComplete(SSID)
        }

        self.soundArray.append(SSID)
    }
}

我希望有人可以帮助我创建一个func /方法,在启动/打开应用程序时通过AVAudioPlayer播放虚拟声音片段。

1 个答案:

答案 0 :(得分:0)

我也有这个问题。

问题是AudioServicesPlaySystemSound总是使用铃声音量,而AVAudioPlayer使用音量设置。在SystemSound之前播放AVAudio声音不会改变该行为。它可能会出现这种情况,因为现在当您按下音量按钮时,会弹出“音量”控件..但您会注意到它对正在播放的系统声音没有影响。这是一个真正的痛苦。

目前,我让用户知道他们需要将设备上的铃声设置为“随按钮更改”。这允许他们在游戏中改变铃声的音量。在我看来,仍然不是一个很好的解决方案我担心唯一的解决方案就是将AVAudioPlayer用于所有声音......当你需要快速声音时(比如按一下按钮),这可能会有一些不良延迟。