红外感应控制弹框设计

日期:2026-07-31

目标

将“设置 → 高级设置”中原有的“去掉辅助餐盘识别”单一操作改为统一的“红外感应设置”入口。用户在弹框内执行打开或关闭红外感应,并查看最近一次打开和最近一次关闭的操作时间。

交互设计

高级设置中只保留一个入口:

红外感应设置

点击后打开操作弹框,展示:

红外感应设置

最近打开:2026-07-31 14:20:35
最近关闭:2026-07-30 09:12:08

[打开红外感应]  [关闭红外感应]

没有相应记录时显示:

最近打开:暂无记录
最近关闭:暂无记录

弹框不展示“当前状态”或“最近判断”,只客观展示本应用最近成功发送打开、关闭命令的时间。

视觉规格

操作规则

打开红外感应

  1. 用户点击“打开红外感应”。
  2. 弹出“确认打开红外感应?”二次确认。
  3. 确认后发送恢复命令:3E 53 43 41 4E 30 36 30 31 30 30 35 81 3C
  4. 串口完成写入和刷新后,保存最近打开时间并刷新弹框。
  5. 串口发送失败时不更新时间,显示失败原因并记录失败日志。

关闭红外感应

  1. 用户点击“关闭红外感应”。
  2. 弹出“确认关闭红外感应?”二次确认。
  3. 确认后发送去掉命令:3E 53 43 41 4E 30 36 30 30 30 30 35 80 3C
  4. 串口完成写入和刷新后,保存最近关闭时间并刷新弹框。
  5. 串口发送失败时不更新时间,显示失败原因并记录失败日志。

数据设计

使用现有 MmkvUtils 保存两个独立的毫秒时间戳:

配置键含义默认值
LAST_INFRARED_OPEN_TIME最近一次成功发送打开命令的时间0
LAST_INFRARED_CLOSE_TIME最近一次成功发送关闭命令的时间0

展示时将大于 0 的时间戳格式化为 yyyy-MM-dd HH:mm:ss;值为 0 时显示“暂无记录”。

每次操作同时写入现有本地日志,记录操作类型、发送结果和操作时间。失败操作只进入日志,不覆盖最近成功操作时间。

实现范围

并发与异常处理

验收标准

  1. 高级设置只显示一个“红外感应设置”入口。
  2. 弹框能正确显示最近打开、最近关闭时间,无记录时显示“暂无记录”。
  3. 打开操作发送 3E5343414E30363031303035813C
  4. 关闭操作发送 3E5343414E30363030303035803C
  5. 只有串口发送成功才更新对应时间;发送失败不更新时间。
  6. 打开、关闭操作都写入本地日志,失败日志包含失败原因。
  7. 连续点击和交叉点击不会重复发送配置命令。
  8. 使用项目要求的 JDK 8 完成 Debug 构建。
  9. 在目标设备验证关闭后红外不再感应、打开后红外恢复感应。

结论

采用一个弹框集中提供打开、关闭操作,并分别保存最近一次成功发送打开和关闭命令的时间。界面不推断设备当前状态,以避免本地记录被误认为硬件真实状态。

实施状态

已于2026-07-31按本设计完成代码实现:

串口实际字节和红外模块生效情况仍需在目标设备完成实机验收。