一键寻卡并读卡功能设计
目标
在 OnecardDemo 现有手动连接流程中增加一个页面级组合操作:读卡器已连接后,用户点击一次按钮,应用依次执行寻卡和完整读卡,并在独立结果区展示两部分结果。
已确认行为
- 新按钮和新结果区都放在现有
text_result下方。 - 按钮文案为“一键寻卡并读卡”。
- 读卡器未连接或页面正在执行其他操作时,按钮不可点击。
- 不自动连接、不自动关闭,也不改变现有连接、寻卡、读卡、关闭按钮。
- 操作顺序固定为
findCard() → readCard(),复用当前单线程执行器,避免主线程 USB I/O。 - 成功时,新结果区显示显式寻卡得到的 UID 和完整读卡信息。
- 失败时,状态区和新结果区同时显示
ReaderError与错误信息。 - 点击操作时先把新结果区切换为“执行中”,避免旧结果被误认为本次结果。
- 用户点击“关闭读卡器”后,同时清空现有结果区和新结果区。
实现边界
采用页面层顺序组合,不修改 CardReader、NewcapecProtocol、HID 帧、APDU 或重试策略。页面继续通过现有 runOperation 串行执行,只增加可选的错误结果目标控件。
控件
| 类型 | ID | 用途 |
|---|---|---|
| Button | button_find_and_read |
触发寻卡和完整读卡 |
| TextView | text_find_and_read_result |
独立展示组合操作的运行、成功或错误结果 |
新结果区沿用 text_result 的全宽、浅色背景、内边距、可选择文本和最小高度样式。
验证
- 先添加 Android UI 仪器测试,要求两个控件存在、顺序位于
text_result之后、初始未连接时按钮禁用、结果区显示空状态;在实现前测试应编译失败。 - 实现布局和 Activity 后,目标 UI 测试通过。
- 运行现有单元测试、Debug 构建、AndroidTest 构建和 Lint。
- 安装到 F700-HW,连接读卡器后人工点击新按钮,验证成功数据或精确错误显示。