美文网首页
Linphone SDK使用(三)通话中功能

Linphone SDK使用(三)通话中功能

作者: fanren | 来源:发表于2023-04-19 17:04 被阅读0次

一、显示通话中页面

通话建立后,展示通话中的页面

// 监听当前的通话
CallsViewModel.shared.currentCallData.readCurrentAndObserve {  [weak self] (currentCallData) in
    self?.updateNavigation()
    if (currentCallData == nil) {
        // self.callPausedByRemoteView?.isHidden = true
        // self.callPausedByLocalView?.isHidden = true
    } else {
        currentCallData??.isIncoming.readCurrentAndObserve { _ in self?.updateNavigation() }
        currentCallData??.isOutgoing.readCurrentAndObserve { _ in self?.updateNavigation() }
    }
    // 通话对象
    self?.callData = currentCallData != nil ? currentCallData! : nil
}
...
func updateNavigation() {
    if (Core.get().callsNb == 0) {
        // 通话挂断,移除页面
        JWCallViewManager.shared().removeCallingVC()
    } else {
        if let data = CallsViewModel.shared.currentCallData.value {
            if (data?.isOutgoing.value == true || data?.isIncoming.value == true) {
                // 通话挂断,移除页面
                JWCallViewManager.shared().removeCallingVC()
            } else {
                if (data!.isInRemoteConference.value == true) {
                    // 通话挂断,移除页面
                    JWCallViewManager.shared().removeCallingVC()
                } else {
                    // 通话建立,显示页面
                    JWCallViewManager.shared().showCallingVC()
                }
            }
        } else {
             // 通话建立,显示页面
            JWCallViewManager.shared().showCallingVC()
        }
    }
}

二、通话保持与接回

  • 切换保持与接回状态
self.callData?.togglePause()
  • 监听通话保持与接回状态
self.callData?.isPaused.readCurrentAndObserve { [weak self] locallyPaused in
    self?.callDataIsPausedChanage(locallyPaused ?? false)
}

三、切换扬声器

  • 切换扬声器
ControlsViewModel.shared.toggleSpeaker()
  • 监听扬声器的切换
ControlsViewModel.shared.isSpeakerSelected.readCurrentAndObserve { [weak self] (selected) in
    self?.selectorToSpeakerSelect(select: selected ?? false)
}

四、切换麦克风

  • 切换麦克风
ControlsViewModel.shared.toggleMuteMicrophone()
  • 监听麦克风的切换
ControlsViewModel.shared.isMicrophoneMuted.readCurrentAndObserve { [weak self] (muted) in
    self?.selectorToMicrophoneSelect(select: muted ?? false)
}

相关文章

网友评论

      本文标题:Linphone SDK使用(三)通话中功能

      本文链接:https://www.haomeiwen.com/subject/ihngddtx.html