Android 原生 RTC SDK 函数参考
适用 同批交付 AAR。AkNativeRtcClient 负责信令、独立 WHIP/WHEP 媒体、设备会话、重连和资源释放;Activity/Fragment 负责按钮、布局、相机/麦克风授权、MediaProjection 和生命周期。构造时传 Context、本地 SurfaceViewRenderer 和 Listener,退出时调用 close()。先按Android 接入步骤完成依赖与只看入会。
AkNativeRtcClient rtc = new AkNativeRtcClient(getApplicationContext(), localRenderer, listener);
rtc.setInitialMediaEnabled(false, false);
rtc.joinWithAccessTicket(serverUrl, roomId, accessTicket, null);
// 入会成功后的远端 VideoTrack 交给宿主自己的 SurfaceViewRenderer。
实际 joinWithAccessTicket 重载和回调参数以同批 AAR 源码/IDE 提示为准;serverUrl 必须是手机可信的 HTTPS 地址,不能填 Mac 的 127.0.0.1。加入会议的票据只用一次,SDK 内部维护设备令牌;宿主不保存 ZLM secret。
会话、身份与录制
| 方法 | 入参 | 结果 | 特殊情况 |
|---|---|---|---|
AkNativeRtcClient(context, localRenderer, listener) |
应用上下文、本机渲染器、事件接收器 | SDK 对象 | 渲染器由 SDK 初始化;同一 Activity 不要重复构造多个活动客户端。 |
joinWithAccessTicket(...) |
服务地址、会议 ID、一次性票据、可选口令/初始媒体参数 | Listener.onJoined(participantId) 或错误回调 |
Waiting 仅等候准入;系统授权或网络失败不等于已经入会。 |
createMeeting(settings, creator, callback) |
JSON 设置、业务后端创建回调、结果回调 | roomId/accessTicket 或错误 |
creator 由你的业务后端完成身份校验;相同失败重试保留幂等标识。 |
listMembers() |
无 | Listener.onMembers(JSONArray) |
成员状态可能因断线/换机变化;用事件或重新查询更新 UI。 |
getParticipantId()、getCapabilities()、getRole() |
无 | 当前成员 ID、能力集合、角色 | 未入会或重新入会时值可能变化;不能以 UI 上旧角色跳过服务端校验。 |
performRoomAction(action, payload, callback) |
白名单动作、JSON 参数、RoomCallback |
success(value) 或 httpFailure(error)/failure(message) |
控制操作结果与 HTTP 状态须分开处理;未知动作在 SDK 拒绝。 |
startContinuousRecording(callback)、stopContinuousRecording(recordingId, callback)、getContinuousRecording(callback) |
停止需本次录制 ID | JSON 状态或无活动录制 | 启停仅当前主持人;Stopping 不是可下载,状态变化经 onContinuousRecordingChanged。 |
leave()、close() |
无 | onLeft();对象释放 |
leave 离开当前设备;close 结束对象生命周期与线程/媒体资源。被踢后不要拿旧票重入。 |
listDemoRooms(baseUrl)、createDemoMeeting(...)、issueDemoAccessTicket(...) |
测试环境参数 | 对应 onDemoRooms/onDemoAccessTicket 或回调 |
只用于 Demo;正式应用通过自己的后端取票。 |
RoomCallback.httpFailure(RtcHttpException) 保留状态码和可能存在的 retryable;该值可为空。401 要换票或重新认证,403 是角色/设备/能力被拒,不能循环重发。onState 是状态文字,不能代替 success 或实际媒体状态。
摄像头、麦克风与屏幕
| 方法 | 入参 | 结果 | 特殊情况 |
|---|---|---|---|
setInitialMediaEnabled(microphone, camera)、setInitialMicrophoneEnabled(enabled) |
布尔值 | 更新首次入会意图 | 入会前设置;不跳过系统权限。 |
hasLocalMicrophone()、hasLocalCamera()、isMicrophoneEnabled()、isCameraEnabled() |
无 | 本机能力与实际开关 | 不把设备存在等同于已授予发布权限。 |
setMicrophoneEnabled(enabled)、setCameraEnabled(enabled) |
布尔值 | 异步改变本地轨道 | 以 onLocalMediaState 和远端接收确认;主持人收权或网络失败时不能假设成功。 |
setCameraForeground(foreground) |
Activity 是否在前台 | 调整摄像头生命周期 | 退到后台时遵守 Android 采集限制;回前台由 SDK 恢复可恢复的轨道。 |
listCameras()、switchCamera(cameraId) |
摄像头 ID | CameraDevice 列表 / onCameraChanged |
前后摄以 frontFacing 区分;设备拔插后 ID 可能变化。 |
getInputDevices()、getAudioRouter() |
无 | 输入设备和音频路由控制对象 | 宿主用它们显示设备/扬声器选择,尊重蓝牙与系统路由变化。 |
startScreenShare(permission, width, height)、stopScreenShare() |
用户批准的 MediaProjection Intent、目标尺寸 |
onScreenSharingChanged |
必须先由宿主触发系统授权;屏幕是独立发布,权限被撤销应停止。 |
attachScreenSession(...)、updateScreenSessionToken(token) |
受信任广播/共享服务的会话上下文 | 更新共享发布身份 | 仅同 App 受信任进程;短时令牌不得日志输出或跨应用传递。 |
getSupportedVideoModes()、getEndpointInfo() |
无 | JSONArray 模式 / JSONObject 终端参数 |
分辨率是设备候选,不保证当前已达到;实际值看媒体统计。 |
远端、协作与诊断
| 方法 | 入参 | 结果 | 特殊情况 |
|---|---|---|---|
getVideoPresentation() |
无 | 远端显示变换控制器 | 镜像/旋转只改变本地渲染,不更改源视频或录像。 |
applyVideoTransform(renderer, transform) |
SurfaceViewRenderer、镜像/翻转/旋转 |
静态渲染辅助方法 | 对支持变换的渲染器应用本地显示效果;普通渲染器不保证全部变换能力。 |
participantForPublication(publicationId) |
独立发布 ID | 成员 ID 或 null |
同一成员多路视频与多台设备不要按显示名合并。 |
getActiveSpeakerIds()、setRemoteAudioVolume(publicationId, volume) |
发布 ID、0~1 音量 | 发言成员快照 / 本地音量改变 | 发言是媒体活动检测;音量只影响本机,不向远端下静音命令。 |
sendChatMessage(text, targetParticipantId)、uploadAttachment(...) |
文本/文件、可选私发目标 | 聊天/附件事件 | 私发附件仅目标与发送者可见;上传完成边界重新校验设备。 |
downloadAttachment(...)、copyAttachmentTo(...)、downloadWhiteboardImage(...) |
获准附件对象或 ID、回调/输出流 | 字节或错误 | 不把物理文件路径暴露给业务端;大文件用流式复制。 |
uploadWhiteboardImage(uri, callback) |
本机图片 URI | 白板素材附件 | 上传素材不等于绘制;还需白板对象事件,收权会阻止最终提交。 |
sendHandRaised(raised)、sendReaction(reaction) |
布尔值或受支持的反应名 | 会议事件 | 不改变媒体发布权限。 |
Listener 的关键事件:onRemoteVideo/onRemoteVideoRemoved、onRemoteAudio/onRemoteAudioRemoved 管每路视图和声音;onLocalMediaState 与 onMediaPermissionChanged 管按钮;onCapabilitiesChanged 管主持权限;onWhiteboardEvent/onChatMessage 管协作;onContinuousRecordingChanged 管录制标志;onHttpError 管状态码;onLeft 做最终清理。旧会话事件不能应用到新设备会话。
会后独立客户端 AkRtcArchiveClient 的初始化、查询与资源方法见档案 SDK。当前 AAR 可编译不等于旧安装包已更新,验收须在目标真机看见双向视频帧与声音。