feat(设置页): 添加 Agent 过滤配置字段
- 在设置页添加 Agent ID 输入框,用于过滤流式播报消息 - 新增字符串资源 label_agent_filter 和 hint_agent_id - 在 MQTT 管理器中处理 soul2user 主题消息,根据配置的 demp_id 进行过滤 - 更新 README 文档结构,将详细技术说明移至 technique.md 文件
This commit is contained in:
115
README.md
115
README.md
@@ -1,114 +1,25 @@
|
||||
# Temi 终端控制应用
|
||||
|
||||
本项目是基于 Temi SDK 的 Android 应用,提供 MQTT 指令控制、导航/巡逻/接待流程,以及设置页管理网络 IP、当前位置与特殊任务模式。
|
||||
基于 Temi SDK 的 Android 应用,通过 MQTT 指令控制机器人导航、接待、巡逻与语音播报。
|
||||
|
||||
## 1. 运行环境
|
||||
## 功能
|
||||
- MQTT 指令控制导航与播报
|
||||
- 接待与巡逻模式
|
||||
- 设置页:网络 IP、当前位置、特殊任务模式
|
||||
|
||||
### 推荐工具:Android Studio
|
||||
应用依赖 Gradle 与 Android 运行环境,无法通过浏览器直接预览。请使用 Android Studio 导入项目并运行到 Temi 机器人或模拟器。
|
||||
## 运行
|
||||
- 推荐使用 Android Studio 连接 Temi 设备运行
|
||||
- 模拟器仅用于 UI 预览
|
||||
|
||||
### 运行方式
|
||||
- 方式 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` 目的地(默认 “会议室”)
|
||||
|
||||
### 示例
|
||||
## MQTT
|
||||
- Broker:`tcp://<IP>:1883`
|
||||
- 主题:`robot/cmd`
|
||||
- 示例:
|
||||
```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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user