У меня в настоящее время есть пара наушников Bluetooth. Из этого поста у меня есть код, необходимый для извлечения звука с микрофона наушников Bluetooth, а затем воспроизведения звука через наушники Bluetooth. Однако я хочу изменить код так, чтобы я мог извлечь звук из микрофона наушников Bluetooth, а затем воспроизвести звук через ВНУТРЕННИЙ динамик телефона / через любую другую пару наушников, которые могут быть физически подключены к телефону. Как бы я go сделал это? Это мой текущий код:
import UIKit
import AVFoundation
class PlayRecordVC: UIViewController, AVAudioRecorderDelegate {
let audioSession = AVAudioSession.sharedInstance()
let player = AVAudioPlayerNode()
let engine = AVAudioEngine()
override func viewDidLoad() {
super.viewDidLoad()
do{
try audioSession.setCategory(.playAndRecord, mode: .default, options: [.allowBluetooth])
try audioSession.overrideOutputAudioPort(.speaker)
try audioSession.setActive(true)
} catch{
print(error.localizedDescription)
}
let input = engine.inputNode
engine.attach(player)
let bus = 0
let inputFormat = input.inputFormat(forBus: bus)
engine.connect(player, to: engine.mainMixerNode, format: inputFormat)
input.installTap(onBus: bus, bufferSize: 512, format: inputFormat) { (buffer, time) -> Void in
self.player.scheduleBuffer(buffer)
print(buffer)
}
}
@IBAction func start(_ sender: UIButton) {
try! engine.start()
player.play()
}
@IBAction func stop(_ sender: UIButton) {
engine.stop()
player.stop()
}
}
ОБНОВЛЕНИЕ:
Когда я добавляю строку audioSession.overrideOutputAudioPort(.speaker)
, звук не воспроизводится вообще (ни из наушников Bluetooth, ни из внутреннего динамика телефона)