dongliang
1214ca92a4
fix: 解绑处理移到MainActivity,用全局action从任何页面跳转
...
HomeFragment在子页面时viewLifecycleOwner被销毁,collect停止,
收不到解绑消息。改为Activity级别处理+全局导航action,彻底解决。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-11 10:26:29 +09:30
dongliang
966c9f9c0d
style: TTS按钮放大到64dp,图标更醒目
...
56dp → 64dp,padding 不变,图标从 36dp 增大到 44dp。
安装后请重启手表。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-08 17:09:05 +09:30
dongliang
25ba315e63
fix: 一次性优化(时钟去秒+备注修复+按钮放大+切换取消)
...
1. 首页时钟 HH:mm:ss → HH:mm
2. TTS 备注优先读 taskRequire(和页面显示一致)
3. TTS 按钮 48dp → 56dp,背景透明度 50% → 30%
4. 切换任务时取消进行中的 TTS 合成请求
安装后请重启手表。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-08 16:49:29 +09:30
dongliang
c42d50f2d6
fix: TTS按钮放大到48dp + 首页时钟显示秒
...
1. TTS悬浮按钮从36dp放大到48dp,老年人更容易点击
2. 首页时钟从 HH:mm 改为 HH:mm:ss,显示秒
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-08 13:41:21 +09:30
dongliang
bd6aa270c5
fix: TTS播放按钮加到正确的页面(TaskListFragment)
...
TaskDetailFragment 未被使用,实际任务页面是 TaskListFragment。
- 在 TaskListFragment 布局加悬浮播放按钮
- 在 TaskListFragment 加 TTS 播放/停止逻辑
- 切换任务(左右滑动)时自动停止播报
- 离开页面自动停止播报
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-08 13:12:17 +09:30
dongliang
aafae56826
fix: TTS悬浮按钮不可见,提高对比度
...
背景从30%白透明改为50%,图标从白色改为黑色,黑底上更清晰。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-08 13:03:56 +09:30
dongliang
cf4458526b
feat: 任务详情页语音播报功能 (REQ-20260508-0006)
...
- 详情页右侧悬浮播放按钮(36dp半透明圆形)
- 播报内容:任务名+地点+时间+积分(>0)+备注,空字段跳过
- 播放中按钮高亮+图标切换,再点停止
- 离开页面自动停止播放
- TTS播放期间抑制提示音,避免叠加
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-08 12:57:51 +09:30
dongliang
fec1e80cf1
chore: 应用名称改为小趣智清洁,APK文件名包含版本号
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-08 11:33:56 +09:30
dongliang
ea72c2aab0
fix: 返回按钮恢复64dp宽居中,高度48dp增加上下点击区
...
宽度回到64dp不影响标题居中,高度48dp比文字高增加纵向点击面积
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 17:03:20 +09:30
dongliang
1cafb74f04
fix: 标题栏恢复 LinearLayout,返回按钮100dp宽+左padding
...
FrameLayout 覆盖层方案导致页面内容消失
改回 LinearLayout,按钮宽度 100dp 图标靠左(paddingStart=21dp)
右侧空白区域都是可点击范围
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:58:28 +09:30
dongliang
1dc34de35a
fix: 返回按钮改用透明覆盖层方案
...
标题栏改为 FrameLayout,图标保持原样
上层叠一个 120dp 宽的透明 View 覆盖左半边
点击左半边任意位置都触发返回,不影响视觉
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:52:34 +09:30
dongliang
0c5d9076a8
fix: 返回按钮改为整个标题栏左半边可点击
...
去掉 TouchDelegate,改用 FrameLayout 占标题栏左半边(weight=1)
图标靠左显示,但整个左半边 48dp 高的区域都能触发返回
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:45:17 +09:30
dongliang
2a06cf684c
fix: 返回按钮高度改回 match_parent,不再撑高标题栏
...
点击区域已由 TouchDelegate 扩展,不需要按钮本身 56dp 高
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:34:56 +09:30
dongliang
a41c8879e6
fix: 备注标签和内容合为一个 TextView
...
"备注: xxx" 拼在一起,去掉多余的标签 TextView 和 LinearLayout 容器
样式不变(深灰背景、22sp、白色文字、13dp padding)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:25:18 +09:30
dongliang
8af7f43185
style: 备注恢复为同行标签版(深灰背景+备注:+白色内容)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:19:09 +09:30
dongliang
7894a7824e
style: 备注恢复绿色淡背景样式(24sp 灰色文字 + padding)
...
保留"备注:"前缀,样式还原为原始的 bg_note_green 风格
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:10:07 +09:30
dongliang
0def08dfca
fix: 备注改为纯文本,去掉卡片容器和内边距
...
"备注: 需要带清洁工具" 直接一行文字,不居中不占额外空间
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 16:04:07 +09:30
dongliang
154802f136
fix: 备注标签和内容改为同一行
...
"备注: 需要带清洁工具" 一行显示,不再换行浪费空间
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 15:36:40 +09:30
dongliang
432dfc8d3d
style: 备注样式优化
...
- 加"备注"标签(18sp 灰色),用户知道这块文字是什么
- 内容改白色文字(text_primary),对比度更高
- 背景从绿色改为深灰卡片色+细边框,和指引块(橙/绿)区分
- 新建 bg_note.xml 替换 bg_note_green.xml
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 15:28:52 +09:30
dongliang
9b0d44d8da
fix: 待打卡地点块移到备注/语音/图片上方
...
XML 中 blockGoWhere 和 blockNoScene 从底部移到 tvNote 前面
去掉已不用的 blockHowTo(蓝色指引块)
现在布局顺序:任务名→地点指引→备注→语音→图片
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 12:47:16 +09:30
dongliang
43e61ffb70
feat: 任务推送增加语音提示(newMessage.mp3)
...
planId=2 新消息方案加上 audioResId = R.raw.new_message
和旧版一致,推送新任务时震动+播放语音提示
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 12:33:05 +09:30
dongliang
77619a5300
feat: 图片支持横向滚动显示所有+点击放大全屏
...
- 去掉3张限制,HorizontalScrollView 横向滚动展示所有图片
- 缩略图 80dp 正方形,超出可滑动查看
- 点击缩略图全屏放大查看(FIT_CENTER),点击关闭
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 12:14:01 +09:30
dongliang
49732ac79a
feat: 用户上报任务显示图片附件
...
- 新建 PicItem 数据类,uploadPic 改为强类型
- 布局加 picContainer 横排展示区
- showPictures 方法:最多3张缩略图横排,HTTP 加载
- 三个状态页面都显示图片(和语音同级)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 12:04:26 +09:30
dongliang
b9d50e3c31
fix: 语音播放修复(AudioAttributes + clickable + 日志)
...
- 设置 AudioAttributes(CONTENT_TYPE_SPEECH)确保音频输出正确
- 按钮加 clickable/focusable 防止被 ScrollView 手势拦截
- 添加播放日志便于排查
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 11:03:30 +09:30
dongliang
9b39daf4ad
style: 返回按钮改用 iconfont 图标,和 NavBar 风格统一
...
用 \ue6bd 返回图标替代文字符号,白色 28sp,64×56dp 触摸区
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-07 10:26:13 +09:30
dongliang
841bf87dc5
fix: 返回按钮加大触摸区域和视觉醒目度
...
- 高度从 match_parent 改为固定 56dp
- 字号 27sp→32sp 加粗,符号 ‹→< 更醒目
- 标题栏上内边距 16→8dp 节省空间
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 21:30:08 +09:30
dongliang
d5cdcc8186
style: 语音按钮视觉优化
...
- 背景改为橙色半透明+边框,和指引块风格统一
- 宽度 match_parent,内含声波图标+语音描述+时长
- 播放中切换背景高亮+停止图标,停止后恢复
- 新增 bg_btn_voice_playing.xml 播放状态背景
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 20:52:09 +09:30
dongliang
2e7edc7e09
fix: 语音按钮圆角改用 radius 兼容 API 27+
...
topStartRadius 等属性需要 API 31,改为统一 radius=24dp
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 20:47:52 +09:30
dongliang
75cbb831c5
feat: 任务页面布局优化(接单池防挑选+截止时间+巡检引导+语音播放)
...
1. 接单池改名"新任务"、隐藏积分和页码(防止用户挑肥拣瘦)
2. 待打卡/待完成页面增加截止时间显示
3. 巡检场景三层视觉:已打卡绿色+时间、下一个橙色高亮、后续灰色弱化
4. 巡检场景超屏自动滚动到当前进度
5. 用户上报任务支持语音播放(橙色药丸按钮)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 20:46:16 +09:30
dongliang
777c867711
fix: 返回键区域最大化(左padding去掉+宽度48→64dp)
...
导航栏左侧 paddingStart 21→0dp,返回键宽度 48→64dp。
点击区域从屏幕最左边开始,高度撑满导航栏。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 17:56:55 +09:30
dongliang
48b88eaa4b
fix: 导航栏和底部按钮缩减高度
...
导航栏:paddingTop 27→16dp,paddingBottom 8→4dp
底部按钮:padding 15→10dp,字号 34→28sp
两个页面统一,为内容区腾出更多空间
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 17:28:15 +09:30
dongliang
d8f699a51f
fix: 导航栏恢复原始字号,返回键宽48dp高match_parent
...
导航栏标题/页码恢复 20sp(之前被批量放大到 24sp)。
返回键宽度 56→48dp,高度 match_parent 撑满导航栏,
点击区域最大化但不增加导航栏总高度。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 17:23:21 +09:30
dongliang
746ca346ec
fix: 返回按钮点击区域放大 32→56dp,字号 27→36sp
...
老年用户手指粗,32dp 触摸区太小容易点不到。
TaskListFragment + TaskDetailFragment 统一放大。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 17:15:19 +09:30
dongliang
05f5d5e098
fix: 灰色文字提亮 + 备注加图标
...
1. text_secondary 颜色 #999999 → #CCCCCC(深色背景上更清晰)
2. 备注文字前加 ⚠ 图标,提醒用户注意
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 16:26:33 +09:30
dongliang
1657ecd917
fix: 任务页面底部按钮字体放大 28/21→34sp
...
TaskListFragment 按钮 28→34sp,TaskDetailFragment 按钮 21→34sp。
统一加大加粗,老年用户更易识别。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 16:20:56 +09:30
dongliang
f1fe041486
fix: 任务卡片文字全面放大(+4sp)
...
地点 24→28sp,时间 22→26→30sp,积分 26→30sp,
备注/指引描述 20→24sp,指引标题 24→28sp。
标题 34sp 不变。老年用户适配。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 16:17:50 +09:30
dongliang
eb5fdd2d5f
fix: QuTipDialog 图标和字体继续放大
...
图标区域 110→140dp,图标字号 50→65sp,标题 28→36sp,描述 20→24sp。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 15:55:40 +09:30
dongliang
3ab6a94676
refactor: 优化 QuTipDialog + 删除 ResultFlashView
...
QuTipDialog 优化:
- 图标区域放大 85→110dp,图标字号 38→50sp
- 加入淡入+缩放动画(OvershootInterpolator 回弹效果)
- 默认倒计时 3→2 秒
- 倒计时文字默认隐藏(showCountdown 参数控制)
- 简化调用:show(status, title) 即可,2秒后自动消失
NFC 打卡加回 QuTipDialog:
- 成功:绿色图标 + "打卡成功" + 2秒消失
- 失败:红色图标 + "打卡失败" + 错误信息
删除 ResultFlashView(方案不合适,统一用优化后的 QuTipDialog)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 15:40:07 +09:30
dongliang
1ef6824c5e
fix: ResultFlashView 去掉内层 visibility=gone(双重隐藏导致不显示)
...
activity_main.xml 的 ResultFlashView 已设 gone,内层布局不需要再设。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 15:12:07 +09:30
dongliang
7f6e9cf039
feat: ResultFlashView 操作结果指示器(Apple Watch 风格)
...
全屏深色遮罩 + 大圆圈图标,属性动画弹出+淡出,1.5秒自动消失。
- 成功:绿色圆圈 + ✓,OvershootInterpolator 回弹效果
- 失败:红色圆圈 + ✗
- 替代 QuTipDialog 用于 NFC 打卡和按钮操作的结果反馈
- 所有操作统一视觉风格
应用到:
- TaskDetailFragment NFC 打卡
- TaskListFragment NFC 打卡
- MainActivity 返回键主动打卡
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 14:25:57 +09:30
dongliang
1b24e2d044
feat(nfc-task): NFC 任务打卡模块(单个+批量+硬件开锁)
...
REQ-20260506-0024
新增 NfcTaskManager:
- startTaskPunch(taskId):任务详情页单个 NFC 打卡
- startActivePunch():返回键触发主动打卡
→ checkNfcType 判断:hardwareNfcFlag=true 硬件开锁 / false 批量打卡
- NFC 超时自动关闭 + 震动/音效反馈
- isScanning 标记防重复触发
TaskApi 增加 3 个接口:
- POST watchTask/nfcToBeginTask(单个打卡)
- POST watchTask/nfcBatchBeginTask(批量打卡)
- GET nfcInfo/nfcOpenLock(类型判断)
返回键逻辑修正:
- 原:返回键→考勤打卡
- 现:返回键→主动打卡(批量任务 or 硬件开锁)
- 考勤打卡只从下拉面板触发
- onBackKeyPressed 改为返回 Boolean(true=已处理)
TaskDetailFragment:
- "开启打卡"按钮填充 NFC 打卡逻辑(替换 TODO)
- 扫描中按钮变灰禁用,成功/失败用 QuTipDialog
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-06 12:05:40 +09:30
dongliang
71eebe7b0c
feat(config): 设置页补全设备信息字段
...
对照旧版 hardInfo.vue 补全缺失的 4 个字段:
- 设备名称(bluetoothName,来自 DevicePrefs)
- 蓝牙MAC(bluetoothMac,来自 DevicePrefs)
- 蓝牙连接状态(动态,通过 EventBus BluetoothDevice 事件更新)
- 电池(动态,通过 EventBus BatteryChanged 事件 + 初始化获取)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-30 22:06:53 +09:30
dongliang
acd262a3a6
fix: OTA 弹窗继续放大(图标80sp 标题32sp 按钮24sp)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-30 21:34:04 +09:30
dongliang
0d94198743
fix: OTA 弹窗 UI 放大(适配手表小屏+老年用户)
...
图标 40→60sp,标题 18→24sp,描述 12→16sp,
按钮 14→18sp+加大内边距,进度条 8→12dp。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-30 21:32:19 +09:30
dongliang
6e8b210f8e
feat(ota): OTA APK 下载更新模块
...
REQ-20260430-0041
新增 UpdateManager:
- POST newAppVersion/queryWatch 检查版本(5分钟最小间隔)
- OkHttp 下载 APK(进度回调,独立超时配置)
- FileProvider + Intent ACTION_VIEW 触发系统安装
- 非 .apk 链接自动跳过
新增 UpdateDialogView:
- 全屏覆盖弹窗,三种状态(发现新版本/下载中/下载失败)
- 进度条支持百分比和未知大小两种模式
配置变更:
- AndroidManifest: REQUEST_INSTALL_PACKAGES + FileProvider
- CommonApi.checkVersion: GET→POST,传 version 参数
集成点:
- HomeFragment.onResume → MainActivity.checkForUpdate()
- MainActivity 管理弹窗交互和下载流程
- 更新时停止蓝牙扫描 + 保持屏幕常亮
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-30 21:20:06 +09:30
dongliang
d6a8f4acf9
chore: 关闭加速度计抬手亮屏(硬件无陀螺仪,不可靠)
...
设备仅有基础加速度计(MTK),无陀螺仪/重力传感器/旋转向量。
经 v1~v5 五轮实测验证,"看表"与"不看表"的角度差仅~7°,
无法可靠区分抬手和小幅摆动。旧版uni-app也放弃了此功能。
代码保留但默认不启用(start/stop/pause/resume 全部注释),
待更换有陀螺仪的硬件后取消注释即可启用。
保留的文件:
- AccelerometerWakeController.kt(接口)
- FiseAccelerometerWake.kt(实现,含倾斜角度+低通滤波方案)
- DeviceModule.kt(DI绑定)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-30 19:01:17 +09:30
dongliang
08aae2065e
chore: 代码清理(debug日志+孤立文件+未用字段+测试修复)
...
1. 去掉 fetchStatistics/renderDots 中的 debug Timber.d
2. 删除孤立文件: bg_new_task_hint.xml, bg_btn_primary.xml, bg_btn_secondary.xml
3. 删除未用字段: onPendingCountChanged
4. 单元测试修复:
- 添加 Dispatchers.setMain/resetMain (JVM无Main线程)
- 新增: 数字id解析、acknowledgeCard减pendingCount、ack清除、preNotificationStats
- 总计 22 条测试
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-29 21:03:12 +09:30
dongliang
e6c218d830
refactor: 红点统一管理(activeDotCards+renderDots)+ 去掉提示条
...
按矩阵验证的19个场景统一重写通知逻辑:
核心改动:
- activeDotCards 集合累积管理红点,只增不减(除显式操作)
- renderDots() 统一渲染,不在各处单独设 visibility
- 去掉提示条(用户反馈不好看)
场景覆盖:
- 场景1-2: 首页连续收到不同分类通知 → activeDotCards累积 ✅
- 场景3: 点横幅 → consumeAll+activeDotCards清空 ✅
- 场景4-5: 点红点 → activeDotCards移除对应+renderDots ✅
- 场景7: 所有红点点完 → 自动consumeAll清理 ✅
- 场景11-16: 非首页 → preNotificationStats精确diffStats→补充activeDotCards ✅
- 场景18: 全部查看后新通知 → consumeAll已重置,新通知正常累积 ✅
- 场景19: 列表中又来通知 → 返回后onResume补充新红点,不覆盖已ack的 ✅
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-29 17:47:52 +09:30
dongliang
6418c2f36f
feat: 新任务提示条 + 按taskIds直接加载
...
1. 首页新增"有N条新任务 点击查看"提示条
- pendingCount>0 时显示,点击/查看后消失
- 和红点共存:提示条=统一入口,红点=分类提示
2. TaskListFragment 通知模式
- 有 filterTaskIds 时跳过 queryTaskIds
- 直接按 taskId 构建列表,调 lookTaskDetail 加载详情
- 不受 status 筛选限制,跨状态任务都能显示
3. 横幅/提示条共用 navigateToNewTasks()
- 1个任务→跳详情,多个→跳列表
- 跳转后清除红点+提示条+pendingTaskIds
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-29 16:42:09 +09:30
dongliang
1ffdefc887
fix: 通知累积+点击跳转修复
...
Bug 1: setupBannerClick每次事件覆盖onClick,丢失之前累积的taskIds
修复: 点击时从notificationManager.pendingTaskIds取所有累积ID
Bug 2: 多任务点击跳到接单池全量列表,无法区分新旧
修复: TaskListFragment支持taskIds参数过滤,只显示通知中的任务
Bug 3: allIds.toLongArray()编译错误(List<String>无此方法)
修复: mapNotNull{toLongOrNull()}.toLongArray()
nav_main.xml: taskListFragment新增taskIds可选参数(long[]nullable)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-29 15:15:33 +09:30