一块压在所有应用上面的半屏提词浮层,给中文口播用。竖屏、短句、逐字变蓝,念到哪儿一眼就知道。
本项目是 Djeylani/android-teleprompter 的中文重写分支, 基于原作者 2025 年发布的 v1.3.2,按照中文口播场景重做了交互与渲染。 原项目采用 MIT 协议,本分支同样采用 MIT,见 LICENSE。
最新安装包在 Releases 里,android-teleprompter-vX.Y.Z-signed.apk,直接装。
- 最低 Android 5.0(API 21),编译与测试基于 Android 14(API 34)
- 首次启动需要「显示在其他应用上层」权限,用于把文字浮在相机、剪映、微信之上
- 不需要相机权限 —— 本版不再自动启动相机(原因见下方「与原版的差异」)
- 把稿子粘进首页的文案框(支持粘贴/清空,不落盘,关掉就没了)
- 调四个参数:速度、字号、窗口高度、起始留白
- 点「开始」,授权悬浮窗,文字层出现在上半屏
- 打开你要录的相机或任何应用,正常录
- 点一下文字区 → 暂停;再点一下 → 继续;按住上下拖 → 手动滚
| 参数 | 范围 | 含义 |
|---|---|---|
| 速度 | 1–40 格 | 每格 = 10 像素/秒,即 10–400 px/s。格数与真实值同时显示 |
| 字号 | 4–30 格 | 每格 = 4 号,即 16–120 sp |
| 窗口高度 | 20–90% | 浮层占屏幕高度的比例,只铺上半屏,下半屏留给你看别的 |
| 起始留白 | 0–80% | 第一句话距离浮层顶部多远,50% 即从正中开始 |
| 读字线 | 10–90% | 那条蓝色横线的高度。它以上已经念过的字会变蓝 |
速度和字号支持长按连发:按住不放会连续走格,越走越快,两三秒推到最大。想精确到个位数,点数字框直接输入。
页面右侧可存预设:当前四个参数一键存成「横屏近景」之类的名字,下次点一下回来。
浮层里那条蓝线是固定的,文字往上匀速滚。文字越过线的那一刻,就从白变蓝,一行读完再从下一行行首开始一个字一个字亮过去(不是整行一刀切)。
渲染没有用 TextView + Span —— 那样每过一行都要重排整篇,两千字就会卡。这里的做法是:
- 用
StaticLayout把整篇排一次,缓存在内存里; - 每帧只画窗口里看得见的二十来行,白字铺一遍;
- 再把「已读范围」用蓝字画一遍,靠裁剪把边界切在字缝上。
所以是零重排,三千字和三百字一样流畅。
原版是一个「录视频时看稿」的英文通用工具。这一版是按中文口播(竖屏、短句、对着镜头说话)重做的,改动集中在三块:
| 原版 v1.3.2 | 本版 | |
|---|---|---|
| 语言 | 英文 | 简体中文,全界面 |
| 界面 | 可滚动、参数用滑杆 | 一屏放下、参数用「格 + 数字框」,可存预设 |
| 计时 | 固定速度滑杆 | 速度/字号按格 ×10、×4 换算,长按连发 |
| 读字提示 | 无 | KTV 式蓝色读字线 + 逐字变蓝 |
| 文案存储 | 自动保存多份稿子 | 不落盘,每次现贴(含粘贴/清空按钮) |
| 相机 | 启动时自动拉起相机 | 移除 —— 系统相机录完要手动点确认,容易丢片 |
| 浮层高度 | 固定约 1/3 屏 | 可调 20–90%,默认半屏 |
| 渲染 | ScrollView + TextView |
自绘 StaticLayout(修掉超过一屏就被截断的 bug) |
| 权限 | 含 CAMERA | 只保留悬浮窗、前台服务、通知 |
原版的英文 README 保留在 README.en.md。
需要 JDK 11 和 Android SDK(compileSdk 34)。
git clone <this-repo>
cd android-teleprompter
./gradlew :app:assembleRelease产物在 app/build/outputs/apk/release/app-release.apk。
签名用 keystore.properties(storeFile / storePassword / keyAlias / keyPassword),该文件与 *.jks 都已加入 .gitignore,不会进仓库。没有这个文件也能构建,此时 release 会退回 debug 签名,装得上但无法覆盖升级已有安装。
提示:
gradle-wrapper.jar已随仓库提供。如果你拿到的是缺少该文件的副本,./gradlew会静默失败而不报错,用本机的gradle命令代替即可。
- 前台服务用的是
dataSync类型。若 targetSdk 升到 35,会撞上系统的「6 小时后台限制」,届时需要改成mediaPlayback或specialUse。 - 包名仍是
com.example.*,Google Play 不接受这个前缀,上架前需要改。 - 只在少数几台国产 Android 机上验证过悬浮窗表现,其他机型欢迎反馈。
MIT,见 LICENSE。原项目版权归 Shariif(GitHub @Djeylani)所有,中文分支的修改版权归 XinMatrix。
原作者在 README 里声明了 MIT,但上游仓库没有附许可正文,本仓库补上了标准 MIT 文本,并保留原作者的版权行。 如果你要把它用在商业产品里,建议同时知会原作者一声。
- 原作者 @Djeylani,最初的悬浮窗与相机叠加思路来自他
- 参数化的思路来自 TeleprompterPAD 一类专业提词器