Room 模块提供统一的房间信令管理功能,封装了不同RTC厂商的房间管理逻辑,提供统一的房间状态管理、用户管理、消息传递等功能。
interface RoomService {
fun createRoom(roomId: String, roomConfig: RoomConfig): Room
fun joinRoom(roomId: String, userInfo: UserInfo): Boolean
fun leaveRoom(roomId: String)
fun sendMessage(roomId: String, message: Message)
fun getRoomUsers(roomId: String): List<User>
fun setRoomListener(listener: RoomListener)
}
interface RoomListener {
fun onRoomStateChanged(roomId: String, state: RoomState)
fun onUserJoined(roomId: String, user: User)
fun onUserLeft(roomId: String, user: User)
fun onMessageReceived(roomId: String, message: Message)
}
// 获取房间服务
val roomService = RoomService.getInstance()
// 设置监听器
roomService.setRoomListener(object : RoomListener {
override fun onUserJoined(roomId: String, user: User) {
// 用户加入房间
updateUserList()
}
override fun onMessageReceived(roomId: String, message: Message) {
// 收到消息
displayMessage(message)
}
})
// 加入房间
val userInfo = UserInfo(userId = "user123", userName = "张三")
val success = roomService.joinRoom("room001", userInfo)
// 发送消息
val message = Message(type = MessageType.TEXT, content = "Hello World")
roomService.sendMessage("room001", message)
// 离开房间
roomService.leaveRoom("room001")
data class RoomConfig(
val maxUsers: Int = 50, // 最大用户数
val isPrivate: Boolean = false, // 是否私密房间
val allowGuest: Boolean = true, // 是否允许游客
val recordEnabled: Boolean = false // 是否开启录制
)
data class UserInfo(
val userId: String,
val userName: String,
val avatar: String? = null,
val role: UserRole = UserRole.MEMBER,
val customAttributes: Map<String, Any> = emptyMap()
)
implementation "com.wenext.android:frame-room:6.0.0"