Skip to content

Releases: yehu-imei/linyu

淋浴 v3.1.0

Choose a tag to compare

@yehu-imei yehu-imei released this 30 Sep 13:13

本次最重要的变化:新增蓝牙水表支持。部分学校的表不联网,只能由手机通过蓝牙直连使用。

新增功能

蓝牙水表

  • 开阀 / 关阀 / 结算 完整实现:手机通过蓝牙直连设备,下发费率、采集消费数据、上传结算
  • 关阀即结清:停止用水后账单当场入账,不需要再连一次设备
  • 恢复用水:开着水时 App 被杀,重开能自动恢复出使用页,可以正常关阀
  • 遗留订单自动补结算:设备上若还留着未结算的记录,下次连接会自动结清,并提示重新开阀
  • 通知栏「结束使用」:蓝牙表改走蓝牙关阀
  • 桌面小组件控制:小组件上可直接开阀 / 关阀,App 被杀也能关

其他新功能

  • 消费趋势:账单页支持近 7 天 / 本月切换、柱形 / 折线切换、峰值标注,卡片可折叠;选择会被记住
  • 我的页改版:收敛为个人信息 / 使用码 / 绑定寝室;通知、应用信息、关于项目等卡片移至右上角设置
  • 余额显示:一卡通拿不到时回落到趣智校园钱包;标题按来源显示「一卡通余额」/「趣智校园余额」
  • 账单加载体验:先显示本地历史快照,刷新成功后再替换;刷新失败不会覆盖旧数据
  • 上次消费刷新:结算完成后桌面小组件的「上次消费」立即更新

稳定性与兼容性

  • 账单日期解析改用线程安全的 java.time
  • 登录请求结束后立即清除密码与短信验证码
  • 相机声明为非必需硬件,避免无相机设备被应用商店过滤
  • 导航一致性:设置页隐藏底部导航栏;设置页、背景页、使用页的返回手势与返回按钮行为一致
  • 修复账单趋势首次绘制使用 -1 下标导致的闪退

工程质量

  • CI:push / PR 自动跑编译、单元测试与 Lint
  • 设备信息缓存:/device/info/mac 加 60 秒缓存
  • 蓝牙操作互斥:App 与桌面小组件同时操作同一台设备时,不再互相抢连接
  • 订单读写原子化:消除并发导致的订单丢失
  • 设备归属按设备索引:快速切换设备时不再串台
  • 通知按钮不再关错设备:请求码改为按设备稳定分配

安装

  1. 下载 linyu-v3.1.0.apk
  2. 直接覆盖安装即可(签名一致,versionCode 14 → 16)
  3. 软件内使用检查更新进行最新版安装

源码主仓库在 GitHub:https://github.com/yehu-imei/linyu
国内镜像在 Gitee:https://gitee.com/yehu-imei/linyu
完整变更见 CHANGELOG

淋浴 v3.0.4

Choose a tag to compare

@yehu-imei yehu-imei released this 20 Sep 08:18

重要修复

关阀结果与本地状态

  • 关阀请求失败时如实提示,并恢复本地用水状态与计时基准,避免界面已停止而设备仍在运行
  • 修复 MQTT 回填订单号时写入设备序列号的问题

桌面小组件

  • 「占用中」状态此前只能由用户再次点击才清除,现由 App 在确认设备空闲后同步清除,并增加超时兜底
  • 断网时点击开启无任何反馈,现显示「网络异常」并发送横幅通知
  • 「选用」失败区分「网络异常」与「设备不存在」;同一占用周期内不再重复弹出横幅

安全

  • 应用内更新增加包名校验、签名证书比对与可选的 SHA-256 校验,校验不通过的安装包将被阻止安装
  • 加密存储初始化失败时的降级数据改用独立文件,并排除出云备份与设备迁移
  • 日志写入改为线程安全

其他

  • 更新包下载支持复用已有文件,并清理历史版本残留
  • 蓝牙扫描失败后不再重复触发完成回调
  • Release 构建在缺少签名配置时不再中断 Debug 与测试任务

安装

  1. 下载 linyu-v3.0.4.apk
  2. 直接覆盖安装即可(签名一致,versionCode 13 → 14)
  3. 软件内使用检查更新进行最新版安装

源码主仓库在 GitHub:https://github.com/yehu-imei/linyu
国内镜像在 Gitee:https://gitee.com/yehu-imei/linyu

完整变更见 CHANGELOG

淋浴 v3.0.3

Choose a tag to compare

@yehu-imei yehu-imei released this 18 Sep 12:38

重要修复

结束用水后拿不到消费金额

  • 以前结束通知几乎总是「无消费」,现在直接问服务端,不再翻整个账单列表手工对账
  • 那个接口返回的金额单位是厘,账单列表返回的才是元,以前没换算,导致通知的消费金额偏大
  • 通知现在先显示「用时 X · 结算中…」,拿到金额后原地更新成「用时 X · 消费 ¥0.xx」
  • 确实没花钱的单子(开完水马上停)1~2 秒就出结果,以前要多次轮询判断是否未消费

绑定寝室

修复了绑定寝室功能

  • 「选择附近」列出来的名字是拼出来的,拿去匹配真实设备名无法命中
  • 现在改成从设备名「掐头去尾」取寝室标识,不拼任何字,同一间寝室的两台设备收敛成同一条
  • 桌面小组件以前完全没读取绑定寝室:现在主屏、附近设备页、开阀动作三处都会按寝室筛
  • 「绑定寝室」后更新状态:目前绑定寝室会更新上次开过阀的设备,再次开阀动作会是否为看绑定寝室设备
  • 用水中的卡片不受筛选影响——那是唯一的停止入口,藏了就只能进 App 停
  • 「绑定寝室」里的手工输入框去掉了,只能从「选择附近」选,避免输入错误

界面

  • 设备详情卡片里沐浴/洗漱前面的图标换回 emoji
  • 花洒图标下面那条水流线加长,和上面那条等长,非常完美
  • 提示气泡改成单行,放不下时从头部省略,避免换行影响美观

安装

  1. 下载 linyu-v3.0.3.apk
  2. 直接覆盖安装即可(签名一致,versionCode 12 → 13)
  3. 软件内使用检查更新进行最新版安装

源码主仓库在 GitHub:https://github.com/yehu-imei/linyu
国内镜像在 Gitee:https://gitee.com/yehu-imei/linyu

完整变更见 CHANGELOG

淋浴 v3.0.2

Choose a tag to compare

@yehu-imei yehu-imei released this 18 Sep 02:42

新增功能

花洒、牙刷换成图标了

  • 主界面设备卡片、使用中设备卡片、上次使用卡片、使用页、设备详情的 emoji 换成了统一的单色图标
  • 不再是各厂商 ROM 各画一套的彩色 emoji,风格和 App 一致
  • 小组件的账单行和附近设备行仍然是 emoji

开阀失败现在说得清楚了

  • 以前开阀失败,就只是「正在开启热水器…」那个转圈消失,没有失败原因
  • 现在:弹出说明 + 显示服务端给的原因
  • 如果手上有没扣成功的账单,弹窗会列出来并给一个「立即补扣」按钮
  • 桌面小组件上点开阀失败时,卡片会闪一下「开阀失败」,完整原因由横幅通知带出来

横幅提醒

  • 开阀失败、设备被占用、超时自动关停会从屏幕顶部弹出来
  • 「我的 → 通知」里新增「横幅提醒」开关,不想要横幅可以关掉

问题修复

  • 残留账单代扣的一批隐患:
    • 请求超时或被中断时会被当成「失败」,按钮恢复可点,可能导致重复扣费
    • 未支付列表的刷新没有防乱序,旧响应回来后会把刚扣掉的账单「复活」,同样会诱导重复点击
    • 一次性补扣多笔时没有去重
  • 首页开阀失败时看不到欠费提示:未支付列表只在钱包页加载,冷启动直接开阀失败的话,补扣入口根本不出现
  • 网络异常时会被引导去补扣:弹窗以前不管什么失败都断言「有欠费」,现在只有服务端明确拒绝时才提示
  • 补扣弹窗的笔数和金额与实际不符,极端情况下会出现「一分钱没扣却报成功」
  • 金额识别不了时按 0 显示:会让人对着一个假数字点确认,现在这种情况直接禁用确认按钮
  • 点「确认扣款」后什么都没发生:已有另一笔代扣在进行时会被静默拦住,现在会给提示
  • 退出登录不清未扣账单:换账号后弹窗会列出上一任的账单和金额
  • 重新领取使用码:打开弹窗后待领码显示成八个短横线、点不了确定,现在打开就会先换一个出来
  • 待领使用码整串都是蓝色:现在和卡片一致,只有后三位高亮
  • 桌面小组件点开阀失败后 3 秒内点不动:失败提示期间按钮会恢复可点,方便立刻重试

安装

  1. 下载 linyu-v3.0.2.apk
  2. 直接覆盖安装即可(签名一致,versionCode 11 → 12)
  3. 软件内使用检查更新进行最新版安装

源码主仓库在 GitHub:https://github.com/yehu-imei/linyu
国内镜像在 Gitee:https://gitee.com/yehu-imei/linyu

完整变更见 CHANGELOG

淋浴 v3.0.1

Choose a tag to compare

@yehu-imei yehu-imei released this 17 Sep 14:32

新增功能

残留账单可以手动请求代扣了

  • 12 点后结束用水、或者一卡通余额不足时,服务端结算没扣成,账单会留在待扣状态
  • 现在这类账单在「钱包 → 账单」里会多出一颗橙色的**「请求代扣」**按钮,点它就能补扣
  • 哪些账单该出现按钮由服务端说了算(读未支付账单列表),不去猜账单里的字段
  • ⚠️ 这是从校园卡里真扣钱,所以点按钮会先弹确认框、显示金额和扣款时间
  • 扣款期间按钮置灰并显示「扣款中…」,防止连点重复扣款

1x1 小组件

  • 新增第三种尺寸:一格大小,点一下开关热水
  • 状态不用猜:顶部小字直接写「空闲 / 使用中 / 占用中」,配蓝 / 橙底色
  • 点下去有的等了:开阀、关阀期间转圈,不再点了没反应
  • 特意对齐了应用图标的视觉大小

姓名获取修好了

  • 之前只有 /account/info 一个来源,要学校同步学籍数据才有,没同步的账号返回 null
  • 现在三个来源汇总,谁有值用谁的:新增 /account/card/getBindCardInfo,并补上了从一卡通接口取 studentName

问题修复

  • 首页「使用中的设备」名字长了会换行,把卡片撑变形,改用保留结尾、省略开头的写法
  • 点「正在使用」通知回到的是首页,现在直接落到使用页

其他改进

  • 通知权限提示的黄色块没有占满一行,右边空一截
  • 通知权限提示文案改成「请打开通知权限」,关闭通知后不会显示权限提醒
  • 「设备被他人占用」的通知标题改成「设备占用中」,设备名挪到正文

安装

  1. 下载 linyu-v3.0.1.apk
  2. 直接覆盖安装即可(签名一致,versionCode 10 → 11)
  3. 软件内使用检查更新进行最新版安装

源码主仓库在 GitHub:https://github.com/yehu-imei/linyu
国内镜像在 Gitee:https://gitee.com/yehu-imei/linyu

完整变更见 CHANGELOG

淋浴 v3.0.0

Choose a tag to compare

@yehu-imei yehu-imei released this 17 Sep 12:53

新增功能

一卡通真实余额

  • 「钱包」页现在显示校园卡的真实余额,不再是估算值
  • 拿不到(没签约免密支付)时自动回退到「初始余额 − 账单消费」的本地估算
  • 桌面小组件账单页的余额同步为真实值,标签也会跟着从「一卡通余额(估算)」变成「一卡通余额」

后台用水监控(前台服务)

  • 订单轮询和超时自动关停搬到了后台服务,退出 App、划掉最近任务都不影响
  • 以前退出使用页倒计时就停了,超时没人管,热水器会一直开着

系统通知

  • 用水期间在通知栏常驻一条状态条(显示已用时间),带「结束用水」按钮
  • 用水结束、超时自动关停都会发通知
  • 「我的」页新增通知设置卡片:一个总开关 + 三个细分开关

个人信息卡片

  • 姓名、学号、学校自动获取,不用再手填
  • 新增「账号管理」折叠区:更换手机号、修改密码

修改密码支持短信验证

  • 没设过密码、或者忘了密码,可以用手机验证码直接改,不需要知道旧密码

使用码改版

  • 「领取使用码」/「重新领取」按钮,点开先预览再决定
  • 「换一个」可以反复换(每天 20 次),换出来的码有 3 分钟领取时限
  • 取消是零成本的——没点「确定领取」之前,正在用的码完全不受影响

扫码界面重写

  • 新增从相册选图识别(不需要存储权限)
  • 加了取景框和扫描提示,识别成功会有震动反馈
  • 手电筒按钮重做:开启后变暖黄、图标点亮、带光晕
  • 修掉了部分机型上顶部按钮贴着状态栏的问题

问题修复

  • 通知栏点「结束用水」后使用页不退出,点按钮还会一直转圈
  • 消费金额显示成上一次账单的金额
  • 小组件开阀后没有「使用中」通知(前台服务启动失败被静默吞掉)
  • 余额的「手动填写」按钮会占位撑高卡片,现在改成不占空间的文字按钮,而且拿到真实余额后会隐藏
  • 「选择附近」的设备列表会把同一间房的热水器和洗手台显示成两条,现在合并成一条
  • 从桌面小组件点进账单页会短暂闪一下估算余额和「手动填写」按钮
  • 更换手机号时的验证码发到了旧号码上,用户永远收不到
  • 部分机型上登录页输入框里输入的内容发灰看不清

其他改进

  • 登录页默认使用手机号验证码登录(没注册过会自动创建账号),并加了一句说明
  • 「我的」页面卡片默认顺序调整为:账号信息 → 使用码 → 通知 → 背景装扮 → 绑定寝室 → 软件更新 → 关于项目 → 运行日志
  • 「账号管理」和「领取使用码」默认折叠,卡片不再那么长

安装

  1. 下载 linyu-v3.0.0.apk
  2. 直接覆盖安装即可(签名一致,versionCode 9 → 10)
  3. 软件内使用检查更新进行最新版安装

源码主仓库在 GitHub:https://github.com/yehu-imei/linyu
国内镜像在 Gitee:https://gitee.com/yehu-imei/linyu

完整变更见 CHANGELOG

淋浴 v2.2.3

Choose a tag to compare

@yehu-imei yehu-imei released this 16 Sep 09:08

新增功能

  • 更新包支持国内镜像下载:默认走 Gitee 镜像
  • 检查更新仍然走 GitHub API,只有下载这一步换了源
  • 更新卡片里有开关,镜像下不动时可以切回 GitHub
  • 更新日志默认只列最近 3 个版本,新增「展开全部」按钮

问题修复

  • 小组件账单页的余额偏高:算余额时只减去了最近 2 笔账单,而 App 里用的是 20 笔,两边对不上
  • 蓝牙扫描失败会把小组件的「附近设备」快照清空,看起来像附近没设备了。现在只有正常扫完才更新快照,扫描失败保留上次的好数据
  • 标记为「预发布」的版本会被当成正式版,提示所有人更新
  • 小组件的「上次消费」不跟设备走:用「选用」换到另一台后,卡片会顶着新设备的名字显示上一台的金额

其他改进

  • 仓库增加 Gitee 镜像,两个仓库互相加了链接

安装

  1. 下载 linyu-v2.2.3.apk
  2. 直接覆盖安装即可(签名一致,versionCode 7 → 8)
  3. 软件内使用检查更新进行最新版安装

源码主仓库在 GitHub:https://github.com/yehu-imei/linyu
国内镜像在 Gitee:https://gitee.com/yehu-imei/linyu

完整变更见 CHANGELOG

淋浴 v2.2.2

Choose a tag to compare

@yehu-imei yehu-imei released this 16 Sep 03:22

包体积:42.6 MB → 12.5 MB

这次最大的改动是把安装包压掉了七成多,没有牺牲任何功能

  • 图标:同一个PNG被重复复制15 份,占掉 11.6 MB,mdpi 那份本该是 48×48。现已按各密度重建,并改用 256 色调色板
  • 只打包 arm64-v8a:ML Kit 扫码引擎的 so 每个架构各存一份、且在 APK 里不压缩存储,x86 / x86_64 两份合计 11.5 MB
  • 移除 material-icons-extended:全项目只用到它里面 2 个图标,但 R8 并没能把它裁掉,发布包里实测残留 10660 个图标类
  • 资源语言限定为中文 / 英文

新增功能

  • 桌面小组件「选用」改为在桌面直接切换设备:点击后切回设备控制页,不用跳转App

问题修复

  • 小组件账单页的一卡通余额不跟着消费变化
  • 小组件附近设备「选用」点击设备和实际设备不同
  • 重新登录、或从小组件返回 App 时,余额会先显示初始值再跳到真实值
  • 短信验证码按钮点击后过一会才出现重新发送倒计时

其他改进

  • 蓝牙扫描时长 10 秒 → 5 秒,刷新重新扫描同样是 5 秒
  • 2x2 小组件取消横向圆球布局:现在任何尺寸都用同一套卡片布局,内容自适应
  • 小组件附近设备页区分「扫过但附近没有」,刷新后不保留快照
  • 登录页密码框右侧加一键清空按钮

安装

  1. 下载 linyu-v2.2.2.apk
  2. 直接覆盖安装即可(签名一致,versionCode 6 → 7)
  3. 软件内使用检查更新进行最新版安装

完整变更见 CHANGELOG

淋浴 v2.2.1

Choose a tag to compare

@yehu-imei yehu-imei released this 15 Sep 09:41

新增功能

桌面小组件重做:

  • 配色改为「深色中性玻璃 + 白色文字 + 白色高光 + 绿色状态色」的固定方案,桌面上更通透也更好读
  • 布局精简为 3 套:2x2 竖向 / 2x2 横向(拉宽自动切换)/ 2x4
  • 开关按钮只留图标;2x4 头部整行铺满,状态徽章贴最右
  • 2x4 带侧边导航,可切换「设备控制 / 附近设备 / 账单」三页
  • 附近设备页显示信号 dB 数值与「(x 分钟前)」扫描时间
  • 操作状态桌面全局同步:点任一个组件,所有淋浴组件同时显示「正在开启…」并转圈
  • 点「上次消费」卡片进 App 账单页;使用中点计时卡片直接关阀
  • 附近设备「选用」→ 打开 App 并直接弹出该设备

问题修复

  • 小组件按钮点了没反应
  • 2x2 拉宽后显示「载入窗口小部件时出现问题」
  • 切到附近设备页必崩
  • 小组件预扣一直显示 ¥0.00
  • 两个小组件的计时每秒错开一小段
  • 「使用中」徽章在不同尺寸上颜色不一致
  • 字体过大导致首页设备名过长覆盖使用按钮

其他改进

  • 使用页套用自定义背景后不再显示设备 emoji,背景图本身就是画面主体

安装

  1. 下载 linyu-v2.2.1.apk
  2. 直接覆盖安装即可(签名一致,versionCode 5 → 6)
  3. 软件内使用检查更新进行最新版安装

小组件这版改动很大,建议先用一个 2x2 和一个 2x4 同时摆在桌面上,
试一下开关同步、计时是否一致、侧边栏切换是否正常。

完整变更见 CHANGELOG

淋浴 v2.2.0

Choose a tag to compare

@yehu-imei yehu-imei released this 14 Sep 13:09

新增功能

  • 桌面小组件:2x2 与 2x4 两种尺寸,在桌面直接启停热水
  • 小组件计时用系统 Chronometer 驱动,App 没打开、进程被杀也能实时走秒
  • 小组件显示「上次消费」金额:结算成功或拉到账单时写入本地,小组件只读,不额外发请求
  • 应用内下载更新:检测到新版本后可直接在应用内下载并调起安装器,带进度显示
  • 扫描权限改为按需申请:不再登录后立刻弹窗;Android 12 及以上只申请「附近的设备」,不再出现定位权限
  • 登录页接入系统自动填充:手机的密码管理器可以保存和回填账号密码
  • 挤号检测改为主动:25 秒心跳轮询,被挤下线最多 25 秒内弹提示
  • 关于项目卡片改版:显示项目名与 Star 数、制作者、联系方式

问题修复

  • 小组件按钮点了没反应:PendingIntent 指向了未在 Manifest 注册的基类,广播被系统静默丢弃。
  • 下载完成后凭空跳出「下载失败 / 网络异常」:取消异常被当成网络失败上报
  • 重试下载时新旧任务状态互相覆盖,界面乱跳
  • 点「立即安装」没反应、也跳不到授权页
  • 下载被截断也当成功,给出一个装不上的包
  • 更新卡片检测到新版本却没有下载入口
  • 被挤下线后重新登录,刚进去又被弹出来、需要登两次
  • 退出登录后上一任账号的计时器残留
  • 登录页点「发送验证码」后输入框宽度会跳一下
  • 更新日志里显示 Markdown 星号
  • 换背景图后画面莫名变暗变糊

体验优化

  • 背景装扮默认参数改为:透明度 100% / 模糊 0 / 亮度 100%
  • 抽出 ShowerController 共享网络层,App 与小组件走同一份开阀关阀逻辑
  • 更新包的下载区收在更新卡片内、「检查更新」按钮下方
  • 更新日志卡片的版本号行去掉点击水波纹
  • 软件更新可以直接在软件内下载安装

权限变更

  • 新增 REQUEST_INSTALL_PACKAGES,首次使用时会要求允许「安装未知应用」,需在系统设置里手动开启一次

安装

  1. 下载 linyu-v2.2.0.apk
  2. 直接覆盖安装即可(签名一致,versionCode 4 → 5)
  3. 软件内使用检查更新进行最新版安装
  4. 小组件需要手动添加:桌面长按 → 小组件 → 找到「淋浴」,不同机型的添加方式不同

本版本重构了洗澡核心流程(抽出 ShowerController),并引入了第一个后台组件(小组件)。
请重点验证开始 / 停止 / 自动关停 / 消费金额这几条主流程。

完整变更见 CHANGELOG