Repository navigation
Releases: Shing299/kaoyan-widget
Releases · Shing299/kaoyan-widget
Release list
v1.3.2-repair:修复多音标词的中英文划分
修复多音标词的中英文划分(issue #1)
pretend[priˈtend, priː-] 这类给两个读音、音标里带空格的词,原来按第一个空白切单词,正好切在音标中间:
单词变成 pretend[priˈtend,、释义变成 priː-] v.假装…,加粗范围和「仅英文 / 仅中文」的显隐全跟着串位。
- 列表页改为先按
[定界、把音标整段吃到]再分释义,音标内部的空格原样保留(内置词库 553 条带空格音标); - 没有音标的词
fmt()补一个空格,修掉approximatea.近似的这种单词释义粘连; - 已经推出去的老粘连行(
history.jsonl)在渲染时按当前词库反查还原,不用等下次推送、不用清数据。
校验:词库 5398 行经 parseLine → fmt → splitWordLine 全量回放,0 处不一致;93 条无音标粘连行全部还原。
版本:versionName 1.3.2-repair / versionCode 10(可覆盖安装 1.3.2)
pm install -r -d kaoyan-widget-v1.3.2-repair.apkv1.3.2 · 单词显示模式切换
v1.3.2 · 单词显示模式切换
✨ 新功能
- 「今日单词」页「回到顶部」圆钮的正上方多了一个只写一个字的小圆钮,
尺寸与「回到顶部」按钮完全一致(44×44),点一下切一档:
双语 → 仅英文 → 仅中文 → 双语,圆钮上的字同步变「双」/「英」/「中」。 - 仅英文:只留「单词[音标]」,藏掉中文释义 —— 看词回想意思。
- 仅中文:只留释义,藏掉单词和音标 —— 反过来「看中文想单词」,合上中文就能自测默写。
- 选择写进
state.json的view_mode,切设置页再回来、杀掉重开 App 都还是上次那档。 - 只影响「今日单词」页面:通知推送、学习弹幕、桌面小组件照旧显示中英双语。
🛠 实现与构建
HtmlView.java:新增viewMode()/viewModeLabel()/viewModeName()/viewModeButton()/appendViewModeJs();
build()在<html>上挂vm-en/vm-cn类,靠两行 CSS 显隐:
html.vm-en .cn{display:none}、html.vm-cn .en,html.vm-cn .ph{display:none}。
主页在dockBar()之后插入#vmBtn,设置页不插。Bridge.java:@JavascriptInterface setViewMode(String)→ 命名静态内部类ViewModeTask,
由doSetViewMode()落盘(d8 对匿名内部类会 NPE,这是本项目的老坑)。Engine.java:ensureState()补默认字段view_mode = "both",老数据升级后自动是双语。- 影响范围刻意收窄到「今日单词」的渲染层:通知推送、学习弹幕、桌面小组件都不读
view_mode。 - 圆钮第一版做成 40×40,按用户要求(「其大小和回到顶部按钮一致」)改成 44×44 后重新打包、重新截图。
🧩 其他
- 按钮从 40 改到 44 之后旧截图作废,双语主页图重新拍了一张。
- 仅中文那一档截图时刚好有学习弹幕飘过(弹幕是独立悬浮窗,属正常现象),所以没放进 README。
📦 安装
pm install -r -d kaoyan-widget-v1.3.2.apk🧪 实机走查(2026-10-26)
- 覆盖安装
kaoyan-widget-v1.3.2.apk(versionCode 9 / 1.3.2,308,200 字节)后三档循环正常,圆钮文字与列表同步; - 仅英文只剩「单词[音标]」,仅中文只剩释义(音标一起藏);本机 30 词 / 6 批渲染正常;
- 切换即时生效、不重载页面、滚动位置不跳;
state.json的view_mode实时变化,杀掉重开仍保持; - 圆钮外观 44×44,与「回到顶部」按钮一致;深色模式配色正常;
- 通知推送 / 弹幕 / 小组件仍是中英双语,未受影响。
⚠️ 本项目由 AI 生成,仅供学习交流。
v1.3.1 · 每日开屏提醒
v1.3.1 · 每日开屏提醒
✨ 新功能
- 每日首次打开的开屏动画:全屏紫渐变卡片,先弹出「距离初试」大数字(0 滚到真实天数),
下面跟一句按阶段变化的鼓励语(最后 7 天「沉住气」、30 天内「冲刺阶段」、60 天内「稳一点」、更早「先把今天过好」)。 - 随机展示当天两个单词:从「今日单词」计划里随机抽 2 个(单词 / 音标 / 释义),
每天打开都能顺便记两眼;当天计划还没生成时会先生成,清单为空时显示「休息一下吧」。 - 可手动关,也可自动淡出:点屏幕任意处、点右上角
×都能立即关闭;
不操作则 2 秒后自动淡出(0.45s 渐隐,底部有一条 2 秒进度条)。 - 一天只弹一次:弹过之后日期记进
state.json的splash_day,当天再打开不会重复打扰,第二天自动恢复。 - 深色模式适配(点击背景/深色渐变两套配色),加了
role="dialog"/aria-modal/aria-label,
读屏可识别为对话框、×可读为「关闭」。 - 首次启动、还没设初试日期时不会弹(不挡设置向导)。
- 今日单词列表卡片头去掉冗余的「考研单词」:每个批次卡片只显示
2026-10-25 11:53 | D25 120/170,历史批次(旧数据里带前缀)也同样处理。
🛠 实现与构建
- 新增
SplashView.java(纯 Java 拼 HTML,不依赖 Android API,方便离线预览),
MainActivity用splashPending决定本次load()是否插入开屏,
HtmlView.pickSplashWords()负责从当天计划随机选词。 build.sh兼容「只含 class、没有资源表」的android.jar:自动检测不到resources.arsc
时,aapt2 link改用系统/system/framework/framework-res.apk(AAPT_I可手动覆盖)。
这是新构建环境(非 Termux root 目录)下必须的一步,否则会报
Theme.Material.Light.NoActionBar not found。
🧩 其他
- 每次想更新日志怎么写总是头疼,于是看了看国民级的软件:修复了一些已知问题。
📦 安装
pm install -r -d kaoyan-widget-v1.3.1.apk🧪 实机走查(2026-10-25)
- 已在真机(OnePlus / ColorOS,1240×2772)覆盖安装并逐项验证:
开屏正常弹出(55 天 + 当天随机 2 个单词)、数字滚动、2 秒后自动淡出、
点任意处 / 右上角×手动关闭、当天第二次打开不再弹、改日期跨天后重新弹出、
深色模式配色正常,全程无崩溃。 - 已知小现象:开屏的 2 秒内,学习弹幕(独立悬浮窗)仍可能从开屏上方飘过;
想画面干净可以先关掉弹幕开关(后续版本可在开屏期间临时暂停弹幕)。
⚠️ 本项目由 AI 生成,仅供学习交流。
⚠️ 本项目由 AI 生成,仅供学习交流。
v1.3 · 底部 Dock + 首页精简
v1.3 · 底部 Dock + 首页精简
✨ 界面
- 侧边栏改为底部 Dock:原来左侧抽屉的 5 个菜单项拆成 Dock 的两项 ——
「今日单词」(回主页 / 回顶部)和「设置」。
原抽屉里的「立即推送一批」「刷新数据」移到设置页的「快捷操作」卡片。 - 「回到顶部」改为悬浮圆钮:位于 Dock 上方,只在页面不在顶部时出现且可点击,滚回顶部后自动隐藏。
- 设置页标题改为「设置」:去掉首次向导时期的「欢迎使用 · 考研单词」与那段引导语。
- 首页精简:去掉「推送时段 / 初试 / 每日词量」那一行,初试倒计时改为标题行最右侧的斜体小字。
- Dock 两项加了
role="button"/aria-current,读屏(TalkBack)可正确识别为按钮。
📖 文档
- 新增 docs/项目说明.md:功能、界面结构、学习计划算法、推送调度、
弹幕渲染(泳道 / 动画帧率 / 选词)、状态字段、构建、项目结构、版本历史、隐私与已知限制。
⚡ 性能(延续 v1.2.1)
- 弹幕动画为全局共享循环:帧率约 91→42fps,动画期间 CPU 约 30%→18% 单核。
- 弹幕关闭时定时器完全停下:实测 0 帧 / 0.00% CPU。
- 推送不再重排当天全部闹钟;当天计划推完后撤销剩余批次闹钟。
📦 安装
pm install -r -d kaoyan-widget-v1.3.apk
⚠️ 本项目由 AI 生成,仅供学习交流。
v1.2.1 · 弹幕频率滑条 + 性能优化
v1.2.1 · 弹幕频率滑条 + 性能优化
✨ 改进
- 弹幕弹出频率改成「分档滑条」:原来是数字输入框(手机上要弹键盘,还能填出
0.37这种无意义值),
现在是滑条 + 实时数值 + 刻度标签,固定 7 档:0(不弹)/ 0.05 / 0.1 / 0.2 / 0.5 / 1 / 2,亮屏 / 熄屏各一条。
⚡ 性能
- 弹幕动画改为全局共享的 ~60fps 循环。原来用
ViewPropertyAnimator,它跟 Choreographer 走,
在 120Hz 屏上跑到约 91fps,同屏 1 条弹幕就吃掉约 30% 单核。
改为所有在飞弹幕共用一个固定帧间隔的循环后:帧率 91→42fps,动画期间进程 CPU 30.6%→17.9%。 - 弹幕关闭时定时器完全停下:原来即使关掉弹幕也每 5 秒空转一次(读
state.json+ 查亮屏),
一天约 1.7 万次无谓唤醒。现在实测 0 帧 / 0.00% CPU。 - 调度去抖:推送一批不再重排当天全部闹钟(原来每次推送都会把 20+ 个精确闹钟 cancel + 重新 set 一遍);
当天计划推完后撤销剩余批次闹钟(保留每日 ROLL 闹钟),不再白唤醒设备。
📦 安装
pm install -r -d kaoyan-widget-v1.2.1.apk
⚠️ 本项目由 AI 生成,仅供学习交流;定时 / 通知 / 权限相关行为请自行评估后再安装。
v1.2 · 学习弹幕 + 推送整合
v1.2 · 学习弹幕 + 推送整合
🔗 整合
- 单服务、单通知:推送调度与学习弹幕合并进唯一的常驻前台服务
BotService,
通知栏由两条常驻通知(「推送运行中」+「学习弹幕已开启」)并为一条,
一行里同时交代推送时段与弹幕开关。少一个常驻服务,也少一份内存与唤醒开销。 - 一次推送、两种呈现:闹钟到点推送一批单词时,同一批词既进通知、也按同样顺序以弹幕划过
(批次优先,节奏上限 2.5 秒一个);其余时间按你设定的频率随机弹。
菜单里的「立即推送一批」行为一致。
✨ 新增
- 学习弹幕(悬浮窗):使用手机时从屏幕右侧向左划过「单词 + 释义」,全天生效,不受推送时段限制。
- 频率按 个/秒 自定义,亮屏 / 熄屏独立(熄屏默认
0= 不弹); - 样式可调:字体(默认 / 衬线 / 等宽)、字号、颜色、加粗,用描边阴影保证任意背景可读;
- 多条弹幕同时存在(最多 12 条),每条独占一条纵向「泳道」,互不压住、各自飞完才消失。
- 选词与你当天的学习对齐:随机弹幕从「今天计划内的词」里抽,
并补上「已到期、但被 reviewCap 挤出今天计划」的复习词;复习词权重 3×、新词 1×。
只有当天计划尚未生成时才退回全词库兜底。
- 频率按 个/秒 自定义,亮屏 / 熄屏独立(熄屏默认
- 深色模式:全部界面(含设置页与对话框)自动跟随系统深浅色。
🐛 修复
- 高频「单词频闪」:泳道 8→12 且绝不复用已占泳道,没有空泳道时宁可不弹;
同时去掉「新弹幕一来就删掉半路那条」的淘汰。实测同泳道叠字 80% → 0%,
弹幕存活时长中位 4.20s(被截断)→ 5.73s(完整飞完)。 - 弹幕被推送时段闸掉:设好频率却因时段已过而完全不弹,且界面无任何提示 —— 改为开关打开即全天生效。
- 弹幕服务被系统杀进程后静默停摆(要重开 App 才恢复):改为每 tick 实时读系统亮屏状态,
并由每批推送闹钟与开机广播顺带把服务重新对齐。 - 多条弹幕并存:旧实现同时只保留一条,新弹幕一来就把上一条删掉,表现为「只移动一点就飞走了」。
- 保存初试日期清空当天计划:在设置页点「保存并开始」时,若日期没变不再重排计划。
📦 安装
pm install -r -d kaoyan-widget-v1.2.apk
⚠️ 本项目由 AI 生成,仅供学习交流;定时 / 通知 / 权限相关行为请自行评估后再安装。
v1.1.1
v1.1.1
✨ 新增
- 每日推送时段可自定义:设置页可调整每天推送的起止时间(默认
08:00–22:00),单词在该时段内分批随机推送。
🐛 修复
- 重复点击通知进入 App 后,返回键会停留在旧推送、无法回到桌面。现改为单实例(
singleTask)+ 返回键直接回桌面;再次点击通知会自动刷新到最新推送。
📦 安装
- 附件:
kaoyan-widget-v1.1.1.apk pm install -r -d kaoyan-widget-v1.1.1.apk
本项目由 AI 生成,仅供学习交流。
v1.1
🆕 v1.1 更新内容
- 首次安装启动后自动申请通知权限(Android 13+
POST_NOTIFICATIONS) - 新增后台运行引导弹窗:一键跳转系统「自启动管理」/「电池优化」设置页
- 引导弹窗每个安装仅自动弹出一次(SharedPreferences 记录),之后可随时在系统应用详情页手动设置
- 兼容 ColorOS / OPPO / vivo / 华为 / 小米 等常见机型的自启动页,未命中时自动回退到应用详情页(ColorOS 16 的自启动开关即位于应用详情页)
- 不申请任何多余的敏感权限
✨ 主要功能
- 首次启动设置向导(未设初试日期则不推送)
- 初试日期可配,按剩余天数自动倒推每日词量
- 词库可替换,内置 5398 个考研词汇
- 桌面小组件 + 定时批量推送
📦 安装
pm install -r -d kaoyan-widget-v1.1.apk
包名 com.kaoyan.widget | minSdk 26 | targetSdk 34 | versionName 1.1
🔒 隐私
仓库与安装包均不含任何个人信息、签名密钥或运行数据。
MIT License
v1.0
考研英语单词小组件 v1.0
⚠️ 本项目(含代码与文档)由 AI 生成,仅供学习交流使用。
✨ 功能
- 首次启动设置向导(未设初试日期不推送)
- 初试日期可配置(默认 2027-12-20)
- 按剩余天数自动倒推每日词量(dailyNew = ceil((词库-已学)/剩余天),夹 1~300)+ 复习上限 max(40, dailyNew)
- 词库可替换(内置考研词表 5398 词,支持导入自定义 txt)
- 定时推送:桌面小组件 + 通知栏(AlarmManager)
- 开机自恢复(BootReceiver)
📦 安装
pm install -r -d kaoyan-widget-v1.0.apk
或 adb install -r -d kaoyan-widget-v1.0.apk
- package:
com.kaoyan.widget - minSdk 26 / targetSdk 34
🔒 隐私
本 Release 不含签名密钥、口令、Token 或任何用户数据。
📄 许可证
MIT License