You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A .NET MAUI mobile application for iOS and Android that records GPS coordinates and exports them as KML or GeoJSON files. Track your trips with check-in/check-out sessions, monitor battery and GPS data, and deliver exports via email, Azure Blob Storage, system share, or local storage. Also supports Apple CarPlay and Android Auto for hands-free recording control.
Features
GPS Tracking
Real-time GPS listening with high-accuracy requests via Shiny.Locations
Records latitude, longitude, accuracy, speed (m/s & km/h), and timestamp for each reading
Android foreground service notification keeps recording active in the background
Trip Management
Check-in starts a new trip session (generates a unique WorkId)
Check-out ends the current session
All GPS pings are grouped by trip
Export filtering by individual trip or all trips at once
Trip labels display start time, end time, and point count
Export Formats
KML 2.2 — Document structure with styled point placemarks (circle icons, labels) and a track LineString showing the route. Point descriptions include accuracy, speed, battery level, and timestamp.
GeoJSON — FeatureCollection with Point features and a LineString track. Properties include timestamp, accuracy, speed, battery level, battery status, and energy saver state.
Export Delivery Methods
Local — Save the exported file to the device
Email — Attach the file to an email using the platform email service
Share — Open the system share dialog
Azure Blob Storage — Upload via PUT request with a SAS token (auto-detects content type)
Battery & System Monitoring
Tracks battery level, charge state (Charging / Discharging / Not Charging / Full / Unknown), and energy saver status alongside every GPS reading
GPS permission status displayed on the main screen
Settings Persistence
Selected trip, export format, delivery method, Azure credentials, and email settings are saved to app preferences and persist across restarts
CarPlay & Android Auto
Apple CarPlay — Grid template with a Start/Stop recording button; updates live as recording state changes
Android Auto — Pane template with a Start/Stop action button via AndroidX Car App library
iOS Home Screen Widget
Interactive medium widget — Displays current tracking status (Recording / Stopped) with elapsed time
One-tap toggle — Start or stop a recording session directly from the home screen
State shared between the app and widget via App Groups (group.org.shinylib.kmlrecorder)
Widget timeline automatically refreshes when tracking state changes
Android Home Screen Widget
Medium widget — Displays current tracking status (Recording / Stopped) with elapsed time
One-tap toggle — Tap the play/pause button to open the app and toggle tracking
Widget automatically refreshes when tracking state changes
Apple Watch Companion App
Native SwiftUI watchOS app — Shows current tracking status with elapsed time
Check In / Check Out button — Toggle tracking directly from your wrist
Communicates with iPhone app in real-time via WatchConnectivity
Status updates pushed automatically when tracking state changes on the phone
Pages
Page
Description
Main
GPS recording control — Check-in / Check-out toggle, session status, GPS permission state, navigation to Logs & Settings
Logs
Displays all recorded GPS points with timestamps, coordinates, accuracy, battery level, and energy saver status
Export
Shows GPS point count, export status summary, Export Now button, and Open Export Folder
Export Settings
Configure trip selection, export format (KML / GeoJSON), delivery method, Azure Blob credentials, and email settings; includes a Reset option