跳到主要内容
版本:v1.3.1

生命周期与工具

资源释放与生命周期​

TmkTranslationChannel.destroy()​

停止通道、释放底层资源、清除 listener,并从全局通道集合中移除。该方法只作用于单个通道对象;页面退出、切换模式、切换房间或切换语言对时,建议使用 TmkTranslationSDK.releaseChannel() 作为会话级释放入口。

TmkTranslationSDK.releaseChannel()​

释放当前翻译通道和当前会话相关资源:

fun releaseChannel()

行为说明:

  • 停止并销毁当前通道,清空当前房间引用。

  • 如果当前在线房间已创建成功,SDK 会异步调用关房流程,避免服务端遗留预建房间。

  • 不会清空 sdkInit(context, config) 的全局配置,也不会清空鉴权状态。

  • 释放后可以直接重新创建房间与通道。

建议
  • 页面退出、切换模式、切换房间或切换语言对时,优先调用 TmkTranslationSDK.releaseChannel()。
  • 调用 releaseChannel() 后,业务侧不需要再对同一房间重复触发关房。

TmkTranslationSDK.destroy()​

释放 SDK 全局资源:

fun destroy()

行为说明:

  • 销毁当前所有 TmkTranslationChannel。

  • 释放在线共享资源和埋点会话。

  • 清空全局配置并重置初始化状态。

  • 后续如需继续使用,必须重新调用 sdkInit(context, config) 和 verifyAuth(callback)。


可取消请求句柄​

Cancelable​

updateSpeaker(...) 返回 Cancelable:

interface Cancelable {
val isCanceled: Boolean
fun cancel()
}

取消只影响尚未执行或尚未回调的任务,已生效的服务端动作或音色设置不会回滚。REQUEST_CANCELLED 属于主动取消类错误,业务侧不应弹 fatal 错误框。


PCM 工具与音频要求​

SDK 接收业务侧推送的 PCM:

  • 格式:16-bit little-endian PCM

  • 推荐采样率:16000

  • 收听模式:单声道

  • 一对一模式:双声道交织数据

  • 推荐帧长:约 20ms

业务侧需要保证录音器输出与 TmkTransChannelConfig 中的 sampleRate、channelNum 一致。


诊断能力​

Android 诊断日志由 TmkTransGlobalConfig 控制。诊断能力默认开启,默认等级为 ESSENTIAL;如果业务不希望采集任何诊断文件,需要显式关闭。

配置说明
setDiagnosisConfig(config)设置分级诊断日志配置,包括启用状态、采集等级、自定义根目录和音频采集开关。
setDiagnosisConsoleEnabled(enabled)是否同步输出诊断日志到控制台

示例:

val config = TmkDiagnosisConfig(
enabled = true,
level = TmkDiagnosisLevel.DIAGNOSTIC,
rootDirectory = null,
audioCaptureEnabled = false
)

诊断等级​

等级采集内容保留策略
ESSENTIALSDK 初始化/销毁、在线和离线鉴权结果、License 与离线包状态、创建/加入/关闭房间、切换语言、切换音色、翻译引擎切换、房间能力接口、错误、超时、创建房间前网络环境、严重网络异常。默认不采集普通 RTC/RTM/Audio/TTS 高频日志,不采集 ASR/MT partial,不创建 Agora 目录,不采集音频文件。每个文件最大 10 MiB,超限后清理最旧完整日志行,目标清理约 20%;最多保留 10 次会话日志。
DIAGNOSTIC包含 ESSENTIAL,并增加 Agora 普通日志、常规网络状态、ASR/MT completed 或 final 结果、TTS 关键阶段日志。仅保留 2 天内数据;单文件最大 10 MiB;滚动文件命名为 workflow.log、workflow1.log 等。
TRACE包含 DIAGNOSTIC,并增加 ASR/MT partial、RTC/RTM/Audio/TTS 追踪日志等高频数据;只有 audioCaptureEnabled=true 时才采集 PCM/Agora 音频文件。仅保留 4 天内数据;单文件最大 10 MiB;滚动文件命名为 workflow.log、workflow1.log 等。

诊断目录与导出​

目录说明
files/sdk_diagnosisSDK 诊断根目录,位于应用私有目录。
files/sdk_diagnosis/sdk.logSDK 初始化、鉴权、License、离线包、销毁等全局诊断日志。
files/sdk_diagnosis/network_status.log网络环境、Agora 连接状态、丢包和严重网络异常日志。
files/sdk_diagnosis/<conversation>/workflow.log单次对话工作流日志,包括建房、入会、关房、语言/音色/引擎/能力接口、ASR/MT/TTS 关键事件和错误。
files/sdk_diagnosis/<conversation>/AgoraAgora RTC/RTM 普通日志目录,仅 DIAGNOSTIC 和 TRACE 按需创建。
files/sdk_diagnosis/<conversation>/pcm音频诊断文件目录,仅 TRACE 且 audioCaptureEnabled=true 时按需创建。
  • 关闭诊断时,SDK 不采集诊断日志,也不采集 Agora RTC/RTM 日志。

  • 切换诊断等级不会主动清理历史日志;清理只由保留策略、文件超限或磁盘紧张触发。

  • SDK 诊断日志先进入有界内存队列,再由后台批量落盘;文件 I/O 不应阻塞 SDK 业务线程。应用退出、进入后台、释放通道或导出诊断目录时会尽量触发落盘。

  • 磁盘紧张时,SDK 会优先清理 PCM/音频诊断文件和较旧的对话日志。

  • Android 的诊断目录属于应用私有目录,不能依赖文件管理器直接访问。

  • 如需导出,业务应使用 SDK 返回的诊断目录自行打包并分享。

隐私与脱敏

诊断日志可用于排查鉴权、建房、建通道、离线模型、在线 RTC/RTM 和离线 pipeline 问题。SDK 会对 token、connect token、Agora app id、用户标识、license 等敏感字段做脱敏;上传诊断日志前仍需要完成用户授权、业务侧脱敏复核和访问控制,不应记录或上传原始 License、clientSecret、设备私钥或完整用户隐私数据。