CARP Mobile Sensing
A new major release of CARP Mobile Sensing is now available (version 0.40.0). This release has a number of new and improved features:
- Persistent sampling across app re-start – since the operating systems (both Android and iOS) are increasingly killing apps when running in the background, there is now much better support for handling app re-start. This entails that the state of sampling is persistently save on the phone, so that when the app restarts, it will resume sampling where it was killed. Of course, we can’t avoid gabs in sampling, when the OS kills the app, but at least sampling is resumed when the app is restarted.
- Notification support – an important way to support that apps are restarted when a user needs to provide input (using an
AppTask) is to use notifications on the phone. When the user clicks a notification, the OS will restart the app and redirects the user to the app. See the CAMS wiki section on how to create an AppTask and how to make use of notifications as part of this.
- Study protocol improvements – the way the Study Protocol is configured has changed slightly to resemble the Study Protocol domain model in the newly released version 1.0.0 of the CARP Core Framework (Note, however, that CAMS is not yet updated to version 1.0.0 of CARP Core – this will happen in the next release). This entails that the way a
SamplingSchemais configured has been changed.
- SQLite support – CAMS now has built-in support for storing data in a SQLite database locally on the phone. This will replace/supplement the old File data endpoint, which has performance and scalability issues, once running large high-throughput sampling studies.
Polar Device Integration
carp_polar_package sampling package has been released. This package supports data collection from the Polar devices, more specifically;
Depending on the device, the following CAMS Measures are supported:
- Electrocardiogram (ECG)
- Pulse-to-Pulse Interval (PPI)
- Photoplethysmograpy (PPG)
- Heart rate
// define the Polar device and add its measures PolarDevice polar = PolarDevice( identifier: 'B5FC172F', name: 'Polar H10', polarDeviceType: PolarDeviceType.H10, roleName: 'polar-h10-device', ); protocol.addConnectedDevice(polar); protocol.addTriggeredTask( ImmediateTrigger(), BackgroundTask() ..addMeasure(Measure(type: PolarSamplingPackage.POLAR_HR)) ..addMeasure(Measure(type: PolarSamplingPackage.POLAR_ECG)) ..addMeasure(Measure(type: PolarSamplingPackage.POLAR_PPG)) ..addMeasure(Measure(type: PolarSamplingPackage.POLAR_PPI)), polar);