Skip to content

Releases: Shing299/kaoyan-widget

v1.3.2-repair:修复多音标词的中英文划分

Choose a tag to compare

@Shing299 Shing299 released this 26 Oct 01:02

修复多音标词的中英文划分(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.apk

v1.3.2 · 单词显示模式切换

Choose a tag to compare

@Shing299 Shing299 released this 25 Oct 23:44

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 · 每日开屏提醒

Choose a tag to compare

@Shing299 Shing299 released this 25 Oct 04:33

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 + 首页精简

Choose a tag to compare

@Shing299 Shing299 released this 19 Oct 00:24

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 · 弹幕频率滑条 + 性能优化

Choose a tag to compare

@Shing299 Shing299 released this 08 Oct 02:27

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 · 学习弹幕 + 推送整合

Choose a tag to compare

@Shing299 Shing299 released this 05 Oct 15:01

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

Choose a tag to compare

@Shing299 Shing299 released this 05 Oct 06:39

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

Choose a tag to compare

@Shing299 Shing299 released this 02 Oct 02:25

⚠️ 本项目(含代码与文档)由 AI 生成,仅供学习交流使用。

🆕 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

Choose a tag to compare

@Shing299 Shing299 released this 01 Oct 11:11

考研英语单词小组件 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