Run & Conquer is a local-first Android app for running-based territory capture. Users can record or import runs, save them as activities, and capture map territory when a route forms a valid closed area.
- Open the project in Android Studio.
- Sync Gradle.
- Run the
appconfiguration on an Android 34+ emulator or device.
- Start on Home.
- Tap the red center Activity button.
- Record a run or import a GPX file.
- Save the completed activity.
- Confirm that the run appears in Home and You.
- Open Map -> Territory and verify captured areas and route trails.
- Open Ranking to compare currently held territory.
Run these before the final presentation:
./gradlew testDebugUnitTest
./gradlew assembleDebug
git diff --checkLatest verified locally: 2026-06-29.
- Route previews compose real OpenStreetMap raster tiles (
tile.openstreetmap.org) and draw the run on top. - The preview is static and cached, so the feed keeps the same map feel without embedding a full interactive map.
- On emulator: map previews need internet access; if tiles are unavailable, a local placeholder is shown.
- Ensure the emulator has internet access.
UI -> ViewModel -> RunConquerRepository -> Local Room (Runs, RoutePoints, TerritoryCells, AttackProgress)
GPX imports and live runs use the same repository path, so Home, You, Map, stats, and ranking read from the same central local state.
- Implemented: GPS tracking, GPX import, local activity storage, feed/profile views.
- Implemented: closed-loop territory capture, repeated strength, attacks, takeovers.
- Implemented: territory ranking from all currently held cells.
- Implemented: territory map with filled areas, route trails, and cached viewport loading.
- Out of scope for final submission: backend sync, live friend updates, background tracking.
- Gebiete werden auf einem Raster (ca. 20 m Zellen) berechnet.
- Ein geschlossener Lauf markiert alle Zellen innerhalb der Route als dein Gebiet.
- Jede erneute Umrundung erhoeht die Staerke (bis max. 100).
- Zellen und Staerke werden lokal in Room gespeichert.
- Die UI rendert zusammenhaengende Zellen als groessere Flaechen, damit die Map weniger pixelig wirkt.
- Die gerenderten Flaechen nutzen dieselben Grid-Grenzen wie die Berechnung, damit Route und Fuellung zusammenpassen.
- Alpha / Assignment 3:
MVP_ASSIGNMENT_REPORT.md - Beta / Assignment 4:
BETA_ASSIGNMENT_REPORT.md - Final / Assignment 5:
FINAL_SUBMISSION_REPORT.md - Final requirements:
FINAL_REQUIREMENTS.md - Final test report:
FINAL_TEST_REPORT.md - Release notes:
CHANGELOG.md - Live demo checklist:
FINAL_DEMO_CHECKLIST.md