# FIGO-tici **Repository Path**: see-fly/figo-tici ## Basic Information - **Project Name**: FIGO-tici - **Description**: FIGO提词器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-07 - **Last Updated**: 2026-09-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FIGO 声同步提词器 > 当前版本:**v1.20**(versionCode 21;构建脚本 `build_apk.py` 输出 `FIGO-Teleprompter-v1.20.apk`)。 > 安卓口播录制用的**文本提词器**:支持「语音跟读同步」(你念到哪、提词走到哪、进度自动同步),以及「顶层悬浮窗」(录制时压在相机/录屏上方边录边看)。 包名 `com.bink.teleprompter` · minSdk 21 · targetSdk 34 · 体积约 105 MB(含离线中文语音模型)。 ## 关键修复(已在 v1.05 起落地,v1.20 继承) 1. **悬浮按钮不可见(核心修复)**:控制栏原来 10 个按钮挤在一行,小屏幕上最后几个被挤出屏幕。现在拆分为两行: - 第一行:大按钮 `🎤 跟读`、`⤢ 悬浮窗`、播放、关闭(高亮金色边框,一眼可见) - 第二行:小按钮(字号/速度/镜像/主题) 2. **跟读失败静默无反馈**:原来 Vosk 原生库加载失败时只抛出 `UnsatisfiedLinkError`,toast 秒消失看不到。现在在启动识别线程前**主动 `System.loadLibrary("vosk")`** 验证,失败时抛出明确中文错误:"Vosk 语音引擎加载失败,设备可能不支持当前 CPU 架构"。 3. **权限检测面板**:编辑页新增「权限检测」按钮,点击后显示录音/悬浮窗/后台弹出界面三项权限状态,小米手机还会提示后台弹出界面的设置路径。 4. **小米悬浮窗引导改进**:原来只说"显示悬浮窗",现在对话框明确列出两项权限(显示悬浮窗 + 后台弹出界面)及各自设置路径。 ## 核心功能 1. **全屏提词**:字号、滚动速度、镜像(适配提词镜)、深色/浅色背景可调;稿件自动保存在本机。 2. **语音跟读同步**:点 🎤 开启。用**离线语音识别(Vosk)**听你说话,按识别结果在文稿里「分句+滑动锚点匹配」推进已读位置——念得快就走得快,念得慢就停,进度实时同步,脱稿/识别错误不会乱跳。**完全离线、不依赖 Google 语音服务,国内手机直接可用**。 3. **顶层悬浮窗(透明 / 可拖动 / 可缩放)**:点 ⤢ 开启。窗口本身**完全透明**(仅内容卡片带可调半透明背板),压在相机/录屏最上层: - **拖动**:按住浮窗顶部「提词 · 拖动我」条可把窗口拖到任意位置(如挪到边角避开快门)。 - **缩放**:拖右下角蓝色方块手柄,自由调整窗口宽高,**不再占满屏**。 - **透明度**:点浮窗内「◧」按钮,在 `全透明 → 半透明 → 较实` 三档间循环,方便在不同亮度的画面上看清提词。 - **尺寸/位置/透明度自动记忆**(下次开启沿用上次设置)。 - 麦克风开关、关闭走**浮窗内按钮 + 通知栏按钮**两种方式;窗口为「非聚焦」,录制 App 仍可正常点按。 ## 使用步骤 1. 把 `out/FIGO-Teleprompter-v1.20.apk` 拷到手机,允许「未知来源」安装(可覆盖旧版,同签名)。 2. 首次打开会请求 **录音** 权限(语音跟读用);点 ⤢ 时按要求授予 **悬浮窗** 权限(小米手机会自动跳转 MIUI 的「显示悬浮窗」授权页,其余机型跳系统设置)。 3. 输入/粘贴文稿 → 「保存并开始 ▶」。 4. 全屏模式默认自动滚动;点 🎤 切换为「语音跟读」。 5. 想压在相机上录制:点 ⤢ 开启悬浮窗(App 自动退回桌面),打开相机/录屏开录: - 浮窗默认在顶部、约 80% 屏宽、24% 屏高;拖动顶部条挪位置、拖右下角缩放、点「◧」调透明度。 - 语音跟读自动开启(念到哪走到哪);结束在浮窗内点「×」或通知栏点「停止」。 ## 注意 - **语音识别已改为离线引擎(Vosk)**,不再依赖 Google 语音服务,无网络也能用,国内手机(华为/小米/OPPO/vivo 等)直接可用。 - **首次开启 🎤 会解压离线模型(约几秒,仅一次)**,之后秒开;请确保手机剩余空间充足(模型约 44MB,会解压到 App 私有目录)。 - 悬浮窗需手动在系统设置里授权「显示在其它应用上层」。 - 语音跟读默认中文;识别为增量流式,跟读顺滑。 ## 小米 / 红米手机(MIUI / HyperOS)必读 小米对悬浮窗和后台录音有**独立且更严格**的管控,标准授权页不够,必须额外开启两处: 1. **显示悬浮窗**:设置 → 应用设置 → 权限管理 → 权限 → **显示悬浮窗** → 找到本应用 → 允许。 (本版已自动跳转 MIUI 的该授权页;若没跳,按此路径手动开。) 2. **后台弹出界面**:设置 → 应用设置 → 授权管理 → 应用权限管理 → 权限管理 → **后台弹出界面** → 本应用 → 允许。 这一步不开放,浮窗在 App 退到桌面/相机后会被 MIUI 直接杀掉(表现为「一点⤢就没了」)。 3. **录音权限**:设置 → 应用设置 → 权限管理 → 权限 → **录音** → 本应用 → 允许(选「始终允许」更稳)。 4. 若开 ⤢ 后屏幕闪一下但看不到浮窗,本版会在通知栏弹出明确提示「悬浮窗被系统拦截,请去设置开启显示悬浮窗与后台弹出界面」——按提示开好权限再试即可。 ## 重新构建 环境已具备 Android SDK(build-tools 34.0.0)、JDK 17。一键重建: ``` python build_apk.py ``` 流程:`aapt2 compile/link` → `javac` → `d8` → 组装 APK(全 STORED、无数据描述符、manifest 置首)→ `zipalign` → `jarsigner`(v1) → `apksigner`(v2/v3)。 签名 keystore:`out/teleprompter-release.keystore` (别名 `teleprompter`,密码 `tele2026`。**这是本 App 的独立签名,与 FIGO 其它 keystore 无关**,请妥善保存,升级时必须用同一个)。 ## 目录 - `src/java/com/bink/teleprompter/`:原生层(App 状态 / SpeechEngine 语音匹配 / MainActivity WebView 壳 / FloatService 悬浮窗) - `src/assets/`:`teleprompter.html` + `tele.css` + `tele.js` 提词器界面;`overlay.html` + `overlay.css` + `overlay.js` 悬浮窗界面 - `src/res/` + `AndroidManifest.xml`:资源与清单 - `build_apk.py`:构建脚本 · `gen_icons.py`:生成 launcher 图标