眼镜端 AI Chat
示例说明
演示眼镜端如何启动 AI Chat、发送问题,并接收流式回答结果。
使用位置
眼镜端首页:
HomeActivity->SdkMediaActivity
示例页面:
com.rokid.glass.SdkMediaActivity
适用端
- 眼镜端
关键文件
源码定位
仓库内重点查看下面这些位置:
- glassdemo/app/src/main/java/com/rokid/glass/SdkMediaActivity.kt 关键位置:
binding.btnAiChat.setOnClickListener - glassdemo/app/src/main/java/com/rokid/glass/SdkMediaActivity.kt 关键位置:
binding.btnStopAiChat.setOnClickListener - glassdemo/app/src/main/java/com/rokid/glass/SdkMediaActivity.kt 关键回调:
mAIChaLister
如果你要做完整终端助手,可以把这一页和下面两处源码配合着看:
- glassdemo/app/src/main/java/com/rokid/glass/SendMessageActivity.kt 用来接 ASR / TTS 示例
- glassdemo/app/src/main/java/com/rokid/glass/HomeActivity.kt 用来接离线语音指令示例
相关 API 文档
流程说明
- 点击页面中的 AI 按钮。
- 调用
GlassSdk.getGlassAiChatService()?.startAiChat(false)启动会话。 - 调用
toAiChat("杭州明天下雨吗", mAIChaLister)发送问题。 - 通过
AiChatListener接收流式回调。 - 结束时调用
endAiChat()。
关键代码片段
kotlin
binding.btnAiChat.setOnClickListener {
GlassSdk.getGlassAiChatService()?.startAiChat(false)
GlassSdk.getGlassAiChatService()?.toAiChat(
"杭州明天下雨吗",
mAIChaLister
)
}
binding.btnStopAiChat.setOnClickListener {
GlassSdk.getGlassAiChatService()?.endAiChat()
}kotlin
private val mAIChaLister = object : AiChatListener.Stub() {
override fun onAiChatAnswer(
answer: String?,
isFinish: Boolean,
contentType: String?,
sessionId: String?
) {
L.i(TAG, "onAiChatAnswer: answer = $answer")
}
override fun onError(code: Int, message: String) {}
}回调内容
示例中已经处理了这些 AI Chat 回调:
onContinuousModeUpdate(...)onAiChatAnswer(answer, isFinish, contentType, sessionId)onError(code, message)onAiTakePhoto(filePath)
调用时序
启动会话调用
startAiChat(false)。发送问题通过
toAiChat(question, listener) 提交文本问题。接收片段多次收到
onAiChatAnswer(..., isFinish=false)。结束回答收到
isFinish=true 后完成本轮回答。关闭会话不再使用时调用
endAiChat()。实现说明
为什么 onAiChatAnswer 里有 isFinish
因为 AI 回答是流式返回的。
answer可能是一段增量文本isFinish表示这次回答是否已经结束
如果你要做逐字展示、逐句播报或者聊天气泡增量刷新,这个回调非常关键。
onAiTakePhoto 是做什么的
说明 AI Chat 不只是文本问答,还可能触发带设备能力的动作,例如拍照。这也是为什么它更像“AI 助手能力”,而不只是一个普通聊天接口。
sessionId 可以怎么用
如果后续需要多轮对话、会话续接、日志追踪,sessionId 会很有用。当前示例里只是打印日志,但正式业务通常应该把它保留下来。
与 ASR/TTS 的关系
在真实产品中,AI Chat 往往会和语音能力组合使用:
- ASR 负责把用户语音转成文本问题
- AI Chat 负责理解和回答
- TTS 负责把回答再播报出来
当前仓库里,这三块示例代码分散在不同页面,但已经能串成一条完整链路。
推荐组合方式
| 阶段 | 推荐能力 | 当前示例位置 |
|---|---|---|
| 用户输入 | 在线 ASR | SendMessageActivity |
| 语义理解与回答 | AI Chat | SdkMediaActivity |
| 播报结果 | TTS | SendMessageActivity |
注意事项
- 这个示例当前以代码调用为主,没有做完整聊天 UI。
- 如果要做终端助手,建议把 ASR、AI Chat、TTS 串成一个统一页面或统一状态机。