
# 场景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();   
    }   
}
```
