安卓眼动交互验证:需求分析报告与演示 APK 方案

版本:v1.0,待评审
日期:2026-10-26
阶段:需求访谈完成,方案待评审;APK 尚未实现,真机效果尚未验证。

1. 结论与项目目标

本项目验证一个具体问题:在手机固定、用户不戴眼镜、距离约 30~50 厘米的条件下,安卓前置摄像头能否识别“低头、眼睛上抬,同时注视人物图片下方指定区域”的动作组合,并在持续约 1 秒后触发提示。

成功提示必须逐字显示:

捕获特定眼睛成功

建议采用 Android 原生应用、CameraX 摄像头采集和 MediaPipe Face Landmarker,并增加个人校准、头眼动作判断、屏幕区域估计和时间过滤。

可行性结论分为两层:实时提取脸部与眼部特征有成熟工具;在低头姿态下准确判断目标区域需要额外算法和真机实验,当前不能承诺已达到可用精度。本项目的结果可以是“在规定条件下通过”,也可以是“已量化识别瓶颈,需继续优化”,不能以数次成功画面代替验证。

2. 用户已确认的需求

编号 内容 状态
R01 交付可安装的安卓 APK 已确认
R02 目标系统按 2025 年版本,采用 Android 16(API 36) 已确认采用该解释
R03 特定动作是低头、眼睛上抬,并看中目标区域 已选择 C
R04 每次进入测试时接受简短校准 已确认
R05 手机固定在支架上,单人正对屏幕 已确认
R06 测试距离约 30~50 厘米,校准后身体位置基本稳定 已确认
R07 第一版不需要支持戴框架眼镜 已确认
R08 屏幕中间使用人物占位图,由开发方准备 已选择 B
R09 人物为穿着完整裙装的成年人示意形象 已选择对应素材方案
R10 屏幕中下方设置可调整的矩形目标区域 已确认
R11 目标条件持续约 1 秒后触发 已选择 C
R12 优先减少误触发,允许一定程度漏检 已选择 A
R13 本地处理,默认不保存、不上传照片或视频,可手动导出日志 已确认
R14 交付报告、APK、源码、构建说明、测试说明和实际测试记录 已确认
R15 预留事件供未来数字人模块接入 已确认

以下是开发方提出的实现参数,不视为用户已逐项确认:最低兼容 Android 11、竖屏、五点注视校准、动作校准、初始姿态阈值、退出延迟及量化验收门槛。

3. 范围与能力边界

3.1 本版包含

3.2 本版不包含

人物图是平面素材,不会因用户低头而产生真实的观察视角变化。本项目验证动作和目标注视条件,不验证图片未呈现的内容。

4. 触发行为的可测量定义

头部俯仰与眼球转动必须使用不同参照系:

条件 定义 不可替代为
H:低头 相对本次校准的中立头姿,头部向下俯仰超过阈值 人脸框整体向下移动
E:眼睛上抬 眼睛相对头部向上转动超过个人阈值 虹膜在整个画面中的纵坐标变小
G:命中区域 在当前支持的头姿范围内,估计注视位置落入指定矩形 仅检测到眼球上抬
V:追踪有效 有可用的人脸、眼部及校准结果,眼睛未处于闭合或明显遮挡状态 复用上一次成功结果

业务触发条件:V、H、E、G 同时成立,连续持续至少 1000 毫秒。

持续时间采用摄像头帧的单调时间戳计算,不用累计固定帧数代替,避免不同帧率改变触发时长。

如果部分头姿下 G 无法可靠估计,应显示“注视估计无效”,不能悄悄取消 G 条件、仅凭 H 和 E 触发成功。动作识别和区域识别需要分别报告结果。

5. 技术路线比较与推荐

路线 优点 局限 结论
MediaPipe + 个人校准 + 头姿补偿 有安卓官方示例;人脸、眼部和动作特征可本地实时获取 区域注视估计与低头姿态补偿需要自行实现 推荐用于本次验证
仅用 MediaPipe 眼部动作系数和头姿阈值 实现较快,适合观察低头和抬眼动作 无法证明视线落在目标矩形,不能满足完整验收 仅可作为调试对照
专用视线估计模型或商业 SDK 可能提供更直接的视线估计输出 涉及模型授权、安卓部署、设备适配和额外评估 推荐路线实测不达标时再评估

不选择 ARKit,原因是本次目标平台为 Android。第一版也不引入 Unity,避免追踪验证依赖 3D 引擎;后续使用结构化事件接入数字人模块。

5.1 软件组成

拟采用 Kotlin、CameraX、MediaPipe Tasks Vision。模型随 APK 打包,安装后无需联网下载模型;具体依赖版本在实现时固定,避免动态版本。

处理顺序:

摄像头帧 → 旋转及坐标处理 → 脸眼特征 → 校准映射与头姿补偿 → 有效性检查 → 条件过滤与计时 → UI 和事件输出。

前置摄像头预览的镜像必须与推理输入坐标明确区分。目标矩形使用应用内容区域的归一化坐标,不包含状态栏和系统导航栏;图片缩放留白也要纳入坐标变换,避免矩形看起来正确但判断区域偏移。

5.2 屏幕区域估计

候选输入包括归一化虹膜位置、眼睑和眼角几何关系、头部俯仰与偏航、脸部在图像中的位置和尺度,以及眼部动作系数。具体特征组合由试验选择。

通过用户注视已知位置的校准样本建立映射。首轮使用低复杂度、带正则化的映射,避免少量校准数据拟合过度;验证样本与拟合样本分开采集。归一化估计坐标不代表物理测量精度。

先验证目标姿态下的粗区域区分能力,再尝试完整坐标显示。若只验证到区域级别,应在 UI 和报告中如实标明,不展示虚假的精确注视点。

6. 校准设计

初始流程建议如下,实际耗时由试验确定:

  1. 用户在 30~50 厘米范围内选定位置,固定手机,脸部均匀受光。
  2. 采集中立头姿和自然睁眼状态,作为本次会话基线。
  3. 依次注视中心、左上、右上、左下、右下五个点,采集稳定样本。
  4. 提示用户做低头、眼睛上抬动作,采集目标头姿和眼部上抬样本。
  5. 在目标低头姿态下补充目标区及周围非目标区的注视样本,验证中立姿态校准是否失效。
  6. 使用额外采集的验证点检查区域区分能力;质量不足时引导重试,不能直接进入“校准成功”。

如果同时满足低头、眼睛上抬和目标区域注视对某位用户不自然,应先调整支架高度、人物位置或目标矩形,再重新校准。不得把用户无法自然完成的动作当作正常漏检。

30~50 厘米是允许选择起始位置的范围,不是同一次校准后的自由移动范围。明显改变位置、屏幕方向或支架姿态后应重新校准。阈值和校准参数仅服务于本次测试,首版默认不跨会话复用。

7. 界面与操作

首版建议竖屏,主要区域为:

目标矩形在编辑完成后锁定,测试中不误触移动。调试控件避免覆盖目标区或要求用户在正式试次中频繁看向按钮。

建议初始目标矩形放在图片裙摆附近的可见区域,具体位置随示意图确定,不将“屏幕下半部分”全部当成目标。进入条件使用内缩缓冲区,边缘不确定位置优先不触发。

8. 状态机与异常行为

状态 进入原因 行为
等待权限 尚未授权 显示用途说明;不启动推理
等待人脸 未找到有效单人面部 清空候选计时,提示调整位置
校准中 开始或重做校准 展示指引,不发送业务成功事件
检测中 校准可用且追踪有效 分别显示 H、E、G
候选中 V、H、E、G 全部成立 累计有效持续时间
已触发 条件连续满足至少 1 秒 显示成功文字,发送一次命中事件
追踪失效 闭眼、遮挡、丢脸或结果失去时效 不累计候选时间,不产生新命中,显示原因

首版采用保守策略:候选阶段出现无效帧或条件不成立即重置计时,后续根据漏检情况再评估短暂容忍。已触发时,普通条件离开可采用约 200 毫秒退出延迟减少闪烁;追踪失效则立即标记无效并撤销有效命中显示。退出后必须重新满足完整 1 秒才能再次触发。

帧处理采用保留最新帧的方式,不堆积旧画面。过期结果不参与判断;时效阈值需结合实测处理延迟确定。应用进入后台时停止采集,恢复后检查校准有效性。

9. 系统兼容和运行条件

手机型号未提供不阻止编写报告和构建,但无法提前保证帧率、发热和识别效果。模拟器可检查部分界面流程,不能代替实际前置摄像头眼动验收。

10. 验收方案与建议门槛

以下量化值为建议的首轮评估门槛,尚未得到真机证明;不能描述为现有能力或用户已经确认的指标。

10.1 功能验收

10.2 试次与对照

建议首轮至少 3 名不戴眼镜的成年人,在同一测试手机上分别校准,每人完成至少 20 次正例和 40 次负例。每个试次间回到中立姿态,避免上一试次的持续状态影响下一次。

正例:完成低头、眼睛上抬,并持续看目标矩形约 2~3 秒。

负例应分组包含:

  1. 头部中立,仅看目标区。
  2. 只低头,没有完成指定抬眼动作。
  3. 只抬眼,没有低头。
  4. 低头、抬眼,但看目标矩形外部的邻近区域。
  5. 完整动作但目标注视不足 1 秒。
  6. 眨眼、闭眼或短暂离开画面。

不能自然完成的组合记录为无效试次并注明原因,不纳入成功率分母。算法信心不足、校准失败或追踪失败的数量应另行报告,不能用删除失败试次的方法掩盖问题。

10.3 记录指标

指标 定义 初步建议
正例触发率 发生正确触发的有效正例试次 / 全部有效正例试次 不低于 80%
负例误触发率 至少出现一次错误触发的有效负例试次 / 全部有效负例试次 不高于 5%,优先降低
触发延迟 从完整条件开始满足到业务触发的时间 不得早于 1 秒;额外处理延迟单独报告
非目标持续测试 持续 5 分钟执行非目标行为 目标为零次误触发,报告实际值
校准成功率 通过独立校准验证的人次 / 全部尝试人次 如实记录,不预设已达到
性能 有效结果帧率、延迟、连续运行稳定性 建议有效结果至少 15 FPS;实测后评估

各用户的结果单独报告,同时给出汇总;小样本通过只支持本轮条件,不代表所有人和所有手机均可靠。

测试标签来自屏幕指令和用户配合,并非专业眼动仪测得的真实注视点。面部动作是否完成与注视指令是否执行需记录可信程度。日志的指令开始时间不能直接充当真实动作开始时间;没有独立动作起始标注时,只能报告指令至触发延迟及算法内部计时,不能声称测得端到端物理响应延迟。

11. 日志与未来接口

日志拟包含会话编号、试次编号、单调时间戳、指令目标、追踪状态、头姿估计、眼部动作特征、估计区域、H/E/G/V 状态、候选时长、事件和参数版本。无需保存姓名;不默认导出原始画面或完整面部关键点。

算法估计结果和测试指令标签必须分列,避免用算法自身结果充当正确答案。日志只能通过用户主动操作导出。

未来数字人接口建议提供:TrackingInvalid、CandidateStarted、TargetConfirmed、TargetExited,以及时间戳和失效原因。候选进入事件与满 1 秒后的业务确认事件分别表示。已触发期间不逐帧重复发送确认事件。

12. 主要风险与处理

风险 对结果的影响 处理方式
低头改变眼部图像和校准映射 动作可识别但注视区域偏移 增加目标头姿样本和独立验证,超范围时判无效
眼睑遮住虹膜 抬眼估计不稳定或失效 限制自然动作幅度,检查有效性,不使用旧结果替代
头姿与眼球转动混淆 只低头也可能误触发 分离参照系,设置针对性负例
目标区域过小或靠边 区域误差主导判断 允许调整矩形,量化可区分区域尺寸
图片或预览坐标变换错误 UI 目标与算法目标不一致 验证旋转、镜像、缩放、留白和系统栏坐标
阈值过严 漏检增多甚至始终不触发 同时报告正例触发率与负例误报率
设备推理缓慢 处理旧帧、触发延迟增大 丢弃旧帧、记录时效与性能,按设备评估

13. 实施与交付顺序

  1. 评审本报告,确定技术验证范围和建议参数。
  2. 实现摄像头、关键点和独立头眼动作显示,验证 H/E 可观测性。
  3. 加入校准和区域估计,单独验证 G;不足时记录原因并优化。
  4. 实现联合判定、人物占位图、状态机和日志,构建测试 APK。
  5. 真机执行正负例测试,汇总实际表现和限制,再给出后续开发建议。

最终交付包括:需求报告定稿、测试 APK、源码与固定依赖版本、构建及安装说明、测试操作说明、实际测试记录、已知限制与接口说明。

报告、构建、安装和算法验收分别标注状态。APK 编译通过不能写成真机通过;真机流程正常不能写成眼动准确率达标。

14. 参考与当前产物状态

人物素材:eye_tracking_placeholder_v1.png,1024 × 1536 像素,使用用户指定的 packy-image 技能及其脚本,通过 gpt-image-2 以 high 质量生成。已目视确认人物为完整着装、正面站立的全身示意形象,无文字或预绘制目标框。图像生成并不等于交互功能已实现。

生成原件保存在工作区 output/imagegen/eye_tracking_placeholder_v1.png;交付副本位于本报告同目录,文件内容一致。

当前:需求报告待评审;人物示意图已生成;APK、构建验证和真机测试均尚未完成。