🎯 Mobile Engineering Challenge
Hybrid WebView apps frequently suffer from silent audio failure: mobile OS aggressive power management suspends WebView JavaScript timers, cutting off turn-by-turn spoken guidance right before highway junctions.
🔊 Unblockable Quad-Redundant Native Voice Bridge
To guarantee voice synthesis never drops while driving across Canterbury highways:
- Synchronous Prompt Intercept:
BridgeWebChromeClient.onJsPromptcatches voice commands synchronously without async queue stalls. - Capacitor NativeTTSPlugin: Bypasses the HTML5 Web Speech API directly into Android’s low-level
TextToSpeechengine. - Dedicated Background Threading: Dispatches TTS audio tasks off the main UI rendering thread to eliminate frame stutters.
- AudioManager Audio-Ducking: Automatically monitors
STREAM_MUSICvolume and temporarily ducks background podcasts/music during navigation turns.
📱 Standalone APK Delivery & Android Auto
- Automated CI/CD: Authored
.github/workflows/build-android-apk.ymlto compile, lint, sign, and export standalone Android APKs on every commit. - Field Tested in Canterbury: Installed and verified on physical Android hardware across Christchurch, Rolleston, and Banks Peninsula.
- Android Auto: Full media/navigation projection for vehicle infotainment head units.
💻 Tech Stack & Repositories
- Mobile Runtime: Capacitor 8, Android SDK 35, Java 21, Gradle.
- Mapping & Routing: MapLibre GL, OSRM (Open Source Routing Machine), Overpass API.
- Backend & Gateway: Node.js, WebSockets (for peer convoy sync).
- GitHub Repository: TripMap.git