Skyway iOS SDKにてオーディオ出力先を変更したかったのでAVAudioSessionを使ってみました。
Xcode: 9.2
Swift: 4.0.3
// サウンドの停止はオーディオトラックを無効にすることで実装
func remoteAudioOff() {
self._msRemoteVideo?.setEnableAudioTrack(0, enable: false)
}
// デフォルト(ヘッドホン出力)の場合
func remoteAudioDefault() {
self._msRemoteVideo?.setEnableAudioTrack(0, enable: false)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
// headphone
do {
try AVAudioSession.sharedInstance().setActive(true)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.none)
self._msRemoteVideo?.setEnableAudioTrack(0, enable: true)
} catch {
print("AVAudioSessionCategoryPlayAndRecord error")
}
}
}
// スピーカー出力の場合
func remoteAudioSpeaker() {
self._msRemoteVideo?.setEnableAudioTrack(0, enable: false)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
// speaker
do {
try AVAudioSession.sharedInstance().setActive(true)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
self._msRemoteVideo?.setEnableAudioTrack(0, enable: true)
} catch {
print("AVAudioSessionCategoryPlayAndRecord error")
}
}
}