fix_face_mamera 当前工作区“设置 → 相机设置”中的人脸相机使用 UVC 枚举、切换和预览,保存的是 UVC VID/PID;人脸支付及支付测试仍通过 CameraX/Camera2 获取帧,读取 Camera2 ID。
两条链路使用不同的相机标识,原实现只保存 UVC ID,没有同步支付链路读取的 Camera2 ID,因此设置页虽然能正确预览,支付时仍可能打开旧相机或错误相机。
通过设备 sysfs 的 USB VID/PID、/dev/videoN 节点以及 Camera2 外部相机编号规则完成物理核验:
| 摄像头名称 | UVC VID/PID | 视频节点 | Camera2 ID |
|---|---|---|---|
| USB2.0_CAM1 | 11391_19040 | /dev/video0 | 100 |
| USB 2.0 Camera | 3141_25440 | /dev/video2 | 102 |
| MC-500U | 1374_41357 | /dev/video28 | 128 |
当前设备的 Camera2 外部相机 ID 为 100 + video 节点编号。
用户选择人脸相机时同时保存:
face_uvc_camera_id:供设置页 UVC 预览和再次进入页面时恢复选择。face_camera_id:供人脸支付及支付测试的 CameraX/Camera2 链路使用。应用启动时根据已保存的 face_uvc_camera_id 重新计算并同步 face_camera_id。已有安装不需要用户重新进入设置页选择,相机对应关系即可自动修正。
3141_25440)和旧的带 USB deviceId 格式(如 1007_3141_25440)。app/src/main/java/com/cpt/aidishrecognition/utils/FaceCameraIdMapping.javaapp/src/main/java/com/cpt/aidishrecognition/utils/FaceCameraSettings.javaapp/src/main/java/com/cpt/aidishrecognition/application/CptApplication.javaapp/src/test/java/com/cpt/aidishrecognition/utils/FaceCameraIdMappingTest.java:app:testDebugUnitTest:通过。:app:assembleDebug:通过。BUILD SUCCESSFUL。USB2.0_CAM1 后保存 face_uvc_camera_id=11391_19040、face_camera_id=100。USB 2.0 Camera 后保存 face_uvc_camera_id=3141_25440、face_camera_id=102。本映射以当前 FY-3576SE 的固定 USB 拓扑为准。如果硬件型号、USB 接口或内核视频节点分配发生变化,需要重新核验 /dev/videoN 并更新映射表。