A modern Android step tracking application built with Jetpack Compose and Kotlin.
- Real-time Step Detection - Tracks steps using accelerometer sensor with intelligent detection algorithms
- Distance Calculation - Estimates distance using stride length derived from height/gender or GPS calibration
- Background Tracking - Foreground service keeps tracking when app is minimized
- Session History - Stores and displays past walking sessions with detailed statistics
- GPS Calibration - Optional GPS-based stride length calibration for improved accuracy
- Modern UI - Built with Jetpack Compose and Material Design 3
- Language: Kotlin
- UI: Jetpack Compose
- Architecture: Clean Architecture with MVI/MVVM
- Dependency Injection: Hilt
- Database: Room (SQLite)
- Charts: Vico
- Build System: Gradle with Kotlin DSL
- Android 12+ (API 31)
- Compile SDK: 34
- JDK 17
./gradlew assembleDebug # Debug APK
./gradlew assembleRelease # Release APKThe project includes a GitHub Actions workflow that automatically builds the app on push to main/master. The APK is uploaded as an artifact.
app/src/main/java/com/stepcounter/
├── core/ # Core business logic
│ ├── sensor/ # Accelerometer processing, step detection
│ ├── stride/ # Stride length calculation
│ ├── location/ # GPS tracking
│ └── session/ # Walk session management
├── domain/ # Domain models and use cases
│ ├── model/ # Data models (WalkSession, UserProfile, etc.)
│ └── usecase/ # Business use cases
├── data/ # Data layer
│ ├── repository/ # Repositories
│ └── database/ # Room database, entities, DAOs
├── ui/ # UI layer (Compose screens)
│ ├── dashboard/ # Main dashboard
│ ├── history/ # Session history
│ ├── session/ # Session details
│ ├── settings/ # User settings
│ └── navigation/ # Navigation graph
├── di/ # Dependency injection modules
└── service/ # Background services
ACTIVITY_RECOGNITION- Detect stepsACCESS_FINE_LOCATION/ACCESS_COARSE_LOCATION- GPS trackingFOREGROUND_SERVICE- Background step trackingRECEIVE_BOOT_COMPLETED- Restart tracking after reboot
[Add your license here]