gpt4 book ai didi

swift - BluetoothLE 会扰乱定时器计时吗?

转载 作者:行者123 更新时间:2023-11-28 13:33:33 25 4
gpt4 key购买 nike

我的应用利用定时器同时播放多个音频文件。

为了给予音频最高优先级,AVAudioSession 使用 .playAndRecord 类别并允许播放和蓝牙。

计时器是这样设置的,并且优先于应用程序内部的用户界面(表格 View 在滚动时会稍微卡顿,否则音频播放会在滚动时停止),应用程序外部的所有用户交互都不会受到影响:

let timer = Timer.scheduledTimer(withTimeInterval: timeInterval, repeats: false, block: { _ in
RunLoop.main.add(timer, forMode: RunLoop.Mode.common)
}

这可以确保计时器即使在设备锁定时也能正常工作。

请不要告诉我计时器不够精确,对于音频播放来说,它们似乎可以精确到几毫秒。

这在 airplay(通常有小延迟)和普通蓝牙扬声器(他们似乎使用 bluetoothA2DP)上运行良好。

不过,我发现在我的大众汽车(使用蓝牙 LE,即低能量)中使用蓝牙时,确实会弄乱计时器的计时。它们都以正确的顺序开火,但它们不再精确。

bluetoothLE 会影响计时器吗?有没有办法避免这种情况?

附带说明一下,它似乎也按位破坏了音频质量。

最佳答案

事实证明,将 AVAudioSession 类别设置为 .playback 可以完全解决问题。.playAndRecord 的先前设置似乎允许更多可用资源处于锁定状态,但对 BluetoothLE 连接具有相反的效果。

现在,当音频路由发生变化时,我将简单地在 AVAudioSession 类别之间切换。

关于swift - BluetoothLE 会扰乱定时器计时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57004768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com