
# 场景8： 遥控器
#### 描述
在连接设备后，客户端可以查询设备状态，包括：麦克风状态、扬声器状态、摄像头状态、音量大小，是否在会议中，并且操作这些设备状态，如调节音量大小、离开会议（前提是已经入会）
#### 业务流程
1. **接口调用**

1. 调用getRemoteServiceStatus查询连接设备状态
2. 使用Block回调处理回调结果
3. 调用遥控器接口如（setRemoteMicMute 或 setXXXXX）请求遥控远端设备
4. 使用Block回调处理遥控器接口的回调事件
5. 通过notifyDelegate收到服务端主动推送过来的通知事件onxxxxNotify 事件，更新客户端遥控器状态
6. 在会议中时，调用leaveConference 或finishConference 离开会议，使用Block回调处理回调事件结果
 
#### 注意事项
连接设备后遥控器功能才可用。
#### **示例代码**
```
// 查询远端设备状态，使用Block处理回调结果  
 if (mShareServiceController != nil) {   
     int result = [mShareServiceController getRemoteServiceStatus:^(id status) {
```
```
self.remoteserviceStatus = (RemoteServiceStatus *)status;
```
```
if (self.remoteserviceStatus.isMute != 0) {  
       dispatch_async(dispatch_get_main_queue(), ^{  
        self.openMicrophoneButton.enabled = YES;  
        self.closeMicrophoneButton.enabled = NO;  
        });  
     }
```
```
}];
```
```
}
```
```
设备控制，此处以麦克风静音和闭音为例， 扬声器、摄像头、音量控制流程类似不再赘述   
 int result = [mShareServiceController setRemoteMicMute:false:^(id micOpenCallback) {  
}];  
if (result != 0)  
{  
    NSLog(@"open Microphone failed");  
}  
else{  
    NSLog(@"open Microphone success");  
    self.closeMicrophoneButton.enabled = YES;  
    self.openMicrophoneButton.enabled = NO;  
}
```
```
// 远端设备主动推送OnUpdateRemoteMicMuteNotify事件通知UI进行更新   
- (void) OnRemoteMicStatusNotify : (int) isMute  
{  
    NSLog(@"OnRemoteMicStatusNotify: isMic = [%d]",isMute);  
    if (isMute != 0) {  
        dispatch_async(dispatch_get_main_queue(), ^{  
            self.openMicrophoneButton.enabled = YES;  
            self.closeMicrophoneButton.enabled = NO;  
        });  
    } else {  
        dispatch_async(dispatch_get_main_queue(), ^{  
            self.closeMicrophoneButton.enabled = YES;  
            self.openMicrophoneButton.enabled = NO;  
        });  
    }  
}
```
```
// 离开会议   
 int result = [mShareServiceController leaveConference:^(id leaveConferencecallback) {  
}];
```
```
// 结束会议   
 int result = [mShareServiceController finishConference:^(id finishConferencecallback) {  
}];
```
