尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

羽毛球工具 App HarmonyOS 6.0 实战(09/10):语音手表双入口计分

羽毛球工具 App HarmonyOS 6.0 实战(09/10):语音手表双入口计分
📅 发布时间:2026/6/30 8:00:15

系列第 9 篇。比赛现场最好的输入方式不是唯一的。语音适合双手不方便时,手表适合安静场景下的快速按钮,两者应该共用同一套计分动作。

一、真实问题背景

在羽毛球双打现场,计分员可能正在看球、捡球、和队友沟通。拿起手机并不总方便。语音输入可以说“甲队加一分”,手表可以直接点 A 队 +1,这两种入口都能降低打扰。

但是入口越多,越容易产生重复动作、误识别和状态不一致。所以双入口设计不能让语音和手表各写一套逻辑,而应统一到计分动作服务。

二、目标与边界

本文目标是设计一个低打扰计分体系:

1. 语音识别负责把自然语言转成动作。2. 手表按钮负责提交明确动作。3. 手机端统一校验、更新比分、播报结果。4. 失败时回到手动计分,不阻断比赛。

边界是:当前基础版不引入服务器语音服务,不依赖在线识别,不把语音结果直接写入比分。所有动作都要经过手机端确认或校验。

三、当前工程的语音基础

项目已经有两个语音相关服务:

common/src/main/ets/service/ScoreSpeechService.ets common/src/main/ets/service/ScoreVoiceRecognitionService.ets

前者负责 TTS 播报,后者使用@kit.CoreSpeechKit的识别能力和@kit.AudioKit的采集能力。语音入口后续可以先识别关键词,再映射成动作。

export interface ScoreVoiceRecognitionCallbacks { onCommand(text: string): void; onError(message: string): void; }

四、语音不应直接加分

语音识别可能出现误差。比如“乙队加一分”被识别成“A 队加一分”,如果直接写比分,现场很难追踪错误来源。更稳的流程是:

语音文本 解析为候选动作 页面显示短确认 确认后提交 ScoreActionService 更新比分并播报

对于非常明确的短命令,也可以允许自动执行,但必须支持撤销。

五、手表动作更明确但也要防重复

手表按钮比语音更确定,但也可能因为网络抖动、设备重连或连续点击产生重复动作。每个动作应带actionId。

interface ScoreInputAction { id: string; source: 'watch' | 'voice' | 'phone'; sessionId: string; matchId: string; type: 'teamAPlus' | 'teamBPlus' | 'undo' | 'finish'; createdAt: number; }

手机端收到动作后先查最近处理记录,重复 ID 直接忽略。

六、统一动作服务的价值

无论入口来自手机按钮、语音还是手表,都应该调用同一个服务:

const ok = ScoreActionService.apply(action); if (ok) { ScoreSpeechService.speak('当前比分 9 比 7'); }

这样计分规则、撤销栈、结束比赛、播报策略都集中管理。页面只负责把用户意图转成ScoreInputAction。

七、失败降级策略

现场工具最怕“功能失败影响比赛”。因此语音和手表都要设计降级:

1. 语音识别失败:关闭语音入口,保留手动计分。2. 手表断开:手机端继续计分。3. TTS 创建失败:关闭播报,不影响比分。4. 动作冲突:保留最新手机端状态,提示用户核对。

当前ScoreSpeechService已经有available标记,失败后不会反复阻塞页面,这个思路也适合语音识别服务。

八、官方参考

语音识别、音频采集和 TTS 都应以 HarmonyOS 官方 Kit 文档为准。本文重点是工程边界:入口可以多,状态写入必须统一。

华为开发者文档:HarmonyOS 应用开发

九、工程验收清单

-common/src/main/ets/service/ScoreSpeechService.ets能独立处理 TTS 播报失败。-common/src/main/ets/service/ScoreVoiceRecognitionService.ets已封装语音识别入口。-features/src/main/ets/scoring/LiveScoringPage.ets有撤销、结束、直接录入比分能力。-common/src/main/ets/storage/SessionStore.ets能持久化对局详情。- 后续新增ScoreActionService时,手机、语音、手表都应走同一动作接口。- 验证时间:2026-06-29;当前工程目标包含 HarmonyOS 6.0/API 20+,昨日 Hvigor 构建已验证BUILD SUCCESSFUL。

十、小结

语音和手表双入口的关键是“入口分散,动作统一”。语音负责识别,手表负责快速按钮,手机端负责权威状态和失败降级。这样才能在比赛现场真正降低打扰,而不是制造新的混乱。

十一、下一篇衔接

入口变多之后,数据同步和冲突合并就变得重要。下一篇收束到本地优先同步策略:离线恢复、冲突合并和隐私边界。

相关新闻

  • League Akari自动秒选功能终极指南:10个高效配置技巧全解析
  • 如何让ChatGPT写出被导师夸“逻辑严密、术语精准”的论文段落?——12个经SCI期刊编辑实测有效的Prompt结构
  • 基于TRF7960A的16通道HF RFID多路复用系统设计与实战

最新新闻

  • SAP FICO 后台配置实战:从零搭建财务核心框架
  • 截痕法解析二次曲面:从旋转曲面到锥面的几何构建
  • HoRain云--Java数值处理:Number与Math全解析
  • 华硕笔记本终极优化工具:G-Helper轻量控制中心完整指南
  • DSP在线升级(2)--Bootloader的模块化设计与通信协议集成
  • Windows 10 环境下 Nessus 8.15 专业版离线部署与无限IP授权实战

日新闻

  • 【计算机毕业设计案例】基于 Spring Boot+Vue 的电影售票系统设计与实现 前后端分离架构下影院在线购票管理平台(程序+文档+讲解+定制)
  • 到底 TMD 用哪个: npm, pnpm, Yarn, Bun, Deno? 傻瓜, 当然用 npm 啦
  • Google限制Meta使用Gemini模型 凸显AI授权竞争白热化

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号