Android TV · 家长守护 · 完全离线

PoHWProof of Homework

答对题目,无限续租!

装在电视上的反沉迷小实验:开启守护后,前台服务会按设定周期在任意应用之上弹出全屏答题页,答对才能继续看电视;同一题答错 2 次自动换题并记入错题库。这是一台 Android TV 上的「答题解锁继续观看」家长守护工具。

PoHW 是 Proof of Work 的一个玩笑 —— 看电视的通行权不靠算力,而是靠周期性交一次「作业量证明」来续租。租约到期,重新出题。本项目是个人非商业的 Android TV 实验,只发布 APK,不上架任何应用商店。

Android 5.0+ / minSdk 21 5,129 题离线题库 零联网 · 不收集数据

示意图:电视 + 琥珀计时弧 + 青绿对勾

PoHW APP 图标

为电视而生

深蓝渐变圆角底 + 琥珀计时弧 + 屏幕里的青绿对勾 + 底座,呼应「答对题目,无限续租!」。图标与 TV 横幅均由仓库脚本可复现生成。

Features

产品亮点

从全屏答题遮罩到离线题库与家长设置,全部围绕一件事:让孩子在继续观看前,先交一次「作业」。

01

跨应用全屏答题遮罩

基于 TYPE_APPLICATION_OVERLAY 的全屏窗口,切到视频 App 或桌面后照样弹出;遥控器方向键、确定键、数字键 1-4 由遮罩自主路由,不依赖窗口 View 焦点。

跨应用
02

答对继续观看

答对才能继续看电视,租约到期重新出题。守护开关合并为一个按钮,运行中显示「关闭守护」,关闭也必须先通过家长密码就地验证。

PoW 续租
03

答错 2 次换题 + 错题库

同一题累计答错 2 次自动原地换题,原题按题面去重记入本地错题库;控制台可翻页查看、删除、清空,并标出正确答案与选错项。

本地 SQLite
04

5,129 题离线 K12 题库

内置 SQLite,覆盖 4,319 个知识点、19 个学科、21 个年级段,本地随机抽题。完全离线、零联网,默认一次网络请求都不发;在线题库源默认关闭,需家长自行填地址才启用。

完全离线 · 零联网
05

学科配比 5:3:2:2

数学 / 语文 / 英语 / 其他学科四槽权重,默认 5:3:2:2(每槽 0-5 可调)。「全学科」模式下第 4 槽生效,其他学科池不可用时自动失效,避免串科抽题。

四槽权重
06

家长密码 + 单列卡片设置

4-8 位数字密码,PBKDF2(60,000 次迭代)+ 随机 salt,关闭守护也需要验证且服务侧二次校验。设置页为居中窄栏单列卡片流,遥控器上下按行移动,不再跨栏跳转。

PBKDF2 · 单列卡片
07

答题时暂停 / 恢复视频

弹题时申请短暂音频焦点并派发媒体暂停键,答对解锁后归还焦点并尝试恢复播放。这是 best-effort:Android 没有强制暂停第三方播放器的公开 API,不保证所有视频 App 响应。

best-effort
08

启动即守护 / 开机自启

「启动即守护」默认开:APP 冷启动且条件满足时自动拉起守护,从后台返回不会把家长手动关掉的守护又打开。「开机自启」默认关,需家长显式开启并手动放行厂商自启动权限。

LaunchPolicy
09

微信 / 支付宝打赏

全屏展示两张静态收款码,遥控器左右键切换渠道,返回键退出。纯静态收款码、无支付 SDK、无订单、无网络请求,APP 不接触金额与账号,扫码与付款都在家长手机上完成。

纯静态 · 不联网支付
10

学习进度按学期与单元过滤

方案 B:新增「学习学期」与「已学单元」,按内置 12 册数学有序单元表限制出题范围,贴合开学初只学 1-2 个单元的实际进度;选不到题时依次放宽单元 → 学期 → 年级,始终不换学科。语文 / 英语与初中暂无可靠单元顺序,仅按学期过滤。

学期 + 单元
How it works

工作原理与安装步骤

侧载到小米电视等 Android TV 设备,授权一次悬浮窗,配置好家长密码与出题参数,即可开启守护。

  1. 1

    侧载 APK 到电视

    把 APK 装到 Android TV 设备(文件管理器安装,或 adb 覆盖安装)。本项目不上架任何应用商店、仅自行侧载,只发布 APK。

    adb install -r <你下载的 APK>
  2. 2

    首次打开,授权「悬浮窗」

    点「授权悬浮窗」打开系统开关并允许。SYSTEM_ALERT_WINDOW 是必需权限,用于在其他应用上层弹出全屏答题页。

  3. 3

    进家长设置,初始化 4-8 位密码

    首次进入会要求初始化 4-8 位数字家长密码;密码以 PBKDF2 + 随机 salt 落盘,用于保护设置页与关闭守护。

  4. 4

    设年级 / 频率 / 学科配比

    可选小学 1-6 / 初中 1-3(内部 1-9 年级)、出题频率(15 秒至 30 分钟)、数 / 语 / 英配比与「全学科」开关,以及按学期与单元的进度范围。

  5. 5

    返回首页,开启守护

    点「开启守护」后按 Home 切到任意视频 App,到点会弹出全屏答题页。答对继续观看,租约到期重新出题。

安装前请先看这几条边界

  • 不上架应用商店、仅自行侧载:这是个人非商业实验,只发布 APK,不在任何应用商店分发。
  • 需要 Android 5.0+(minSdk 21,targetSdk 33);电视、手机、平板均可安装,不强制 Leanback。
  • 厂商自启动权限需家长手动放行:「开机自启」默认关闭,开启后还要在系统设置里允许该应用自启动。
  • 忘记密码可用 adb shell pm clear com.jager.tvquiz 重置(会清空全部设置与统计);遮罩卡住卸载流程可用 adb shell am force-stop com.jager.tvquiz。
  • 拦不住 Home 键、系统「强制停止」、卸载与清除数据 —— 第三方应用没有这些能力,本仓库明确禁止 Device Admin / 防卸载类 API。
Download

下载最新版本

最新版本 v1.0.1(当前构建 versionCode 19);签名证书连续(76eb6063…6172),可直接 adb install -r 覆盖安装。APK 附件以 Releases 页面实际发布为准,本页不写死任何直链资产文件名。

本项目不上架任何应用商店,仅发布 APK 供自行侧载;请从仓库 Releases 页面获取,不要使用第三方镜像。

Changelog

版本更新记录

按时间倒序整理自仓库 CHANGELOG.md。v1.0.0 之前为开发期内部迭代编号,已下架三个历史 Release;自 v1.0.0 起按 MAJOR.MINOR.PATCH 递增,versionCode 为单调技术计数、不随展示版本重置。具体构建号与改动以仓库 CHANGELOG 为准。

FAQ & Disclaimer

常见问题、边界与免责声明

请把 PoHW 当成一个「自己家里用的玩具项目」,而不是商用家长控制产品。

视频暂停一定生效吗?

不一定,是 best-effort。Android 没有「强制暂停第三方播放器」的公开 API,APP 只能请求短暂音频焦点并派发媒体暂停键,答对后归还焦点并尝试恢复;不保证所有视频 App 响应。Android 12+ 视频 App 还可用 HIDE_OVERLAY_WINDOWS 隐藏非系统浮层,各家 ROM 与小米电视的实际表现需要上机实测。窗口焦点重抢同样是 best-effort,重抢失败时遮罩保留、不自动放行,触摸 / 鼠标点击仍可答题。

内置题库是教材同步练习题吗?

不是。题目由开源仓库 RedSamerai/learning-content 的知识点纲目参数化生成,偏「知识点辨识 / 定位」,不是教材同步真题,也不是教辅题库。上游只有纲目字段、没有题目选项答案,仓库与 APK 不含任何第三方真题文本或付费题数据。它的作用是打断连续观看、让孩子回忆一下学过什么。

题库能按教材版本或单元序号出题吗?

题库本身不含出版社版本字段、不含单元序号,也没有难度标签;分学科教材版本只用于在线题包筛选与题面标注。上下学期可直接用 term 字段过滤。单元进度靠 APP 内置的 assets/syllabus.json 人工维护:目前覆盖小学 1-6 年级数学共 12 册有序单元,把 topic 里的单元名别名归并后按教学顺序排列;语文是课文名、英语是主题词,7-9 年级亦无可靠顺序,这些组合只按学期过滤,不假装精确。设计与边界见 docs/QUESTION_BANK.md。

会收集数据或联网支付吗?

不收集数据,默认完全离线、零联网:INTERNET 权限仅用于家长自行配置的可选在线题库源,地址为空时 APP 一次请求都不发。打赏只显示静态收款码,无支付 SDK、无订单、无网络请求,扫码与付款都在家长手机上完成。清单同时设置了 allowBackup=false 与默认禁止明文 HTTP。

开源许可证的边界是什么?

代码采用 MIT 许可证;上游 learning-content 仓库未附 LICENSE,app/assets/quiz.db 中的纲目数据不在 MIT 授权范围内,仅供个人非商业学习使用。如需公开再分发,请先确认上游授权状态,或换成自己有权使用的数据源自行重建题库。仓库与 APK 中不含任何密钥与付费接口。

为什么不在应用商店上架?能拦住卸载吗?

这是个人非商业实验,不上架任何应用商店、非应用商店分发,只发布 APK 供自行侧载。第三方应用拦不住 Home 键、系统「强制停止」、卸载与清除数据,本项目明确禁止 Device Admin / Device Owner / 锁屏任务 / 防卸载这类 API。

适合什么场景?

仅供家庭自用:请在自己设备上、在自己孩子知情的前提下使用。它不是商用家长控制产品,也不承诺任何监护效果;题目质量、真机兼容性与遥控器体验以实际设备为准。