Sucan 9756e71a23 fix: 修复语音任务状态管理问题
在收到流式语音指令时,立即标记当前任务为语音任务,防止被其他任务覆盖
在TTS队列和缓冲区清空且无语音播放时,自动清除语音任务标记
将onReposeStatusChanged方法移至文件末尾以保持代码结构清晰
2026-03-13 16:45:42 +08:00
2026-03-10 12:12:00 +08:00
2026-03-10 12:12:00 +08:00
2026-03-10 12:12:00 +08:00
2026-03-10 12:12:00 +08:00
2026-03-10 12:12:00 +08:00

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
  • 方式 BAndroid 模拟器(仅 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:前往地点(字段 locationtarget
  • repose:重新定位
  • stop:停止移动并暂停 TTS保留队列与 stream buffer
  • continue:继续播报(优先重播被中断语句)
  • terminate:停止移动并清空所有 TTS 队列与 buffer

播报指令

  • speak:立即播报(字段 textspeech,可选 lang
  • stream:流式播报(字段 textcontent,可选 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.ktMQTT 连接与指令解析
  • NavController.kt:导航与巡逻封装
  • AnimatedEmojiView.kt:表情动画绘制
  • LogManager.ktLogcat 监听分发
  • HttpManager.ktHTTP Workflow 请求封装(目前未在流程中启用)
  • activity_main.xml / activity_settings.xml:主界面与设置页布局

7. 本地构建与安装

.\gradlew.bat :app:installDebug
Description
No description provided
Readme 287 KiB
Languages
Kotlin 95.3%
Python 4.7%