Sensor-Based Personal Weather Diary
AndroidScroll ↓Overview
An Android app that records the weather a person actually experienced by fusing phone-sensor readings with live weather data.
Details
- Role
- Team of 4 — my role: UI, sensors and core logic
- Category
- Android
- Links
- GitHub ↗
- 6sensors fused
- 15–60mbackground snapshots
- ~1 kmmax location precision shared
01 — Sensor Fusion & Context Engine
- Fused 6 sensors (light, proximity, step counter, accelerometer, barometer, location) into a rule-based context engine that infers indoor/outdoor, still/walking/in-vehicle states and sun, heat and rain exposure.
- Kept all rules in a pure-Kotlin domain layer with no Android dependencies, so every threshold is unit-tested on the JVM in seconds; missing sensors degrade gracefully instead of crashing.
02 — Features & Background Processing
- WorkManager snapshots every 15–60 minutes (paused at night and on low battery, offline-tolerant) feed a daily timeline, weather calendar, weekly/monthly insight charts and automatic commute detection.
- Smart alerts (rain, heat, strong sun, falling pressure) with linked to-do tasks, and outdoor plans re-checked against the forecast 3 hours ahead.
03 — Privacy & Release
- Privacy-first: no login, ads or analytics; data stays on the phone and only location rounded to ~1 km reaches Open-Meteo.
- Shipped a signed, R8-shrunk v1.0.0 release with Room migrations and on-device database tests.
Built with
Kotlin / Jetpack Compose / Material 3 / MVVM / Hilt / Coroutines & Flow / Room / DataStore / WorkManager / Retrofit / OkHttp / Play Services Location / Vico Charts / Open-Meteo API / JUnit4 / MockK