ddp*_*ddp 2 core-audio audiounit audiokit
使用AudioKit进行声音管理,我注意到这个非常简单的代码问题(bug?).
import AudioKit
class MainViewController: UIViewController {
var audioFile: AKAudioFile?
var audioPlayer: AKAudioPlayer?
override func viewDidLoad() {
    super.viewDidLoad()
}
@IBAction func onPlayButtonClick(_ sender: Any) {
    do {
        audioFile = try AKAudioFile(forReading: Bundle.main.url(forResource: "3e", withExtension: "mp3")!)
        audioPlayer = try AKAudioPlayer(file: audioFile!)
        AudioKit.output = audioPlayer
        AudioKit.start()
        audioPlayer!.play()
    } catch {
        print(error)
    }
}
}
使用play()方法启动播放时,日志和进程中的所有内容都是正常的(播放器持续时间,currentTime).但是我没有听到扬声器中的音频(只有一种风噪声).一旦我插入耳机并再次点击按钮,我通常会听到音频.然后,我拔下我的耳机并点击按钮,我听不到音频(只有风声).
我在iPhone 5S上面对此问题.
我在iPad5上没有面对这个问题,我在模拟器上没有面对这个问题.我没有其他设备尝试重现.
两种设备:iOS 11.1.2和AudioKit:v4.0.4
注意:我的扬声器与任何其他应用程序正常工作,我已经检查了音量.未插入耳机时,默认outputDevice设置为Speakers.
根据配置音频会话指南,默认情况下,AVAudioSessionCategory设置为
在iOS中,将"响铃/静音"开关设置为静音模式会使应用程序正在播放的任何音频静音.
由于iPad和模拟器没有这个开关,它们总是会播放到扬声器,但是在硬件iPhone的情况下,它们只能在静音模式下播放耳机而不播放扬声器,除非会话类别被更改.
您可以使用AVAudioSession直接更改会话类别:
do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
catch {
    print("failed to set category")
}
或者您可以使用AudioKit的AKSettings包装器:
AudioKit.start()
do {
    try AKSettings.setSession(category: AKSettings.SessionCategory.playback)
} catch {
    print("failed to set category")
}
根据AVSessionCategory文档,播放类别是
用于播放录制音乐或其他声音的类别,这些声音对于成功使用您的应用至关重要.
因此,它将假定用户希望在使用应用程序时覆盖静默模式.
| 归档时间: | 
 | 
| 查看次数: | 548 次 | 
| 最近记录: |