AKStream.Next · 文档中心

Android 原生 RTC SDK 函数参考

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 可编译不等于旧安装包已更新,验收须在目标真机看见双向视频帧与声音。