MBCompass is a production Android application: a free, open-source compass and lightweight outdoor navigation tool. The code confirms a local-first design - live compass headings derived from rotation-vector and magnetometer sensor fusion with true/magnetic-north correction, GPS track recording via a foreground TrackerService (pause/resume/save/discard), track statistics, GPX export via FileProvider, offline Mapsforge map rendering with optional online tiles, and Material 3 Compose UI. No analytics, tracking, or backend dependencies exist; tracks persist as a JSON index plus GPX files in app storage, and preferences live in two DataStore files (settings vs. user_preferences). The architecture is a single :app module using Jetpack Compose, Hilt DI, typed Navigation Compose routes, MVVM with StateFlow ViewModels, and repository patterns (TrackRepository, UserPreferenceRepository). Entry points are MainActivity -> MBNavGraph (Compass, Map, Tracks, Track details, Settings) plus the TrackerService foreground service. The codebase is localized into 16+ languages, ships fastlane metadata for Play/F-Droid distribution, and includes unit tests for preference DataStore logic and the sensor ViewModel. Maintenance is active (recent commit 2026-10-01, version 1.1.19, 13 open issues, active changelogs and translations). The engineering is solid for a small/FOSS project: clear layering, DI, and thoughtful sensor/location handling. Weaknesses include blocking runBlocking DataStore reads in AppPreferences, fragile Uri.toFile() assumptions in TrackRepository, very large MapScreen/TrackerService/TrackScreen files that mix UI, service, and I/O concerns, hardcoded English strings in composables, and incomplete translations in several locales. The toolchain is bleeding-edge (AGP 9.4.1, Kotlin 2.4.20, Gradle 9.6, targetSdk 37) but current, so ecosystem drift is low. Several components are genuinely self-contained and liftable into other projects: the GPX builder, azimuth/heading math utilities, the Android sensor event listener, the Compose elevation chart, and unit-conversion helpers. Overall this is a well-executed, honest open-source app with a few reusable gems and moderate technical debt - above-average for its category.
BasicAirData GPS Logger is a mature Android application for recording GPS tracks, managing them locally, and exporting them in GPX, KML, and TXT formats. The app runs a foreground service (GPSService) to capture location fixes in the background, accumulates points into a Track model with computed statistics (distance, speed, altitude gain/loss, activity estimation), and persists everything in a SQLite database via DatabaseHandler. The UI is organized around a main activity with tabs for live GPS status, current track statistics, and the track list, with support for placemarks, track types, multi-select bulk export/share/delete, and extensive settings for units, filtering, export options, and EGM96 geoid altitude correction.