TRTCVoiceRoom (Android)

最近更新时间:2021-04-30 19:24:19

TRTCVoiceRoom 是基于腾讯云实时音视频(TRTC)和即时通信 IM 服务组合而成的组件,支持以下功能:

  • 房主创建新的语音聊天室开播,听众进入语聊房间收听/互动。
  • 房主可以邀请听众上麦、将座位上的麦上主播踢下麦。
  • 房主还能对座位进行封禁,其他听众就不能再进行申请上麦了。
  • 听众可以申请上麦,变成麦上主播,可以和其他人语音互动,也可以随时下麦成为普通的听众。
  • 支持发送各种文本消息和自定义消息,自定义消息可用于实现弹幕、点赞和礼物等。

TRTCVoiceRoom 是一个开源的 Class,依赖腾讯云的两个闭源 SDK,具体的实现过程请参见 语音聊天室(Android)

  • TRTC SDK:使用 TRTC SDK 作为低延时语音聊天组件。
  • IM SDK:使用 IM SDK 的 AVChatroom 实现聊天室的功能,同时,通过 IM 的属性接口来存储麦位表等房间信息,邀请信令可以用于上麦申请/抱麦申请。

TRTCVoiceRoom API 概览

SDK 基础函数

API 描述
sharedInstance 获取单例对象。
destroySharedInstance 销毁单例对象。
setDelegate 设置事件回调。
setDelegateHandler 设置事件回调所在的线程。
login 登录。
logout 登出。
setSelfProfile 修改个人信息。

房间相关接口函数

API 描述
createRoom 创建房间(房主调用),若房间不存在,系统将自动创建一个新房间。
destroyRoom 销毁房间(房主调用)。
enterRoom 进入房间(听众调用)。
exitRoom 退出房间(听众调用)。
getRoomInfoList 获取房间列表的详细信息。
getUserInfoList 获取指定 userId 的用户信息,如果为 null,则获取房间内所有人的信息。

麦位管理接口

API 描述
enterSeat 主动上麦(听众端和房主均可调用)。
leaveSeat 主动下麦(主播调用)。
pickSeat 抱人上麦(房主调用)。
kickSeat 踢人下麦(房主调用)。
muteSeat 静音/解除静音某个麦位(房主调用)。
closeSeat 封禁/解禁某个麦位(房主调用)。

本地音频操作接口

API 描述
startMicrophone 开启麦克风采集。
stopMicrophone 停止麦克风采集。
setAudioQuality 设置音质。
muteLocalAudio 开启/关闭本地静音。
setSpeaker 设置开启扬声器。
setAudioCaptureVolume 设置麦克风采集音量。
setAudioPlayoutVolume 设置播放音量。
setVoiceEarMonitorEnable 开启/关闭 耳返。

远端用户音频操作接口

API 描述
muteRemoteAudio 静音/解除静音指定成员。
muteAllRemoteAudio 静音/解除静音所有成员。

背景音乐音效相关接口

API 描述
getAudioEffectManager 获取背景音乐音效管理对象 TXAudioEffectManager

消息发送相关接口

API 描述
sendRoomTextMsg 在房间中广播文本消息,一般用于弹幕聊天。
sendRoomCustomMsg 发送自定义文本消息。

邀请信令相关接口

API 描述
sendInvitation 向用户发送邀请。
acceptInvitation 接受邀请。
rejectInvitation 拒绝邀请。
cancelInvitation 取消邀请。

TRTCVoiceRoomDelegate API 概览

通用事件回调

API 描述
onError 错误回调。
onWarning 警告回调。
onDebugLog Log 回调。

房间事件回调

API 描述
onRoomDestroy 房间被销毁的回调。
onRoomInfoChange 语聊房间信息变更回调。
onUserVolumeUpdate 用户通话音量回调。

麦位变更回调

API 描述
onSeatListChange 全量的麦位列表变化。
onAnchorEnterSeat 有成员上麦(主动上麦/房主抱人上麦)。
onAnchorLeaveSeat 有成员下麦(主动下麦/房主踢人下麦)。
onSeatMute 房主禁麦。
onUserMicrophoneMute 用户麦克风是否静音。

| onSeatClose | 房主封麦。 |

听众进出事件回调

API 描述
onAudienceEnter 收到听众进房通知。
onAudienceExit 收到听众退房通知。

消息事件回调

API 描述
onRecvRoomTextMsg 收到文本消息。
onRecvRoomCustomMsg 收到自定义消息。

信令事件回调

API 描述
onReceiveNewInvitation 收到新的邀请请求。
onInviteeAccepted 被邀请人接受邀请。
onInviteeRejected 被邀请人拒绝邀请。
onInvitationCancelled 邀请人取消邀请。

SDK 基础函数

sharedInstance

获取 TRTCVoiceRoom 单例对象。

public static synchronized TRTCVoiceRoom sharedInstance(Context context);

参数如下表所示:

参数 类型 含义
context Context Android 上下文,内部会转为 ApplicationContext 用于系统 API 调用

destroySharedInstance

销毁 TRTCVoiceRoom 单例对象。

说明:

销毁实例后,外部缓存的 TRTCVoiceRoom 实例无法再使用,需要重新调用 sharedInstance 获取新实例。

public static void destroySharedInstance();

setDelegate

TRTCVoiceRoom 事件回调,您可以通过 TRTCVoiceRoomDelegate 获得 TRTCVoiceRoom 的各种状态通知。

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 您可以在实时音视频控制台 >【应用管理】> 应用信息中查看 SDKAppID。
userId String 当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(_)。
userSig String 腾讯云设计的一种安全保护签名,获取方式请参考 如何计算 UserSig
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。

getRoomInfoList

获取房间列表的详细信息,其中房间名称、房间封面是房主在创建 createRoom() 时通过 roomInfo 设置的。

说明:

如果房间列表和房间信息都由您自行管理,可忽略该函数。

public abstract void getRoomInfoList(List<Integer> roomIdList, TRTCVoiceRoomCallback.RoomInfoCallback callback);

参数如下表所示:

参数 类型 含义
roomIdList List<Integer> 房间号列表。
callback RoomInfoCallback 房间详细信息回调。

getUserInfoList

获取指定userId的用户信息。

public abstract void getUserInfoList(List<String> userIdList, TRTCVoiceRoomCallback.UserListCallback userlistcallback);

参数如下表所示:

参数 类型 含义
userIdList List<String> 需要获取的用户 ID 列表,如果为 null,则获取房间内所有人的信息。
userlistcallback UserListCallback 用户详细信息回调。

麦位管理接口

enterSeat

主动上麦(听众端和房主均可调用)。

说明:

上麦成功后,房间内所有成员会收到onSeatListChangeonAnchorEnterSeat的事件通知。

public abstract void enterSeat(int seatIndex, TRTCVoiceRoomCallback.ActionCallback callback);

参数如下表所示:

参数 类型 含义
seatIndex int 需要上麦的麦位序号。
callback ActionCallback 操作回调。

调用该接口会立即修改麦位表。如果是听众申请上麦需要房主同意的场景,可以先调用 sendInvitation 向房主申请,收到 onInvitationAccept后再调用该函数。

leaveSeat

主动下麦(主播调用)。

说明:

下麦成功后,房间内所有成员会收到onSeatListChangeonAnchorLeaveSeat的事件通知。

public abstract void leaveSeat(TRTCVoiceRoomCallback.ActionCallback callback);

参数如下表所示:

参数 类型 含义
callback ActionCallback 操作回调。

pickSeat

抱人上麦(房主调用)。

说明:

房主抱人上麦,房间内所有成员会收到onSeatListChangeonAnchorEnterSeat的事件通知。

public abstract void pickSeat(int seatIndex, String userId, TRTCVoiceRoomCallback.ActionCallback callback);

参数如下表所示:

参数 类型 含义
seatIndex int 需要抱上麦的麦位序号。
userId String 用户 ID。
callback ActionCallback 操作回调。

调用该接口会立即修改麦位表。如果是房主需要听众同意,听众才会上麦的场景,可以先调用 sendInvitation 向听众申请,收到 onInvitationAccept后再调用该函数。

kickSeat

踢人下麦(房主调用)。

说明:

房主踢人下麦,房间内所有成员会收到onSeatListChangeonAnchorLeaveSeat的事件通知。

public abstract void kickSeat(int seatIndex, TRTCVoiceRoomCallback.ActionCallback callback);

参数如下表所示:

参数 类型 含义
seatIndex int 需要踢下麦的麦位序号。
callback ActionCallback 操作回调。

调用该接口会立即修改麦位表。

muteSeat

静音/解除静音某个麦位(房主调用)。

说明:

静音/解除静音某个麦位,房间内所有成员会收到onSeatListChangeonSeatMute的事件通知。

public abstract void muteSeat(int seatIndex, boolean isMute, TRTCVoiceRoomCallback.ActionCallback callback);

参数如下表所示:

参数 类型 含义
seatIndex int 需要操作的麦位序号。
isMute boolean true:静音对应麦位;false:解除静音对应麦位。
callback ActionCallback 操作回调。

调用该接口会立即修改麦位表。对应 seatIndex 座位上的主播,会自动调用 muteAudio 进行静音/解禁。

closeSeat

封禁/解禁某个麦位(房主调用)。

说明:

房主封禁/解禁对应麦位,房间内所有成员会收到onSeatListChangeonSeatClose的事件通知。

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 音频质量,详情请参见 TRTC SDK

muteLocalAudio

静音/取消静音本地的音频。

public abstract void muteLocalAudio(boolean mute);

参数如下表所示:

参数 类型 含义
mute boolean 静音/取消静音,详情请参见 TRTC SDK

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

获取背景音乐音效管理对象 TXAudioEffectManager

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 音量大小,取值:0 - 100。

onUserVolumeUpdate

启用音量大小提示,会通知每个成员的音量大小。

void onUserVolumeUpdate(List<TRTCCloudDef.TRTCVolumeInfo> userVolumes, int totalVolume);

参数如下表所示:

参数 类型 含义
userVolumes List 用户列表。
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);

参数如下表所示:

参数 类型 含义
command 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 UserInfo 业务指定的内容。

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。
目录