人脸 SDK 安全收尾与相机帧防护实施计划
目标:避免取消、超时或重开时与百度人脸 SDK 原生任务重叠,拦截异常相机帧,并对暗光能力执行可恢复降级。
架构
识别全链路收敛到一个专用串行执行器。会话结束时立即停止相机和新帧,新会话使用最长 1 秒的非阻塞排空屏障等待 SDK 空闲。相机边界明确使用 NV21 并校验帧尺寸;暗光模型失败时降级为原图识别。
任务
- 新增可测试的
IDLE/RUNNING/DRAINING SDK 排空状态机。
- 将
track → detect → live → feature → search 收敛到同一单线程执行器,并在 finally 释放门闩。
- 会话取消、超时和销毁时立即停相机;新会话非阻塞等待最多 1000ms。
- Camera1 明确设置 NV21,进入 native 前校验宽高、偶数性和帧长度。
- 暗光模型独立记录可用性;失败时跳过暗光增强,不阻断基础识别。
- 运行定向单测、完整单测和 Debug 构建,配对写入变更记录。
验收
- 取消、超时和销毁不会强制中断 JNI,也不会允许新检测与旧任务重叠。
- 排空超过 1 秒时提示“人脸识别模块正在恢复,请稍后重试”,保留当前订单。
- 无效 NV21 帧不进入百度 SDK;暗光模型失败不冒充授权失败。
- 真机进行快速开关 50 次、USB 相机重枚举和无新增 SIGSEGV 压测。
执行状态:代码、单测、Debug APK 构建、覆盖安装和两次真机识别冒烟已完成;快速开关 50 次、超时重开 30 次和 USB 相机重枚举压力验收待执行。
本计划不执行 Git 提交。