Repository navigation
Health Connect
Health Connect is Android's on-device health data store. OpenVitals reads records from Health Connect and writes only entries the user explicitly saves, imports, records, edits, or deletes.
OpenVitals does not replace Health Connect and does not keep a separate cloud copy of health records.
OpenVitals can show these Health Connect areas when permission and data are available:
- Activity: steps, distance, exercise sessions, floors climbed, elevation gain, wheelchair pushes, active calories, total calories, speed, power, cadence, planned exercise, and workout routes.
- Sleep: sessions and sleep stages.
- Heart: heart rate, resting heart rate, and HRV.
- Body: weight, height, BMI, body fat, lean mass, basal metabolic rate, bone mass, and body water mass.
- Hydration and nutrition: hydration totals, beverages, calories in, meals, macros, caffeine, and supported nutrients.
- Mindfulness: mindfulness sessions when the installed Health Connect provider supports them.
- Vitals: blood pressure, SpO2, respiratory rate, body temperature, VO2 max, blood glucose, and skin temperature.
- Cycle: menstruation, ovulation tests, cervical mucus, basal body temperature, intermenstrual bleeding, and sexual activity when cycle permissions are granted.
OpenVitals writes to Health Connect only from explicit entry, recording, edit/delete, or import workflows:
- Hydration and beverage entries.
- Nutrition records for explicitly saved carbohydrate totals, caffeine, and selected beverage nutrition defaults.
- Sleep sessions from supported imports.
- Exercise sessions and optional route, distance, elevation gain, active calories, total calories, speed, power, and cadence records where supported.
- Heart rate and resting heart rate from supported imports or recordings where compatible.
- Weight, height, body fat, lean body mass, BMR, bone mass, body water mass, floors climbed, wheelchair pushes, nutrition, VO2 max, blood glucose, and cycle records from supported imports where Health Connect allows them.
- Mindfulness sessions.
- Blood pressure, SpO2, respiratory rate, and body temperature.
Large Apple Health imports run as explicit user-started background work with progress notifications while records are scanned and written.
Records also reach Health Connect from two newer workflows, both user-started and on device:
- A CSV import from Settings, Data Importers, for point-in-time measurements such as weight, body composition, heart rate, and vitals.
- A phone-to-phone sync over Bluetooth, which copies records between two phones running OpenVitals.
Both deduplicate, so running them again does not create duplicate records.
Where Health Connect offers medical records, OpenVitals reads and writes them in the FHIR format:
- Read: vaccines, allergies, conditions, medications, lab results, procedures, visits, vital signs, pregnancy, social history, personal details, and practitioner details. Each category has its own permission.
- Write: records the user imports from a FHIR file or an Apple Health export. OpenVitals deletes only the records and sources it wrote, when the user asks.
Medical records need Android 14 or newer, with a Health Connect module that supports them. Android 13 and older never get them. OpenVitals asks for these permissions only inside its Medical records area, never together with other permissions. See Medical records.
Health Connect may limit how much historical data an app can read unless Health history access is granted.
OpenVitals can request Health history and background-read access where Android and Health Connect support them. Long reads are chunked and spaced out to stay inside Health Connect's rate limits. When Health Connect does refuse a read, the dashboard says so in a banner, counts down, and asks again for the tiles it could not fill; a refusal that repeats makes it wait longer each time. On Android 13, where Health Connect is a separate app with a stricter limit, a fresh install may take a few minutes to fill every tile.
Workout routes are sensitive Health Connect data. Route previews may require manual approval from Health Connect settings.
OpenVitals can import GPX/KML/KMZ route files from Settings Data Importers into activity review, bulk import multiple GPX/KML/KMZ files directly, import FIT and TCX activity, course, or workout files from Settings Data Importers into activity review, import PMTiles or Mapsforge map packs for offline route previews, record GPS routes, open saved routes in map apps, and export routes as GPX or KMZ when route data is available.
- Android 14 and newer include Health Connect as part of the system.
- Android 13 and older normally need the separate Health Connect app.
- Work profiles do not support Health Connect.
- Mindfulness support depends on the installed Health Connect provider version.
- Medical records need Android 14 or newer and a Health Connect module that supports them.
Generated from docs/app/health-connect.md. Edit it there; changes made here are overwritten.
This wiki mirrors the Markdown in Hale-MTU/OpenVitals on every push to main.
Features
- Features
- Achievements
- Activity And Training Plans
- Activity Metrics
- Apple Health Import
- Beverage Logging And Caffeine
- Bluetooth LE Sensors
- Body Energy
- Body Metrics
- CoMaps Navigation Context
- CSV Import
- Cycle Tracking
- Daily Readiness
- Elevation Correction
- Feature Map
- FIT Files Import
- Food Logging
- GPX/KML/KMZ/TCX Route Import
- Health Connect Metrics Dashboard
- Health Report Export
- Heart And Vitals
- Heart Rate Recovery
- Home Screen Widgets
- Hydration
- Manual Entry Of Metrics
- Medical Records
- Metric Detail Customization
- Mindfulness
- Non Health Connect Metrics Dashboard
- Nutrition
- Offline Maps Support
- Onboarding And Permissions
- Preloaded Beverage Nutrition Reference
- Privacy, Support, And Diagnostics
- Recording Of Activity
- Reminders
- Settings And Preferences
- Sleep Score And Recovery
- Sleep Tracking
- Statistics
- Sync With Another Phone
How-to
App
- App Guide
- FAQ
- Getting Started
- Health Connect
- Install
- Local And Connected Editions
- Permissions
- Privacy
- Screenshots
- Support
Reference
- Design Reference
- Reference
- Design Guidelines for Offline & Sync
- OpenVitals UI Notes
- Reference: Data Capture
- Reference: Data Display
- Reference: Health Connect Matchmaking
- Reference: Health Connect Onboarding
- Reference: Health Connect Permissions
- Reference: Health Connect UX
- Reference: Promoting Health Connect
Engineering
- Code Analysis
- Engineering
- Flutter ↔ Kotlin test-parity matrix
- apple-health-import
- Architecture
- body-cycle-recovery
- Design system conformance
- Development
- Feature Playbook
- Flutter -> Kotlin test parity: domain/data/core/contract/state/navigation/di/bootstrap/l10n/widget_test
- Flutter → Kotlin test-parity matrix: features section
- Flutter → Kotlin test-parity matrix: ui / goldens / integration / fixtures
- Flutter-to-Kotlin test-parity matrix — dashboard + devicesync
- manual-entry
- Translations
Proposals
- Proposals
- Activity Start Flow Analysis
- Activity Start Flow Simplification Proposals
- Caffeine Detail And Future Sleep Insights
- Cycle Tracking: Design and Status
- Medical Records Through Health Connect
- Medical Records: What Is Left
Releases
- OpenVitals 2.16.0
- OpenVitals 2.15.2
- OpenVitals 2.15.1
- OpenVitals 2.15.0
- OpenVitals 2.14.5
- OpenVitals 2.14.4
- OpenVitals 2.14.3
- OpenVitals 2.14.2
- OpenVitals 2.14.1
- OpenVitals 2.14.0
- OpenVitals 2.13.0
- OpenVitals 2.12.0
- OpenVitals 2.11.2
- OpenVitals 2.11.1
- OpenVitals 2.11.0
- OpenVitals 2.10.1
- OpenVitals 2.10.0
- OpenVitals 2.9.1
- OpenVitals 2.9.0
- OpenVitals 2.8.0
- OpenVitals 2.7.3
- OpenVitals 2.7.2
- OpenVitals 2.7.1
- OpenVitals 2.7.0
- OpenVitals 2.6.6
- OpenVitals 2.6.5
- OpenVitals 2.6.4
- OpenVitals 2.6.3
- OpenVitals 2.6.2
- OpenVitals 2.6.1
- OpenVitals 2.6.0
- OpenVitals 2.5.0
- OpenVitals 2.4.1
- OpenVitals 2.4.0
- OpenVitals 2.3.2
- OpenVitals 2.3.1
- OpenVitals 2.3.0
- OpenVitals 2.2.8
- OpenVitals 2.2.7
- OpenVitals 2.2.6
- OpenVitals 2.2.5
- OpenVitals 2.2.4
- OpenVitals 2.2.3
- OpenVitals 2.2.2
- OpenVitals 2.2.1
- OpenVitals 2.2.0
- OpenVitals 2.1.0
- OpenVitals 2.0.4
- OpenVitals 2.0.3
- OpenVitals 2.0.2
- OpenVitals 2.0.1
- OpenVitals 1.9.0
- OpenVitals 1.8.0
- OpenVitals 1.7.7
- OpenVitals 1.7.6
- OpenVitals 1.7.5
- OpenVitals 1.7.4
- OpenVitals 1.7.3
- OpenVitals 1.7.2
- OpenVitals 1.7.1
- OpenVitals 1.7.0
- OpenVitals 1.6.3
- OpenVitals 1.6.2
- OpenVitals 1.6.1
- OpenVitals 1.6.0
- OpenVitals 1.5.1
- OpenVitals 1.5.0
Project