RTCEngine 是 Android SRTC SDK 的核心入口,负责 SDK 生命周期、频道进出、事件监听、媒体采集/发布/订阅以及信息查询。完整最小接入流程见 快速开始。
静态方法
version()
参数说明:无。
返回值说明:
String,SDK 版本号。
buildTime()
参数说明:无。
返回值说明:
String,构建时间字符串。
create(app, enableLocalLog, localLogPath, version)
RTCEngine 实例。参数说明:
app:Application,应用上下文。enableLocalLog:Boolean,是否启用本地日志存储。localLogPath:String?,日志目录;null时使用默认路径。version:String,上层应用版本标识(可用于日志/排障)。
RTCEngine,引擎实例。
生命周期
initSDK()
参数说明:无。
返回值说明:无(
Unit)。
releaseSDK()
参数说明:无。
返回值说明:无(
Unit)。
IM 相关
enableIm(token, resultListener)
参数说明:
token:String,IM/频道鉴权令牌。resultListener:RTCResultListener?,启动结果回调,可为null。
Unit)。
disableIm()
参数说明:无。
返回值说明:无(
Unit)。
语音转写相关
startAsr()
参数说明:无。
返回值说明:无(
Unit)。
stopAsr()
参数说明:无。
返回值说明:无(
Unit)。
isStartAsr()
参数说明:无。
返回值说明:
Boolean,true 表示已开启。
频道相关
join(activity, token, options, resultListener)
参数说明:
activity:Activity,当前页面上下文。token:String,包含入会必要信息的令牌。options:JoinOptions?,预留参数,当前版本未生效,传null即可。resultListener:RTCResultListener?,调用结果回调。
Unit)。
leave()
参数说明:无。
返回值说明:无(
Unit)。
resume()
参数说明:无。
返回值说明:无(
Unit)。
isAudience()
is_audience 为准;未入会时返回 false。参数说明:无。
返回值说明:
Boolean,true 表示当前为观众。
入会后的初始身份用本方法读取;身份在会中发生变化时,由 RTCClientEvent.onMeMembershipChanged 通知。
回调设置
setRtcImEvent(e)
参数说明:
e:RTCImEvent,IM 回调实现。参见 RTCImEvent。
Unit)。
setRtcClientEvent(e)
参数说明:
e:RTCClientEvent,会控回调实现。参见 RTCClientEvent。
Unit)。
setRtcMediaEvent(e)
参数说明:
e:RTCMediaEvent,媒体回调实现。参见 RTCMediaEvent。
Unit)。
setRtcLocalVideoFrameEvent(e)
null 可移除回调。参数说明:
e:RTCLocalVideoFrameEvent?,本地视频帧回调实现;null表示移除。
Unit)。
RTCLocalVideoFrameEvent 接口方法:
onLocalVideoFrame:回调一帧本地视频。yuv为 SDK 为外部应用单独拷贝的数据,应用层可自行缓存或处理;stamp为帧时间戳;format为帧格式;facing为摄像头朝向。onLocalVideoFrameSizeChanged:本地视频帧尺寸或摄像头方向发生变化时回调。
媒体质量
getMetric()
qualityReport)。返回线程安全副本,不触发底层 getStats;采样周期约 5 秒,起播初期可能为 null。适合”点开详情才计算”的按需诊断场景;弱网档位变化请优先监听 RTCMediaEvent.onNetworkQualityChanged。参数说明:无。
返回值说明:
MediaMetric.Metric?,最近一次质量快照;尚无数据时为 null。字段参见 媒体质量,获取方式与弱网处理见 网络质量。
音频路由
getAudioRouterManager()
参数说明:无。
返回值说明:
AudioRouterManager,路由管理实例。详见 AudioRouterManager 与 音频路由使用。
releaseAudioRouterManager()
release(true),恢复系统音频模式并切回扬声器)。参数说明:无。
返回值说明:无(
Unit)。
设备能力
getCameraDevices()
cameraId 可用于 LocalCameraTrack.switchCameraDevice 精确切换摄像头。参数说明:无。
返回值说明:
List<CameraDeviceCapability>,无可用设备时返回空列表。类型定义见 类型定义。
摄像头设备的动态变化(插拔、断开、运行时错误)通过RTCMediaEvent的onCameraDeviceListChanged/onCameraDeviceDisconnected/onCameraDeviceError通知。
Track 获取
getLocalCameraTrack(preOpt)
参数说明:
preOpt:PreOptionCamera,摄像头采集/发布预设,默认_480P。参见 摄像头预设。
LocalCameraTrack,本地摄像头轨道实例。
getLocalScreenTrack(activity, preOpt)
参数说明:
activity:Activity,用于发起录屏权限请求。preOpt:PreOptionScreen,录屏采集/发布预设。参见 屏幕共享预设。
LocalScreenTrack,本地屏幕轨道实例。
getLocalMicTrack(preOpt)
参数说明:
preOpt:PreOptionMic,麦克风采集/发布预设。参见 麦克风预设。
LocalMicTrack,本地麦克风轨道实例。
getCustomVideoTrack()
null。参数说明:无。
返回值说明:
CustomVideoTrack?,可能为 null。参见 CustomVideoTrack。
getRemoteVideoTrack(uid, trackDesc)
参数说明:
uid:String,远端用户 ID。trackDesc:String,轨道描述(如camera_big/screen)。
RemoteVideoTrack?,未找到时为 null。
getRemoteMixtureTrack()
参数说明:无。
返回值说明:
RemoteVideoTrack?,未找到时为 null。
getRemoteAudioMixTrack()
参数说明:无。
返回值说明:
RemoteAudioMixTrack?,未找到时为 null。参见 RemoteAudioMixTrack。
发布与订阅
publishLocalVideo(track, publishCustomOpt, listener)
参数说明:
track:LocalVideoTrack,本地视频轨道(摄像头/录屏/本地自定义)。publishCustomOpt:PublishCustomOptions?,发布自定义参数,可为null。参见 摄像头预设。listener:RTCResultListener?,发布结果回调,可为null。
Unit)。
注意:摄像头推流采用声明式对账,快速连续publish/unpublish时,中间被后续操作合并的调用可能不回调;请以最后一次调用的回调或最终状态为准,不要假设“每次调用必有一次回调”。
publishLocalAudio(track, publishCustomOpt, listener)
参数说明:
track:LocalAudioTrack,本地音频轨道。publishCustomOpt:PublishCustomOptions?,发布自定义参数,可为null。listener:RTCResultListener?,发布结果回调,可为null。
Unit)。
unPublishLocalVideo(track, listener)
参数说明:
track:LocalVideoTrack,目标视频轨道。listener:RTCResultListener?,取消发布结果回调,可为null。
Unit)。
注意:同 publishLocalVideo,快速连续操作时中间被合并的调用可能不回调,以最后一次为准。
unPublishLocalAudio(track, listener)
参数说明:
track:LocalAudioTrack,目标音频轨道。listener:RTCResultListener?,取消发布结果回调,可为null。
Unit)。
subscribeRemoteTrack(uid, trackId, preferTrackIds, result)
参数说明:
uid:String,远端用户 ID。trackId:String,目标(默认)远端轨道 ID。preferTrackIds:MutableList<String>?,候选层列表,用于大小流/联播场景下声明可接受的多路轨道优先级。传null时按仅订阅trackId处理;若传入列表中不含trackId,SDK 会自动将其插入到列表首位。result:RTCResultListener?,订阅结果回调,可为null。
Unit)。
unSubscribeRemoteTrack(uid, trackId)
参数说明:
uid:String,远端用户 ID。trackId:String,远端轨道 ID。
Unit)。
subscribeRemoteMixture()
参数说明:无。
返回值说明:无(
Unit)。
unSubscribeRemoteMixture()
参数说明:无。
返回值说明:无(
Unit)。
网宿通用流(高级 / 特定引擎)
⚠️ 仅网宿引擎可用:以下接口仅在网宿(Wangsu)流媒体引擎下有效,用于按上层直接给定的流名订阅一路“通用流”,属于特定接入场景的高级能力。在非网宿引擎下调用:getRemoteStreamTrack返回null,subscribeRemoteStream通过result.onFail返回不支持错误,unSubscribeRemoteStream直接忽略。一般接入方无需使用本组接口。
getRemoteStreamTrack(uid, trackDesc)
addPlayView 渲染)。不依赖房间成员,按订阅时传入的 (uid, trackDesc) 获取;可在 subscribeRemoteStream 之前调用——先获取控制类并 addPlayView,再订阅,画面到达后即渲染。参数说明:
uid:String,渲染路由标识(上层自定义;可与流名相同)。trackDesc:String,特殊流标识,用于渲染绑定与区分多路通用流。
RemoteVideoTrack?,非网宿引擎或频道未启动时为 null。
subscribeRemoteStream(streamName, uid, trackDesc, kind, result)
"rtc_v_lesson_fknqb")。参数说明:
streamName:String,完整流名,直接用于网宿 HTTP 请求。uid:String,渲染路由标识(上层自定义;可与streamName相同)。trackDesc:String,特殊流标识,用于渲染绑定与区分多路通用流。kind:String?,可选,"video"/"audio";为空时按流名前缀推断(rtc_v→ video,rtc_a→ audio)。result:RTCResultListener?,订阅结果回调,可为null。
Unit)。
unSubscribeRemoteStream(streamName, uid, trackDesc, kind)
参数说明:
streamName:String,订阅时传入的完整流名。uid:String,订阅时传入的渲染路由标识。trackDesc:String,订阅时传入的特殊流标识。kind:String?,可选,"video"/"audio";为空时按流名前缀推断。
Unit)。
信息查询
getChannelInfo()
参数说明:无。
返回值说明:
ChannelInfo?,未入会或无数据时可能为 null。参见 类型定义。
getMeInfo()
参数说明:无。
返回值说明:
UserInfo?,未入会或无数据时可能为 null。
getUserInfos()
参数说明:无。
返回值说明:
MutableList<UserInfo>,成员列表。
getUserInfo(uid)
参数说明:
uid:String,目标用户 ID。
UserInfo?,未找到时为 null。
getTrackInfos(uid)
参数说明:
uid:String,目标用户 ID。
List<TrackInfo>,轨道信息列表。
getTrackInfoByTrackDesc(uid, trackDesc)
参数说明:
uid:String,目标用户 ID。trackDesc:String,轨道描述。
TrackInfo?,未找到时为 null。
getTrackInfoByTrackId(uid, trackId)
参数说明:
uid:String,目标用户 ID。trackId:String,轨道 ID。
TrackInfo?,未找到时为 null。
通用回调结果类型
多数异步接口通过RTCResultListener 返回调用结果。
RTCResultListener
onSuccess():调用成功。onFail(int code):调用失败,code为错误码,参见 错误码。
RTCResultListener2<T>
onSuccess(t):调用成功并返回结果对象t。onFail(code):调用失败,code为错误码。