使用 AVAudioSession 播放音频问题

Posted

技术标签:

【中文标题】使用 AVAudioSession 播放音频问题【英文标题】:Issue playing audio with AVAudioSession 【发布时间】:2015-10-01 20:12:50 【问题描述】:

当前代码:

@IBAction func sound1(sender: UIButton)

    var sound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Sound1", ofType: "wav")!)

    do 
        try AVAudiosession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
     catch _ 
    
    do 
        try AVAudioSession.sharedInstance().setActive(true)
     catch _ 
    

    var error: NSError?
    do 
        audioPlayer = try AVAudioPlayer(contentsOfURL: sound)
     catch var error1 as NSError 
        error = error1
        audioPlayer = nil
    
    audioPlayer.prepareToPlay()
    audioPlayer.volume = 1
    audioPlayer.play()

这是我在将此项目更新到 Swift 2 之前的当前代码。

audioPlayer = nil

我在尝试运行应用程序时遇到的问题是:

无法将“NilLiteralConvertible”类型的值分配给“AVAudioPlayer”类型的值

【问题讨论】:

【参考方案1】:

这意味着你的变量audioplayer不是可选的,所以不能设置为nil

要么将其设为可选,然后将其与try? 一起使用(注意? 不带do catch,或者如果您想继续,请不要尝试将其设置为nildo catch 中使用try

【讨论】:

以上是关于使用 AVAudioSession 播放音频问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS- 关于AVAudioSession的使用——后台播放音乐

使用 AVAudioSession 快速检测其他音频的属性

检测 AVAudioSession 何时被“躲避”

iOS音频掌柜-- AVAudioSession

AVPlayer(或 AVAudioSession?)在我离开 ViewController 后播放,当我返回两个时播放

AVAudioPlayer 和 AVAudioSession 不会在 iPad(2 或其他)上播放蓝牙立体声