# 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://: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` 目的地(默认 “会议室”) ### 示例 ```json {"action":"goto","location":"前台"} ``` ```json {"action":"speak","text":"欢迎光临","lang":"zh"} ``` ```json {"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. 本地构建与安装 ```bash .\gradlew.bat :app:installDebug ```