Camera & Frame Events
Events for camera tracking and frame detection.
| Event | Data Fields | Description |
| left_camera_frame | date: string ("dd mm yyyy hh:mm:ss") | User left camera view |
| returned_camera_frame | date: string ("dd mm yyyy hh:mm:ss") | User returned to camera view |
| check_frame_completed | message: string ("Person stepped into frame") | Frame check completed |
| check_frame_skipped | message: string ("User skipped check frame") | User tapped Skip on the camera-positioning screen |
| camera_selector_opened | message: array (available cameras) | Camera selector opened |
| camera_selected | id: string, label: string, isMirrorCamera: boolean | Camera selected by user |
| open_camera_settings | - | User tapped "Go to Settings" in the camera help screen. Only shown with shouldShowOpenCameraSettings: true. Open the device camera settings from your app |
| form_guidance_config | id, source, combine, smoothing?, angles[] | Depth-guidance setup for the current exercise. Only with streamFormGuidance: true |
| form_guidance_frame | id, fill, target, tol, neutral, zone, angles | Live depth reading, sent when it changes. Only with streamFormGuidance: true |
| rep_depth_angle | id, rep, combine, angles[] | Deepest joint angle reached in each rep, whenever depth guidance is active |
Depth guidance stream. fill, target and neutral are 0-1 positions on the depth bar (0 = standing, 1 = deepest). tol is the half-width of the "perfect" band on the same scale (target plus or minus tol). zone is "neutral", "approaching", "perfect" or "too_deep". angles in a frame maps each joint id to its measured angle in degrees. Each entry of angles[] in the other two events describes one tracked joint: id, joint (knee, hip, elbow, shoulder, ankle), side, source ("2d" or "3d"), topAngle, neutralAngle, targetAngle, tolerance, bottomAngle and an optional weight. rep_depth_angle adds deepestAngle. See showFormGuidance and streamFormGuidance in Camera & Pose Detection.