AVAudioPlayer和模拟器导致蓝牙耳机音频占用

时间:2016-10-11 02:22:36

标签: objective-c swift ios-simulator avfoundation

我不确定这个问题是否属于Ask Different或SO。这两者都有。

我最近使用我用于工作的耳机无线连接。我把Bose QC35连接到我的MacBook Pro,通过蓝牙运行macOS Sierra。我在iTunes中听音乐的同时运行iOS模拟器时遇到了一个奇怪的问题。当我的应用程序启动时,它会使用AVAudioPlayer播放声音效果。播放声音的行为导致iTunes停止并开始播放当前曲目的无限期0.5秒循环。我必须重新启动iTunes才能继续收听。你可以想象在正常的工作日会有多烦人。

导致它的代码很简单:

import UIKit
import AVFoundation

var player : AVAudioPlayer! = nil

class ViewController: UIViewController, AVAudioPlayerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        let url = Bundle.main.url(forResource: "intro", withExtension: "m4a")
        do {
            player = try AVAudioPlayer.init(contentsOf: url!)
        }
        catch {
            return
        }

        player.prepareToPlay()
        player.delegate = self
        player.play() // This line causes the audio issue
    }
}

重新启动iTunes让事情再次发挥作用。从那以后,我可以在应用程序中自由发挥更多音效。问题只发生在应用程序启动后播放的第一个声音上。

有谁知道如何防止这个问题发生?

有关该问题的其他一些信息:

  • 它也发生在Objective-C中
  • 这是iPhone和iPad模拟器中的一个问题
  • 这也适用于Beats Studio Wireless,我假设所有其他蓝牙耳机。
  • 在设备上运行应用程序不会触发问题
  • 如果我在播放模拟器中的第一个音效时暂停iTunes,我可以继续听而不会出现问题

0 个答案:

没有答案