声网云服务为内部自研服务,暂不对外提供。你可以调用声网云服务的 API 用于测试,但是对于正式环境,声网建议你参考文档自行实现相似的一套服务。如需协助,请
提交工单。
+
+
+### 1. 获取房间列表
+
+调用声网云服务中 `voiceServiceProtocol` 类的 `fetchRoomList` 方法获取房间列表。获取到房间列表后刷新 UI 并将房间列表展示在界面上。
+
+```kotlin
+voiceServiceProtocol.fetchRoomList(page, completion = { error, result ->
+ ...
+})
+```
+
+### 2. 登录即时通讯系统
+
+参考如下步骤登录即时通讯(IM)系统:
+
+1. 根据[前提条件](#前提条件)在声网控制台创建声网项目后,参考[开启和配置即时通讯服务](https://docs-preprod.agora.io/cn/agora-chat/enable_agora_chat?platform=All%20Platforms),在声网控制台为你的声网项目开启并配置即时通讯服务。
+2. 参考[即时通讯集成概述](https://docs-preprod.agora.io/cn/agora-chat/integration_overview_android?platform=Android#用户登录),获取登录即时通讯系统所需的用户名(ID)和 Token。
+3. 调用声网即时通讯(IM)SDK 中 `ChatClient` 类的 [`loginWithToken`](https://docs-preprod.agora.io/cn/agora-chat/API%20Reference/im_java/v1.1.0/classio_1_1agora_1_1chat_1_1_chat_client.html#ac2b19ffdcd879b5f239baacbaa09423b) 方法并传入即时通讯服务的用户名和 Token 以登录即时通讯系统。
+
+
+```kotlin
+public void login(String uid,String token,CallBack callBack){
+ ChatClient.getInstance().loginWithToken(uid, token, new CallBack() {
+ @Override
+ public void onSuccess() {
+ ThreadManager.getInstance().runOnMainThread(new Runnable() {
+ @Override
+ public void run() {
+ callBack.onSuccess();
+ }
+ });
+ LogTools.d("ChatroomConfigManager","Login success");
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ ThreadManager.getInstance().runOnMainThread(new Runnable() {
+ @Override
+ public void run() {
+ callBack.onError(code,msg);
+ }
+ });
+ LogTools.e("ChatroomConfigManager", "Login onError code:" + code + " desc: " + msg);
+ }
+ });
+}
+```
+
+### 3. 初始化 RtcEngine
+
+参考如下步骤初始化 RtcEngine:
+
+1. 根据[前提条件](#前提条件)在声网控制台创建声网项目后,复制界面的 App ID。
+2. 调用声网 RTC SDK 中的 [`create`](https://docportal.shengwang.cn/cn/live-streaming-premium-4.x/API%20Reference/java_ng/API/toc_core_method.html#api_irtcengine_initialize) 方法创建并初始化 `RtcEngine`。
+
+```kotlin
+// 初始化配置
+val config = RtcEngineConfig()
+// 设置 App ID
+config.mAppId = "YourAppId"
+// 创建 RtcEngine 实例
+val rtcEngine = RtcEngineEx.create(config) as RtcEngineEx
+```
+
+### 4. 创建并进入房间
+
+1. 调用 `voiceServiceProtocol` 对象中的 `createRoom` 方法创建一个房间。
+
+ ```kotlin
+ val voiceCreateRoomModel = VoiceCreateRoomModel(
+ roomName = roomName,
+ soundEffect = soundEffect,
+ isPrivate = !TextUtils.isEmpty(password),
+ password = password ?: "",
+ roomType = roomType
+ )
+ voiceServiceProtocol.createRoom(voiceCreateRoomModel, completion = { error, result ->
+ when (error) {
+ VoiceServiceProtocol.ERR_OK -> {
+ callBack.onSuccess(createLiveData(result))
+ }
+ VoiceServiceProtocol.ERR_ROOM_NAME_INCORRECT -> {
+ callBack.onError(error, "")
+ }
+ else -> {
+ callBack.onError(error, "")
+ }
+ }
+ })
+ ```
+
+2. 调用 `voiceServiceProtocol` 对象的 `joinRoom` 方法进入房间。
+
+ ```kotlin
+ voiceServiceProtocol.joinRoom(roomId, completion = { error, result ->
+ when (error) {
+ VoiceServiceProtocol.ERR_OK -> {
+ callBack.onSuccess(createLiveData(result))
+ }
+ VoiceServiceProtocol.ERR_ROOM_UNAVAILABLE -> {
+ callBack.onError(error, "room is not existent")
+ }
+ else -> {
+ callBack.onError(error, "")
+ }
+ }
+ })
+ ```
+
+3. 语聊房里需要有消息聊天和语音聊天,因此你还需进行如下操作:
+
+ - 调用声网 IM SDK 中 `joinChatRoom` 实现房间内的消息互动。方法中的参数含义和支持取值请参考 [`joinChatRoom`](https://docs-preprod.agora.io/cn/agora-chat/API%20Reference/im_java/v1.1.0/classio_1_1agora_1_1chat_1_1_chat_room_manager.html#a895dbd6d0217ba08bcf2dbb6cf441591)。
+
+ ```kotlin
+ // 实现房间内的消息互动
+ public void joinRoom(String chatroomId, ValueCallBack