更新时间:2022-03-21 GMT+08:00
分享

场景7: 遥控器

描述

在连接设备后,客户端可以查询设备状态,包括:麦克风状态、扬声器状态、摄像头状态、音量大小、是否在会议中,并且操作这些设备状态,如调节音量大小、离开会议(前提是已经入会)

业务流程

  1. 调用GetRemoteServiceStatus查询连接设备状态
  2. 处理回调结果事件OnGetRemoteServiceStatusResult
  3. 调用遥控器接口(如SetRemoteMicMute )请求遥控远端设备
  4. 处理回调事件OnSetRemoteMicMuteResult事件
  5. 收到服务端主动推送过来的通知事件OnxxxxNotify 事件,更新客户端遥控器状态
  6. 在会议中时,调用LeaveConference 或EndConference 离开会议,处理回调事件结果OnSetLeaveConferenceResult或OnSetEndConferenceResult

注意事项

连接设备后遥控器功能才可用。

示例代码

 // 查询远端设备状态   
 if (mShareServiceController != NULL) {   
     mShareServiceController->GetRemoteServiceStatus();   
 }   
 // 处理OnGetRemoteServiceStatusResult回调   
void IShareEventHandler::OnGetRemoteServiceStatusResult(RemoteServiceStatus *remoteServiceStatus)   
{   
   qDebug() << "receive OnGetRemoteServiceStatusResult";   
   if (mUiEvtHandler != NULL) {   
      mUiEvtHandler->HandleGetRemoteSericeStatusResult(remoteServiceStatus);   
   }   
}
// 设备控制,此处以麦克风静音和闭音为例, 扬声器、摄像头、音量控制流程类似不再赘述   
 if (mShareServiceController != NULL) {   
     // true 关闭, false 打开  
     mShareServiceController->SetRemoteMicMute(false);   
 }   
// 当前对结果事件暂未上报的UI,更新UI在OnUpdateRemoteMicMuteNotify中处理   
void IShareEventHandler::OnSetRemoteMicMuteResult(int result)   
{   
    if (result != 0) {   
       qDebug() << "receive set remote mic mute failed";   
    }   
}   
// 远端设备主动推送OnUpdateRemoteMicMuteNotify事件通知UI进行更新   
void IShareEventHandler::OnUpdateRemoteMicMuteNotify(bool isMute)   
{   
   if (mUiEvtHandler != NULL) {   
      mUiEvtHandler->HandleUpdateMicMuteNotify(isMute);   
   }   
}
  // 离开会议   
 if (mShareServiceController != NULL) {   
     mShareServiceController->LeaveConference();   
 }   
 // 离开会议结果回调   
void IShareEventHandler::OnSetLeaveConferenceResult(int result)   
{   
    qDebug() << "receive OnSetLeaveConferenceResult"<< result;   
    if (mUiEvtHandler != NULL) {   
       mUiEvtHandler->HandleLeaveConference();   
    }   
}   
// 结束会议   
 if (mShareServiceController != NULL) {   
     mShareServiceController->EndConference();   
 }   
// 结束会议结果回调   
void IShareEventHandler::OnSetEndConferenceResult(int result)   
{   
    qDebug() << "receive OnSetEndConferenceResult retult = " << result;   
    if (mUiEvtHandler != NULL) {   
       mUiEvtHandler->HandleEndConference();   
    }   
}

相关文档