说明:
TRTCVoiceRoom 是基于腾讯云实时音视频(TRTC)和即时通信 IM 服务组合而成的组件,支持以下功能:
房主创建新的语音聊天室开播,听众进入语聊房间收听/互动。
房主可以邀请听众上麦、将座位上的麦上主播踢下麦。
房主还能对座位进行封禁,其他听众就不能再进行申请上麦了。
听众可以申请上麦,变成麦上主播,可以和其他人语音互动,也可以随时下麦成为普通的听众。
支持发送各种文本消息和自定义消息,自定义消息可用于实现弹幕、点赞和礼物等。
说明:
TUIKit 系列组件同时使用了腾讯云 实时音视频 TRTC 和 即时通信 IM 两个基础 PaaS 服务,开通实时音视频后会同步开通即时通信IM服务。即时通信 IM 服务详细计费规则请参见 即时通信 - 价格说明,TRTC 开通会默认关联开通 IM SDK 的体验版,仅支持100个 DAU。
TRTC SDK:使用 TRTC SDK 作为低延时语音聊天组件。
IM SDK:使用 IM SDK 的 AVChatroom 实现聊天室的功能,同时,通过 IM 的属性接口来存储麦位表等房间信息,邀请信令可以用于上麦申请/抱麦申请。
TRTCVoiceRoom API 概览
SDK 基础函数
API | 描述 |
获取单例对象。 | |
销毁单例对象。 | |
设置事件回调。 | |
设置事件回调所在的线程。 | |
登录。 | |
登出。 | |
修改个人信息。 |
房间相关接口函数
API | 描述 |
创建房间(房主调用),若房间不存在,系统将自动创建一个新房间。 | |
销毁房间(房主调用)。 | |
进入房间(听众调用)。 | |
退出房间(听众调用)。 | |
获取指定 userId 的用户信息,如果为 null,则获取房间内所有人的信息。 |
麦位管理接口
本地音频操作接口
API | 描述 |
开启麦克风采集。 | |
停止麦克风采集。 | |
设置音质。 | |
开启/关闭本地静音。 | |
设置开启扬声器。 | |
设置麦克风采集音量。 | |
设置播放音量。 | |
开启/关闭 耳返。 |
远端用户音频操作接口
API | 描述 |
静音/解除静音指定成员。 | |
静音/解除静音所有成员。 |
背景音乐音效相关接口
API | 描述 |
消息发送相关接口
API | 描述 |
在房间中广播文本消息,一般用于弹幕聊天。 | |
发送自定义文本消息。 |
邀请信令相关接口
API | 描述 |
向用户发送邀请。 | |
接受邀请。 | |
拒绝邀请。 | |
取消邀请。 |
TRTCVoiceRoomDelegate API 概览
通用事件回调
API | 描述 |
错误回调。 | |
警告回调。 | |
Log 回调。 |
房间事件回调
API | 描述 |
房间被销毁的回调。 | |
语聊房间信息变更回调。 | |
用户通话音量回调。 |
麦位变更回调
API | 描述 |
全量的麦位列表变化。 | |
有成员上麦(主动上麦/房主抱人上麦)。 | |
有成员下麦(主动下麦/房主踢人下麦)。 | |
房主禁麦。 | |
用户麦克风是否静音。 | |
房主封麦。 |
听众进出事件回调
API | 描述 |
收到听众进房通知。 | |
收到听众退房通知。 |
消息事件回调
API | 描述 |
收到文本消息。 | |
收到自定义消息。 |
信令事件回调
API | 描述 |
收到新的邀请请求。 | |
被邀请人接受邀请。 | |
被邀请人拒绝邀请。 | |
邀请人取消邀请。 |
SDK 基础函数
sharedInstance
public static synchronized TRTCVoiceRoom sharedInstance(Context context);
参数如下表所示:
参数 | 类型 | 含义 |
context | Context | Android 上下文,内部会转为 ApplicationContext 用于系统 API 调用 |
destroySharedInstance
说明
public static void destroySharedInstance();
setDelegate
public abstract void setDelegate(TRTCVoiceRoomDelegate delegate);
说明
setDelegate 是 TRTCVoiceRoom 的代理回调。
setDelegateHandler
设置事件回调所在的线程。
public abstract void setDelegateHandler(Handler handler);
参数如下表所示:
参数 | 类型 | 含义 |
handler | Handler | TRTCVoiceRoom 中的各种状态通知,会派发到您指定的 handler 线程。 |
login
登录。
public abstract void login(int sdkAppId,String userId, String userSig,TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
sdkAppId | int | |
userId | String | 当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(_)。 |
userSig | String | |
callback | ActionCallback | 登录回调,成功时 code 为0。 |
logout
登出。
public abstract void logout(TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
callback | ActionCallback | 登出回调,成功时 code 为0。 |
setSelfProfile
修改个人信息。
public abstract void setSelfProfile(String userName, String avatarURL, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
userName | String | 昵称。 |
avatarURL | String | 头像地址。 |
callback | ActionCallback | 个人信息设置回调,成功时 code 为0。 |
房间相关接口函数
createRoom
创建房间(房主调用)。
public abstract void createRoom(int roomId, TRTCVoiceRoomDef.RoomParam roomParam, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
roomId | int | 房间标识,需要由您分配并进行统一管理。多个 roomID 可以汇总成一个语聊房间列表,腾讯云暂不提供语聊房间列表的管理服务,请自行管理您的语聊房间列表。 |
roomParam | TRTCCreateRoomParam | 房间信息,用于房间描述的信息。例如房间名称、麦位信息、封面信息等。如果需要麦位管理,必须要填入房间的麦位数。 |
callback | ActionCallback | 创建房间的结果回调,成功时 code 为0。 |
房主开播的正常调用流程如下:
1. 房主调用
createRoom
创建新的语音聊天室,此时传入房间 ID、上麦是否需要房主确认、麦位数等房间属性信息。2. 房主创建房间成功后,调用
enterSeat
进入座位。3. 房主收到组件的
onSeatListChange
麦位表变化事件通知,此时可以将麦位表变化刷新到 UI 界面上。4. 房主还会收到麦位表有成员进入的
onAnchorEnterSeat
的事件通知,此时会自动打开麦克风采集。destroyRoom
销毁房间(房主调用)。房主在创建房间后,可以调用这个函数来销毁房间。
public abstract void destroyRoom(TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
callback | ActionCallback | 销毁房间的结果回调,成功时 code 为0。 |
enterRoom
进入房间(听众调用)。
public abstract void enterRoom(int roomId, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
roomId | int | 房间标识。 |
callback | ActionCallback | 进入房间的结果回调,成功时 code 为0。 |
听众进房收听的正常调用流程如下:
1. 听众向您的服务端获取最新的语音聊天室列表,可能包含多个语聊房间的 roomId 和房间信息。
2. 听众选择一个语音聊天室,调用
enterRoom
并传入房间号即可进入该房间。3. 进房后会收到组件的
onRoomInfoChange
房间属性变化事件通知,此时可以记录房间属性并做相应改变,例如 UI 展示房间名、记录上麦是否需要请求房主同意等。4. 进房后会收到组件的
onSeatListChange
麦位表变化事件通知,此时可以将麦位表变化刷新到 UI 界面上。5. 进房后还会收到麦位表有主播进入的
onAnchorEnterSeat
的事件通知。exitRoom
退出房间。
public abstract void exitRoom(TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
callback | ActionCallback | 退出房间的结果回调,成功时 code 为0。 |
getUserInfoList
获取指定userId的用户信息。
public abstract void getUserInfoList(List<String> userIdList, TRTCVoiceRoomCallback.UserListCallback userlistcallback);
参数如下表所示:
参数 | 类型 | 含义 |
userIdList | List<String> | 需要获取的用户 ID 列表,如果为 null,则获取房间内所有人的信息。 |
userlistcallback | UserListCallback | 用户详细信息回调。 |
麦位管理接口
enterSeat
主动上麦(听众端和房主均可调用)。
说明
上麦成功后,房间内所有成员会收到
onSeatListChange
和onAnchorEnterSeat
的事件通知。public abstract void enterSeat(int seatIndex, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
seatIndex | int | 需要上麦的麦位序号。 |
callback | ActionCallback | 操作回调。 |
调用该接口会立即修改麦位表。如果是听众申请上麦需要房主同意的场景,可以先调用
sendInvitation
向房主申请,收到 onInvitationAccept
后再调用该函数。moveSeat
移动麦位 (麦上主播端可调用)。
说明
移动麦位成功后,房间内所有成员会收到
onSeatListChange
、 onAnchorLeaveSeat
和 onAnchorEnterSeat
的事件通知。(主播调用后,只是修改麦位座位号信息,并不会切换该用户的主播身份。)public abstract int moveSeat(int seatIndex, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
seatIndex | int | 需要移动到的麦位序号。 |
callback | ActionCallback | 操作回调。 |
返回值:
返回值 | 类型 | 含义 |
code | int | 移动麦位操作结果(0为成功,其它为失败,10001 为接口调用限频)。 |
调用该接口会立即修改麦位表。如果是听众申请上麦需要房主同意的场景,可以先调用
sendInvitation
向房主申请,收到 onInvitationAccept
后再调用该函数。leaveSeat
主动下麦(主播调用)。
说明
下麦成功后,房间内所有成员会收到
onSeatListChange
和onAnchorLeaveSeat
的事件通知。public abstract void leaveSeat(TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
callback | ActionCallback | 操作回调。 |
pickSeat
抱人上麦(房主调用)。
说明
房主抱人上麦,房间内所有成员会收到
onSeatListChange
和onAnchorEnterSeat
的事件通知。public abstract void pickSeat(int seatIndex, String userId, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
seatIndex | int | 需要抱上麦的麦位序号。 |
userId | String | 用户 ID。 |
callback | ActionCallback | 操作回调。 |
调用该接口会立即修改麦位表。如果是房主需要听众同意,听众才会上麦的场景,可以先调用
sendInvitation
向听众申请,收到 onInvitationAccept
后再调用该函数。kickSeat
踢人下麦(房主调用)。
说明
房主踢人下麦,房间内所有成员会收到
onSeatListChange
和onAnchorLeaveSeat
的事件通知。public abstract void kickSeat(int seatIndex, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
seatIndex | int | 需要踢下麦的麦位序号。 |
callback | ActionCallback | 操作回调。 |
调用该接口会立即修改麦位表。
muteSeat
静音/解除静音某个麦位(房主调用)。
说明
静音/解除静音某个麦位,房间内所有成员会收到
onSeatListChange
和onSeatMute
的事件通知。public abstract void muteSeat(int seatIndex, boolean isMute, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
seatIndex | int | 需要操作的麦位序号。 |
isMute | boolean | true:静音对应麦位;false:解除静音对应麦位。 |
callback | ActionCallback | 操作回调。 |
调用该接口会立即修改麦位表。对应 seatIndex 座位上的主播,会自动调用 muteAudio 进行静音/解禁。
closeSeat
封禁/解禁某个麦位(房主调用)。
说明
房主封禁/解禁对应麦位,房间内所有成员会收到
onSeatListChange
和onSeatClose
的事件通知。public abstract void closeSeat(int seatIndex, boolean isClose, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
seatIndex | int | 需要操作的麦位序号。 |
isClose | boolean | true:封禁对应麦位; false:解封对应麦位。 |
callback | ActionCallback | 操作回调。 |
调用该接口会立即修改麦位表。封禁对应 seatIndex 座位上的主播,会自动下麦。
本地音频操作接口
startMicrophone
开启麦克风采集。
public abstract void startMicrophone();
stopMicrophone
停止麦克风采集。
public abstract void stopMicrophone();
setAudioQuality
设置音质。
public abstract void setAudioQuality(int quality);
参数如下表所示:
参数 | 类型 | 含义 |
quality | int |
muteLocalAudio
静音/取消静音本地的音频。
public abstract void muteLocalAudio(boolean mute);
参数如下表所示:
参数 | 类型 | 含义 |
mute | boolean |
setSpeaker
设置开启扬声器。
public abstract void setSpeaker(boolean useSpeaker);
参数如下表所示:
参数 | 类型 | 含义 |
useSpeaker | boolean | true:扬声器;false:听筒。 |
setAudioCaptureVolume
设置麦克风采集音量。
public abstract void setAudioCaptureVolume(int volume);
参数如下表所示:
参数 | 类型 | 含义 |
volume | int | 采集音量,0 - 100, 默认100。 |
setAudioPlayoutVolume
设置播放音量。
public abstract void setAudioPlayoutVolume(int volume);
参数如下表所示:
参数 | 类型 | 含义 |
volume | int | 播放音量,0 - 100, 默认100。 |
muteRemoteAudio
静音/解除静音指定成员。
public abstract void muteRemoteAudio(String userId, boolean mute);
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 指定的用户 ID。 |
mute | boolean | true:开启静音;false:关闭静音。 |
muteAllRemoteAudio
静音/解除静音所有成员。
public abstract void muteAllRemoteAudio(boolean mute);
参数如下表所示:
参数 | 类型 | 含义 |
mute | boolean | true:开启静音;false:关闭静音。 |
setVoiceEarMonitorEnable
开启/关闭 耳返。
public abstract void setVoiceEarMonitorEnable(boolean enable);
参数如下表所示:
参数 | 类型 | 含义 |
enable | boolean | true:开启耳返;false:关闭耳返。 |
背景音乐音效相关接口函数
getAudioEffectManager
public abstract TXAudioEffectManager getAudioEffectManager();
消息发送相关接口函数
sendRoomTextMsg
在房间中广播文本消息,一般用于弹幕聊天。
public abstract void sendRoomTextMsg(String message, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
message | String | 文本消息。 |
callback | ActionCallback | 发送结果回调。 |
sendRoomCustomMsg
发送自定义文本消息。
public abstract void sendRoomCustomMsg(String cmd, String message, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
cmd | String | 命令字,由开发者自定义,主要用于区分不同消息类型。 |
message | String | 文本消息。 |
callback | ActionCallback | 发送结果回调。 |
邀请信令相关接口
sendInvitation
向用户发送邀请。
public abstract String sendInvitation(String cmd, String userId, String content, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
cmd | String | 业务自定义指令。 |
userId | String | 邀请的用户 ID。 |
content | String | 邀请的内容。 |
callback | ActionCallback | 发送结果回调。 |
返回值:
返回值 | 类型 | 含义 |
inviteId | String | 用于标识此次邀请 ID。 |
acceptInvitation
接受邀请。
public abstract void acceptInvitation(String id, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
id | String | 邀请 ID。 |
callback | ActionCallback | 发送结果回调。 |
rejectInvitation
拒绝邀请。
public abstract void rejectInvitation(String id, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
id | String | 邀请 ID。 |
callback | ActionCallback | 发送结果回调。 |
cancelInvitation
取消邀请。
public abstract void cancelInvitation(String id, TRTCVoiceRoomCallback.ActionCallback callback);
参数如下表所示:
参数 | 类型 | 含义 |
id | String | 邀请 ID。 |
callback | ActionCallback | 发送结果回调。 |
TRTCVoiceRoomDelegate 事件回调
通用事件回调
onError
错误回调。
说明
SDK 不可恢复的错误,一定要监听,并分情况给用户适当的界面提示。
void onError(int code, String message);
参数如下表所示:
参数 | 类型 | 含义 |
code | int | 错误码。 |
message | String | 错误信息。 |
onWarning
警告回调。
void onWarning(int code, String message);
参数如下表所示:
参数 | 类型 | 含义 |
code | int | 错误码。 |
message | String | 警告信息。 |
onDebugLog
Log 回调。
void onDebugLog(String message);
参数如下表所示:
参数 | 类型 | 含义 |
message | String | 日志信息。 |
房间事件回调
onRoomDestroy
房间被销毁的回调。房主解散房间时,房间内的所有用户都会收到此通知。
void onRoomDestroy(String roomId);
参数如下表所示:
参数 | 类型 | 含义 |
roomId | String | 房间 ID。 |
onRoomInfoChange
进房成功后会回调该接口,roomInfo 中的信息在房主创建房间的时候传入。
void onRoomInfoChange(TRTCVoiceRoomDef.RoomInfo roomInfo);
参数如下表所示:
参数 | 类型 | 含义 |
roomInfo | RoomInfo | 房间信息。 |
onUserMicrophoneMute
用户麦克风是否静音回调,当用户调用 muteLocalAudio,房间内的其他用户都会收到此通知。
void onUserMicrophoneMute(String userId, boolean mute);
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 用户 ID。 |
mute | boolean | true:静音麦位; false:解除静音。 |
onUserVolumeUpdate
启用音量大小提示,会通知每个成员的音量大小。
void onUserVolumeUpdate(List<TRTCCloudDef.TRTCVolumeInfo> userVolumes, int totalVolume);
参数如下表所示:
参数 | 类型 | 含义 |
userVolumes | ListList<TRTCCloudDef.TRTCVolumeInfo> | 用户列表。 |
totalVolume | int | 音量大小,取值:0 - 100。 |
麦位回调
onSeatListChange
全量的麦位列表变化,包含了整个麦位表。
void onSeatListChange(List<SeatInfo> seatInfoList);
参数如下表所示:
参数 | 类型 | 含义 |
seatInfoList | List<SeatInfo> | 全量的麦位列表。 |
onAnchorEnterSeat
有成员上麦(主动上麦/房主抱人上麦)。
void onAnchorEnterSeat(int index, TRTCVoiceRoomDef.UserInfo user);
参数如下表所示:
参数 | 类型 | 含义 |
index | int | 成员上麦的麦位。 |
user | UserInfo | 上麦用户的详细信息。 |
onAnchorLeaveSeat
有成员下麦(主动下麦/房主踢人下麦)。
void onAnchorLeaveSeat(int index, TRTCVoiceRoomDef.UserInfo user);
参数如下表所示:
参数 | 类型 | 含义 |
index | int | 下麦的麦位。 |
user | UserInfo | 上麦用户的详细信息。 |
onSeatMute
房主禁麦。
void onSeatMute(int index, boolean isMute);
参数如下表所示:
参数 | 类型 | 含义 |
index | int | 操作的麦位。 |
isMute | boolean | true:静音麦位; false:解除静音。 |
onSeatClose
房主封麦。
void onSeatClose(int index, boolean isClose);
参数如下表所示:
参数 | 类型 | 含义 |
index | int | 操作的麦位。 |
isClose | boolean | true:封禁麦位; false: 解禁麦位。 |
听众进出事件回调
onAudienceEnter
收到听众进房通知。
void onAudienceEnter(TRTCVoiceRoomDef.UserInfo userInfo);
参数如下表所示:
参数 | 类型 | 含义 |
userInfo | UserInfo | 进房听众信息。 |
onAudienceExit
收到听众退房通知。
void onAudienceExit(TRTCVoiceRoomDef.UserInfo userInfo);
参数如下表所示:
参数 | 类型 | 含义 |
userInfo | UserInfo | 退房听众信息。 |
消息事件回调
onRecvRoomTextMsg
收到文本消息。
void onRecvRoomTextMsg(String message, TRTCVoiceRoomDef.UserInfo userInfo);
参数如下表所示:
参数 | 类型 | 含义 |
message | String | 文本消息。 |
userInfo | UserInfo | 发送者用户信息。 |
onRecvRoomCustomMsg
收到自定义消息。
void onRecvRoomCustomMsg(String cmd, String message, TRTCVoiceRoomDef.UserInfo userInfo);
参数如下表所示:
参数 | 类型 | 含义 |
cmd | String | 命令字,由开发者自定义,主要用于区分不同消息类型。 |
message | String | 文本消息。 |
userInfo | UserInfo | 发送者用户信息。 |
邀请信令事件回调
onReceiveNewInvitation
收到新的邀请请求。
void onReceiveNewInvitation(String id, String inviter, String cmd, String content);
参数如下表所示:
参数 | 类型 | 含义 |
id | String | 邀请 ID。 |
inviter | String | 邀请人的用户 ID。 |
cmd | String | 业务指定的命令字,由开发者自定义。 |
content | String | 业务指定的内容。 |
onInviteeAccepted
被邀请者接受邀请。
void onInviteeAccepted(String id, String invitee);
参数如下表所示:
参数 | 类型 | 含义 |
id | String | 邀请 ID。 |
invitee | String | 被邀请人的用户 ID。 |
onInviteeRejected
被邀请者拒绝邀请。
void onInviteeRejected(String id, String invitee);
参数如下表所示:
参数 | 类型 | 含义 |
id | String | 邀请 ID。 |
invitee | String | 被邀请人的用户 ID。 |
onInvitationCancelled
邀请人取消邀请。
void onInvitationCancelled(String id, String inviter);
参数如下表所示:
参数 | 类型 | 含义 |
id | String | 邀请 ID。 |
inviter | String | 邀请人的用户 ID。 |