ar
"/home/yossef/notes/git/projects/inguide/modules/ar.md"
path: inguide/modules/ar.md
- **fileName**: ar
- **Created on**: 2026-06-16 00:48:42
ar
cs# ar
Purpose: AR Navigation module — camera preview, route overlay, coordinate registration, and position tracking.
Files
| File | Role |
|---|---|
ArNavigationScreen.kt |
Main AR composable. CameraX preview + Canvas overlay for waypoints. Handles camera permissions, GPS connection, position staleness, building proximity. Renders Loading/NoRoute/Tracking/Navigating/Arrived/Error states. |
ArNavigationViewModel.kt |
ViewModel. Manages navigation state machine, GPS via FusedLocationProviderClient, PositionStatus tracking (Idle→Acquiring→Reliable/LowConfidence/OutOfRange/Unavailable), anchor position, staleness watchdog (10s timeout). Methods: setRoute, clearRoute, updatePosition, arrive, setError, setReady, connectGps, disconnectGps, setBuildingLocation, needsReanchor, reanchor. |
CoordinateRegistration.kt |
Haversine-based [lng,lat] → AR world-space offset conversion. Constants: Earth radius 6,371,008.8m, reanchor threshold 2m, floor height 3m. |
ArWaypointRenderer.kt |
Projects up to 4 waypoints into screen-space AR coordinates. Returns RenderedWaypoint(waypoint, arX, arY, arZ, index). |
ArNavigationState.kt |
Sealed class: Loading, NoRoute, Tracking, Navigating(route), Arrived, Error(message). |
ArRouteData.kt |
Data classes: ArRouteData(waypoints, totalDistance, estimatedDuration, startFloorId), ArWaypoint(longitude, latitude, floorId, label?, isTransition, connectionType?). |
Position Status States
Idle→ initialAcquiring→ after camera permission grantedReliable→ confidence ≥ 0.5 (magnetic or GPS)LowConfidence→ confidence < 0.5 (GPS fallback active)OutOfRange→ position >200m from building centerUnavailable→ permanent failure
Dependencies
- CameraX (core, camera2, lifecycle, view)
- ARCore 1.45.0 + SceneView 2.2.1
- Google Play Services Location (GPS fallback)
AppConfig.BUILD_PROXIMITY_RADIUS_METERS (200m)IndoorPositioningService(magnetic positioning)CoordinateRegistration(lng/lat → AR offsets)
Related: ../flows/ar-navigation-flow.md, ../flows/route-data-flow.md, ./services.md
continue:[[]]
before:[[]]