Heart Rate Monitoring in Mobile Apps: PPG, BLE, HealthKit

Imagine you're launching a fitness app measuring heart rate. PPG via camera gives ±15 bpm – motion artifacts, glare, iOS frame rate limitations. A BLE sensor loses connection due to incorrect parsing of the Heart Rate Measurement characteristic. HealthKit requires complex permission setup, and Apple

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Heart Rate Monitoring in Mobile Apps: PPG, BLE, HealthKit
Complex
~3-5 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

Imagine you're launching a fitness app measuring heart rate. PPG via camera gives ±15 bpm – motion artifacts, glare, iOS frame rate limitations. A BLE sensor loses connection due to incorrect parsing of the Heart Rate Measurement characteristic. HealthKit requires complex permission setup, and Apple rejects publication due to Section 5.1 non-compliance. We solve these problems in 2–4 weeks turnkey: from frame capture to store publication. Contact us to get a detailed integration plan for your project.

What problems do we solve?

PPG measurement inaccuracy is the main pain: motion artifacts, changing light, flashlight limitations on iOS. BLE integration is also non-trivial: incorrect flag parsing, RR-interval parsing leads to HRV errors. HealthKit/Health Connect – complications with authorization and background collection. We cover each of these layers: from frame capture to publication.

BLE sensors are 5–10 times more accurate than PPG in standard deviation (±1 vs ±10 bpm at rest). For apps aiming at sports monitoring or HRV – only BLE.

How we implement PPG via camera: step by step

  1. Capture video stream: AVCaptureVideoDataOutputSampleBufferDelegate (iOS) or CameraX (Android). 30 fps.
  2. Compute average green channel: take central area – 1/3 of dimensions. Avoid glare.
  3. Filtering: pass signal through bandpass filter 0.67–3.33 Hz (FFT or IIR).
  4. Peak detection: algorithms based on autocorrelation or zero-crossing analysis.
  5. Heart rate calculation: number of peaks in last 5 seconds.
  6. HRV estimation: if required – measure RR intervals (BLE native, PPG indirect).
Detailed heart rate and HRV calculation

Sampling rate 30 fps → time resolution 33 ms. For HR 180 bpm (3 Hz) minimum 6 Hz (Nyquist theorem). We use FFT with Hann window length 5 seconds (150 points). For HRV measure SDNN and RMSSD; on PPG they are less accurate than on BLE.

Why BLE is more accurate than PPG?

Standard Bluetooth LE profile for heart rate sensors (Polar H10, Wahoo TICKR, Garmin HRM):

  • Service UUID: 0x180D (Heart Rate)
  • Characteristic UUID: 0x2A37 (Heart Rate Measurement)

Data comes via Notification. First byte – flags: bit 0 defines format (UINT8 or UINT16), bit 4 – presence of RR intervals.

override fun onCharacteristicChanged( gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, value: ByteArray ) { val flag = value[0].toInt() val isUint16 = flag and 0x01 != 0 val heartRate = if (isUint16) { ((value[2].toInt() and 0xFF) shl 8) or (value[1].toInt() and 0xFF) } else { value[1].toInt() and 0xFF } // RR intervals (if present) – for HRV if (flag and 0x10 != 0) { var offset = if (flag and 0x08 != 0) 4 else 3 // skip energy expenditure if present while (offset + 1 < value.size) { val rrRaw = ((value[offset + 1].toInt() and 0xFF) shl 8) or (value[offset].toInt() and 0xFF) val rrMs = rrRaw * 1000 / 1024 // convert from 1/1024 sec to ms rrIntervals.add(rrMs) offset += 2 } } } 

RR intervals are the basis for HRV (Heart Rate Variability) calculation. If your product claims stress monitoring or recovery – RR is a must.

How to test BLE heart rate integration?

Typical mistakes: incorrect flag handling, no reconnection on disconnect, wrong RR-interval parsing. We automate testing on 20+ sensor models (Polar, Wahoo, Garmin, Scosche) to guarantee stable connection and accurate data. Order testing of your integration – get a report in 2 days.

Reading from HealthKit / Health Connect

For apps that don't measure directly but only display data:

let query = HKAnchoredObjectQuery( type: HKQuantityType(.heartRate), predicate: nil, anchor: lastAnchor, limit: HKObjectQueryNoLimit ) { _, samples, _, newAnchor, _ in self.lastAnchor = newAnchor let bpmValues = (samples as? [HKQuantitySample])?.map { $0.quantity.doubleValue(for: HKUnit(from: "count/min")) } ?? [] } healthStore.execute(query) 

Data comes from sources: Apple Watch Series 4+ provides heart rate every 5–15 minutes at rest and every second during workout.

Visualization

For real-time heart rate graph: circular buffer of last N values, update every second. On iOS – Charts (DanielGindi) or Swift Charts (iOS 16+). On Android – MPAndroidChart or Compose Canvas with custom drawing.

Heart rate zones calculated from max heart rate (220 minus age or Karvonen formula with resting HR):

Zone % of max Color
1 – Recovery 50–60% Gray
2 – Aerobic base 60–70% Blue
3 – Aerobic 70–80% Green
4 – Anaerobic threshold 80–90% Orange
5 – Maximal 90–100% Red
Max heart rate formula

Most common formula: 220 minus age (men) or 226 minus age (women). For more accurate calculation, Karvonen formula: HRmax = 220 - age for untrained, for athletes – 205.8 - 0.685 * age.

What's included in turnkey heart rate monitoring development?

  • Requirements analysis and method selection (camera/BLE/platform or combination)
  • Data collection implementation with cleaning and filtering
  • Processing algorithms (FFT, peak detection, HRV)
  • Visualization (graph, zones, statistics)
  • HealthKit / Health Connect integration (read and write)
  • Background mode and notifications
  • Testing on real devices and sensors (including Fitbit, Garmin, etc.)
  • Architecture documentation, build configuration, store submission assistance

Our experience and metrics

We have many years of experience in mobile development. Completed 50+ projects with heart rate monitoring, integrated HealthKit into 30 apps. Portfolio includes integrations with Polar, Wahoo, Garmin, Fitbit, as well as HealthKit and Health Connect. Guarantee stable BLE connection on 20+ sensor models. All solutions pass App Store and Google Play reviews without rejections. Budget savings through algorithm optimization – discussed individually. Get an engineer consultation and preliminary estimate.

Estimated timelines

Stage Duration
PPG measurement via camera (with algorithms) 2–3 weeks
Bluetooth GATT integration 1–2 weeks
HealthKit/Health Connect + visualization 5–8 days
Full turnkey cycle (all methods) from 4 weeks

Cost of each stage calculated individually. Contact us for accurate project estimation – get a step-by-step implementation plan and timeline estimate within 2 days.

Source: Photoplethysmogram and Bluetooth Heart Rate Profile.