$ show BasicAirData/GPSLogger
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.
The LLM identified 4 files worth highlighting for reuse:
Self-contained singleton that loads a binary EGM96 geoid grid (1440x721) into memory and performs bilinear interpolation to compute altitude corrections. It handles background loading, file copying from assets, and is directly reusable in any project needing precise geoid-based altitude adjustments.
A small, isolated filter object that detects altitude spikes in a GPS time series using vertical acceleration and a stabilization window. It is a clean, reusable validation routine for cleaning noisy sensor data before further processing or export.
Centralized utility for converting and formatting physical measurements (distance, speed, altitude, bearing, duration, coordinates) across metric, imperial, and nautical unit systems. It is decoupled from the rest of the app and can be lifted into any Android or Java project requiring consistent unit-aware string formatting.
Exports a single track to KML/GPX/TXT using a producer/consumer pipeline: an AsyncGeopointsLoader reads location rows from SQLite into an ArrayBlockingQueue while the exporter writes them in chunks, decoupling I/O and preventing memory blowup. It also applies EGM96 altitude corrections during export, demonstrating a reusable pattern for streaming large dataset conversions.