Skyway iOS SDKでオーディオ出力先変更

Pocket
LinkedIn にシェア
LINEで送る
Facebook にシェア

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")
    }
  }
}