Android SDK 概览
简介
TmkTranslationSDK 用于将业务侧采集的 PCM 音频接入翻译能力,并向业务侧返回:
-
识别文本
-
翻译文本
-
翻译后的 PCM 音频
-
通道状态与错误信息
-
诊断日志与离线模型状态
当前 SDK 同时支持:
-
在线翻译
-
离线翻译
-
收听模式(单声道)
-
一对一模式(双声道)
本文面向外部接入方,重点说明:
-
SDK 初始化与鉴权
-
在线/离线接入流程
-
所有公开接口与数据模型
-
常见使用方式与注意事项
接入前准备
环境要求
| 项目 | 说明 |
|---|---|
| 最低系统版本 | minSdk 28 |
| Java/Kotlin 目标版本 | 11 |
| 发布产物 | co.timekettle.translation:tmk-translation-sdk |
| 运行环境 | Android 真机或可访问音频/网络能力的测试设备 |
权限要求
在线模式需要网络权限:
<uses-permission android:name="android.permission.INTERNET" />
如果业务侧自行录音并向 SDK 推送 PCM,需要声明麦克风权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
SDK 负责消费业务侧传入的 PCM 数据;录音权限申请、录音器管理和用户授权提示由宿主 App 负责。
依赖配置
通过 Maven Central 安装
可通过 Maven Central 安装,以具体版本号为准
dependencies {
implementation("co.timekettle.translation:tmk-translation-sdk:1.2.0")
}
如具体发布版本与本文不一致,请以发布说明为准。
通过下载安装
AAR 下载地下:
请替换 version 为具体版本号,如下:
设置必要的 Android 依赖库
网络配置
生产环境建议使用 HTTPS。若联调环境使用 HTTP,需要按 Android 要求配置 networkSecurityConfig 允许明文流量:
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
核心流程总览
startInitAfter 解释
startInitAfter 是内部属性,createTranslationChannel 传 listener 时 startInitAfter 就是 true,接口关系具体可参数以下表格
| 重载签名 | 内部 | 行为 |
|---|---|---|
createTranslationChannel(context, config, callback) | false | 只 init + join,不自动 start |
createTranslationChannel(context, config, callback, options) | false | 同上,可配置超时 |
createTranslationChannel(context, config, listener, callback) | true | init + join + 自动 start,创建即可推流 |
createTranslationChannel(context, config, listener, callback, options) | true | 同上,可配置超时 |
在线翻译
在线模式典型流程:
-
sdkInit -
getOnlineSupportedLanguages(version, callback) -
verifyAuth -
createTmkTranslationRoom -
createTranslationChannel需要startInitAfter = true -
channel.pushStreamAudioData -
releaseChannel -
destroy
离线翻译
离线模式典型流程:
-
sdkInit -
getOfflineSupportedLanguages(version, callback) -
verifyAuth -
isOfflineTranslationSupported -
isOfflineModelReady或downloadOfflineModels -
createTmkTranslationRoom -
createTranslationChannel(config.mode = TranslationMode.OFFLINE) -
pushStreamAudioData -
releaseChannel -
destroy
Android 当前离线通道仍通过统一的 createTranslationChannel 入口创建,并要求配置 room。离线模式不会使用在线 RTC/RTM 状态原因,但通道生命周期和回调入口与在线保持一致。
回调线程说明
SDK 对外异步回调会切回主线程后再回调业务方,包括:
-
verifyAuth -
createTranslationChannel的启动型重载 -
TmkOfflineModelDownloadListener -
checkOfflineModelReadyAsync -
updateSpeaker结果回调
TmkTranslationListener 的状态、文本、音频、事件回调可直接用于更新 UI;业务侧仍应避免在回调中执行耗时任务。
在线与离线的主要区别
| 项目 | 在线翻译 | 离线翻译 |
|---|---|---|
是否依赖 verifyAuth | 是 | 建议先鉴权,用于确认离线能力 |
| 是否需要房间对象 | 需要 | 当前 Android 统一入口仍需要 |
| 是否需要离线模型 | 不需要 | 需要 |
| 通道创建接口 | createTranslationChannel | createTranslationChannel |
| 运行状态原因 | 包含 RTC/RTM、网络、服务端原因 | 主要来自模型、pipeline、离线鉴权和引擎状态 |