- 将标题从“开发与预览指南”改为更准确的“终端控制应用” - 详细说明功能概览、页面说明和 MQTT 指令协议 - 补充特殊任务模式的行为说明 - 优化项目结构描述,使其更易于理解 - 保持运行环境与构建步骤的指导性
3.5 KiB
3.5 KiB
Temi 终端控制应用
本项目是基于 Temi SDK 的 Android 应用,提供 MQTT 指令控制、导航/巡逻/接待流程,以及设置页管理网络 IP、当前位置与特殊任务模式。
1. 运行环境
推荐工具:Android Studio
应用依赖 Gradle 与 Android 运行环境,无法通过浏览器直接预览。请使用 Android Studio 导入项目并运行到 Temi 机器人或模拟器。
运行方式
- 方式 A:连接 Temi 机器人(推荐)
- 确保 Temi 已开启开发者模式
- USB 连接或 ADB over Wi-Fi
- Android Studio 选择设备后 Run
- 方式 B:Android 模拟器(仅 UI 预览)
- Temi 系统服务缺失,Robot SDK 可能报错或不可用
2. 功能概览
- 主界面表情与状态反馈(AnimatedEmojiView)
- MQTT 控制机器人行为与 TTS 播报
- 接待模式:到达指定地点后检测到人出现确认按钮
- 巡逻模式:按指定或随机地点巡逻
- 特殊任务模式开关
- 设置页:网络 IP、当前位置、重启应用
3. 页面说明
主界面(MainActivity)
- 顶部设置按钮进入设置页
- 表情组件根据 TTS 和任务状态切换表情
- 接待模式触发时显示 “是的” 按钮,点击后前往目标地点
设置页(SettingsActivity)
- 网络 IP 配置:保存后作为 MQTT Broker 地址
- 当前位置下拉选择:来源于 Temi 已保存地点
- 特殊任务模式开关与指示灯
- 长按 3 秒重启应用
- 版本号显示(当前为硬编码字符串)
4. MQTT 指令协议
应用连接 tcp://<IP>:1883,订阅主题 robot/cmd,仅处理 JSON payload。
基础指令
recharge:回充电桩goto:前往地点(字段location或target)repose:重新定位stop:停止移动并暂停 TTS(保留队列与 stream buffer)continue:继续播报(优先重播被中断语句)terminate:停止移动并清空所有 TTS 队列与 buffer
播报指令
speak:立即播报(字段text或speech,可选lang)stream:流式播报(字段text或content,可选lang)- 按
。!?!?\n分句进入队列
- 按
任务指令
patrol:巡逻flag=true随机抽取 3~6 个地点(排除 home base)flag=false+locations指定地点列表
reception:接待location接待地点(默认 “前台”)text询问语(默认 “你是我要接待的贵宾吗?”)destination目的地(默认 “会议室”)
示例
{"action":"goto","location":"前台"}
{"action":"speak","text":"欢迎光临","lang":"zh"}
{"action":"patrol","flag":false,"locations":["前台","会议室","大厅"]}
5. 特殊任务模式
设置页开关 special_task_mode 控制以下行为:
- 跳过 Home Base 的开门/关门语音逻辑
- 跳过检测到人时的问候语
- 机器人到达地点时,不播报“已到达”提示(仅在当前无任务时生效)
6. 项目结构
MainActivity.kt:主逻辑与事件监听SettingsActivity.kt:设置页逻辑MqttManager.kt:MQTT 连接与指令解析NavController.kt:导航与巡逻封装AnimatedEmojiView.kt:表情动画绘制LogManager.kt:Logcat 监听分发HttpManager.kt:HTTP Workflow 请求封装(目前未在流程中启用)activity_main.xml/activity_settings.xml:主界面与设置页布局
7. 本地构建与安装
.\gradlew.bat :app:installDebug