
# 加入多频道（跨房）
#### 功能描述
跨房间连麦，指主播的媒体流可以同时转发进多个（目前最多支持四个）房间频道，实现主播跨频道与其他主播实时互动的场景。房间中的所有主播可以看见彼此，房间中的观众可以看到所有主播。
#### 注意事项
- 同一时间最多只能创建4个连接对象，每个连接对象对应的房间ID必须互不相同。
- 如果使用connection对象加入房间，则加入房间的房间ID不能和已创建连接对象对应的房间ID相同。
- 同一时间只能以一个JOINER角色加入某一个房间。如果本端在其他房间里的角色是HWRtcRoleJoiner，则需要调用该房间的setUserRole方法将本端在该房间的角色切换为HWRtcRolePlayer后才能以HWRtcRoleJoiner跨入其他房间。如果本端用户是以HWRtcRolePlayer角色加入此跨房房间，则需要调用跨房连接的setUserRole方法将本端的角色切换为HWRtcRoleJoiner后才能发送音频流和视频流。
 
 #### 接口调用流程
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001226285957.png)
#### 实现加入多频道（跨房）
1. **加入主房间**
   参考[接口调用流程]中加入房间的时序图步骤加入主房间。
   
2. **创建跨房连接**
   加入主房间后调用createConnection创建跨房对象，并进行相关参数配置。
   其中，HRTCEncryptionConfig需要进行一些参数配置，主要包括：cryptionMode、cryptionSec、suiteType
   ```
   public void setting() {
       mHwRtcConnection = mHwRtcEngine.createConnection(roomid, ((RtcApplication) getApplication()).getConnectionHandler());
   mHwRtcConnection.setEncryption(new HRTCEncryptionConfig());
   }
   ```
   
3. **调用跨房连接**
   创建跨房对象后，调用joinRoom接口加入房间。
   其中，HRTCJoinParam需要进行一些参数配置，主要包括：userId、username、 roomId
   ```
   public void joinRoom() {
       mHwRtcConnection.joinRoom(new HRTCJoinParam());
   }
   ```
   加入房间成功后，会收到跨房成功回调onJoinRoomSuccess
   加入房间失败后，会收到跨房失败回调onJoinRoomFailure
   
4. **接收远端用户的视频流**
   当收到远端用户加入房间后，会触发onRemoteUserOnline回调，在回调内，对远端用户调用startRemoteStreamView设置远端窗口并开启收流。
   ```
   @Override
   public void onRemoteUserOnline(HRTCConnection conn, String userId, String userName) {
       mHwRtcConnection.startRemoteStreamView(userId, surface, type, !isRemoteAdaptive);
   }
   ```
   
5. **退出跨房房间**
   跨房结束后，调用跨房对象的leaveRoom离开房间。
   ```
   public void leaveRoom() {
       mHwRtcConnection.leaveRoom();
   }
   ```
   
 
#### API参考
[createConnection](https://support.huaweicloud.com/csdk-rtc/rtc_05_0014.html#section5)
[joinRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0014.html#section0)
[onJoinRoomSuccess](https://support.huaweicloud.com/csdk-rtc/rtc_05_0025.html#section1)
[onJoinRoomFailure](https://support.huaweicloud.com/csdk-rtc/rtc_05_0025.html#section2)
[onRemoteUserOnline](https://support.huaweicloud.com/csdk-rtc/rtc_05_0025.html#section4)
[startRemoteStreamView](https://support.huaweicloud.com/csdk-rtc/rtc_05_0031.html#section3)
[leaveRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0029.html#section1)
