carp_mobile_sensing 0.32.3 carp_mobile_sensing: ^0.32.3 copied to clipboard
Mobile Sensing Framework for Flutter. A software framework for collecting sensor data from the phone and attached wearable devices via probes. Can be extended.
0.32.3 #
- added
OneTimeTrigger
as a new trigger type. timestamp
is now enforced on allDatum
objects.
0.32.1 #
- notifications are no longer (re-)send when the app task queue is restored across app restart.
0.32.0 #
- upgrade to
permission_handler: ^8.3.0
- NOTE
- see the permission_handler README on how to set up your app - for example:
- on Android, in
build.graddle
setcompileSdkVersion 31
- on iOS, add permission to your
Info.plist
file and update thePodfile
0.31.4 #
- support for a
ConditionalPeriodicTrigger
which preiodically checks resume/pause conditions (originates from #230). PeriodicTrigger
now required a samplingduration
.- upgrade of
pubspec
libaries (flutter_local_notifications
,cron
, andjson
). - re-generation of json serialization
- still cannot upgrade
permission_handler
since 8.2.0 gives a graddle compile error?????
0.31.0 #
- A CAMS-specific
StudyProtocol
namedSmartphoneStudyProtocol
has been reintroduced (c.f., v. 0.30.0). It turned out that there are several things which needs to be configured as part of a study protocol, which the genericStudyProtocol
from carp_core doesn't support. The newSmartphoneStudyProtocol
supports specifying:- The
StudyDescription
describing the study including the researcher responsible for the study. - The
DataEndPoint
specifying where and how to upload data.
- The
- The
SmartphoneDeploymentService
is updated to handle the newSmartphoneStudyProtocol
. StudyDescription
now also supports specifying the URL of a study description and the privacy policy.
0.30.6 #
- separate method for asking permissions in
SmartphoneDeploymentController
- bug fix of #215 - notifications can now be enabled/disabled in the
configure
method of theSmartphoneDeploymentController
.
0.30.5 #
- all deployment information is now stored in a folder named
<local_application_path>/carp/deployments/<study_deployment_id>
wherelocal_application_path
is the folder where an application can place files that are private to the application.- On iOS, this is the
NSDocumentsDirectory
and this can be accessed like accessing files on iOS via the Finder. - On Android, Flutter files are stored in the
AppData
directory, which is located in thedata/data/<package_name>/app_flutter
folder. Files can be accessed via AndroidStudio.
- On iOS, this is the
0.30.4 #
- added support for the
DeploymentDelayedTrigger
Settings
now have support for storing deployment information across app restart- added local notifications to an
AppTask
0.30.3+2 #
- small updates to
Settings
- fixed a bug in path to json files in
FileDataManager
- improvement to saving task list across app re-start
CAMSMasterDeviceDeployment
renamed toSmartphoneDeployment
(to allign with the other naming usingSmartphone
)StudyProtocolDescription
andStudyProtocolReponsible
renamed toStudyDescription
andStudyReponsible
- fix of bug in storing app tasks in
AppTaskController
- updates to example apps
0.30.1 #
DebugLevel
is now an enum- support for persistenly storing
AppTask
s on theAppTaskController
queue across app re-start
0.30.0 #
- upgrade to null-safety,
carp_core
v. 0.30.0 CAMSStudyProtocol
is no longer used and is replaced byStudyProtocol
incarp_core
- fix of bug in
RandomRecurrentTriggerExecutor
(Issue #202)
0.21.5 #
- rename of
ProtocolOwner
toStudyProtocolReponsible
(in order not to confuse it withownerId
inStudyProtocol
)
0.21.4 #
- small bug fixes
- upgrade to
carp_core 0.21.4
0.21.3 #
- NOTE -
DataEndPoint
is no longer specified as part of aStudyProtocol
.- Specifying where and how to store or upload data is really not part of specifying a study protocol, but rather a deployment issues. Therefore, the
DataEndPoint
is now part of aMasterDeviceDeployment
. - The
SmartphoneDeploymentService
will use theFileDataEndpoint
per default if not specified in the deployment. Hence, data is saved as files on the phone. - The
StudyDeploymentController.configure()
method now takes an optionalDataEndPoint
parameter to specify the data endpoint, if it should be different to what is specified in the deployment. - The
StudyDeploymentController.configure()
method also takes aaskForPermissions
parameter - iffalse
, then CAMS will not ask for permissions, but hands this over to the app, which can show appropiate information to the user.
- Specifying where and how to store or upload data is really not part of specifying a study protocol, but rather a deployment issues. Therefore, the
- settings are now a singleton accessed using
Settings()
(similar to other singletons in the framework) - better support for handling json functions
0.21.2 #
- update to
carp_core
v. 0.21.2
0.21.1 #
- update to
carp_core
v. 0.21.0
0.21.0 #
- update to
carp_core
v. 0.21.0 client domain model - support for using a
SmartPhoneClientManager
for executing multiple studies - adjusted examples and example app to use the carp_core_client domain model
0.20.4 #
- removed localization support again - this has to be handled on an application level, not as part of sensing.
- removed the
ConsentSection
also - again, this is separate to sensing.
0.20.3 #
- update to
carp_core
v. 0.20.3 (json serialization)
0.20.0 #
- BREAKING: Now using the
carp_core
domain models in order to align with the overall domain-driven design of CARP. - This has an impact on the naming used in the API. The most important changes are:
Study
is now calledStudyProtocol
and a CAMS-specific protocol calledCAMSStudyProtocol
is availablePrincipalInvestigator
is now calledProtocolOwner
Task
is now calledTaskDescriptor
Device
is now calledDeviceDescriptor
ManualTrigger
is now calledPassiveTrigger
ScheduledTrigger
is now calledDateTimeTrigger
Measure
is now calledCAMSMeasure
(butMeasure
is part ofcarp_core
)
- A
StudyProtocol
now uses the concept of aTriggeredTask
which is slightly different to the previousStudy
model. See the example. - A
CAMSStudyProtocol
now supports localization. AStudyProtocolDescription
and a list ofConsentSection
can be added to a protocol for each locale (i.e., language code). - Similarly, measures now also supports localization. For each
CAMSMeasure
there is the option to specify itsMeasureDescription
for each locale. - All json serialization of a protocol now use
camelCase
instead ofsnake_case
to be consistent withcarp_core
in Kotlin.- Note, however, that
DataPoint
objects are still serialized assnake_case
json.
- Note, however, that
- All the
events
streams are now calleddata
and streamsDataPoint
data objects (instead of just theDatum
data objects). - The
DataPoint
comply to version 1.2 definition (Issue #162)
0.12.3 #
- extension of
Study
to includepurpose
,title
andPrincipalInvestigator
0.12.2 #
- support for canceling
UserTask
0.12.1 #
- small refactor for
Device
model.
0.12.0 #
- feature: support for handling devices as part of a study configuration.
- refactor: rename of
Device
toDeviceInfo
0.11.1 #
- feature: support for storing and retrieving study json protocols on the local file system.
- refactor: the
deploymentId
has been removed fromStudy
since this is CARP specific info.
0.11.0 #
- refactor: improved (de)serialization in the
Serialization
class. - refactor: named constructors in the
Study
andMeasure
classes. - feature: support for handling local settings on the phone in the
Settings
. - feature: added
description
property toMeasure
. - feature: added support for an
AppTask
can expire, i.e. be removed from the queue. - fix: issue #139
- fix: issue #140
0.10.1 #
- fix: issue #123
- based on issue #134
the following measures has changed
periodic_accelerometer
andperiodic_gyroscope
has been added- the "old"
accelerometer
andgyroscope
measures are made to run continously - This implies that they need to be started and stopped using a
Trigger
instead. - This, however, open up for triggering the collection of accelerometer data as part of an
AppTask
. For example, sampling accelerometer data while a Parkinson's patient fill in a survey.
0.10.0 #
- BREAKING: a new
AppTask
model is implemented- see documentation on the CAMS wiki.
- see the Pulmonary app for an example on how to use this new model.
- fix: issue #98
- fix: issue #114
0.9.5 #
- feature: added the
validNextState()
method to theProbe
class, which checks if a probe can be move to a next state. - fix : issue #112
- this means that the
initialize()
method is no longer aFuture
(and hence cannot be awaited)
- this means that the
0.9.4+1 #
- fix: issue #106.
- fix: fix of race condition in
FileDataManager
- fix: small error in monthly recurrence in
RecurrentScheduledTrigger
- refactor:
Device()
is now a singleton.
0.9.3 #
- refactor: all singleton adhering to the Dart Singleton Pattern.
SamplingPackageRegistry
ProbeRegistry
TransformerSchemaRegistry
DataManagerRegistry
- fix: fixed issue #100
- feature: support for the
CronScheduledTrigger
that takes a cron expression for scheduling
0.9.2 #
- fix: error in screen probe
- refactor: small pedantic formatting issues
- refactor:
TransformerSchemaRegistry
andSamplingPackageRegistry
are now accessed using an instance singleton
0.9.0 #
- refactor: new polymorphic JSON serialization using
$type
for class type identifier. - docs: update of documentation and examples (#92)
0.8.8 #
- feature: support for saving ("remembering")
RecurrentScheduledTrigger
across app shutdown (#80)
0.8.6 #
- update: updated to the new pedometer API
0.8.5 #
- refactor: removed the Apps package and moved this to an external package
0.8.2 #
- refactor: converted from a plugin to a package by overhauling the project
0.8.1 #
- feature: support for Deployment ID in
Study
. - update: upgrade to
screen_state
v. 1.x - update: upgrade to Android Embedding v2.
0.8.0 #
- using the Dart
Duration
class in many places where duration previously was specified using miliseconds. - added the
MarkedMeasure
class for creating measures that collect all measures since last time data was collected. Useful for collecting things like log entries and health data. - added the
settings
global variable providing access to:SharedPreferences
PackageInfo
, and- a method for getting a unique, persistent user id
0.7.2 #
- added support for better logging using the
DebugLevel
settings
0.7.1 #
- Added
trigger_id
to theTrigger
class. - Made
Task
abstract rather than deprecated. - Fixed issue #61.
0.7.0 #
- BREAKING: this release break some parts of the previous API.
- Extended Task model -- introduction of a
AutomaticTask
andAppTask
. - Added support for "manually" adding data points (
Datum
) and errors to the data stream (events
). This is part of theStudyExecutor
API. - The
start()
method on all executors (probes, and study, trigger & task executors) has been removed. Now an executor is 'started' by resuming it (callingresume()
). - Fixed a bug in
BufferingPeriodicStreamProbe
. - Added the
FileDatum
data type which can hold a reference to a file. For example, an audio file (see thecarp_audio_package
).
0.6.5 #
- upgrade to
persmission_handler
v. 5.x
0.6.3 #
- moved the
connectivity
sampling package to an externalcarp_connectivity_package
due to issue#46.
0.6.2 #
- intensive test of data upload to CARP and Firebase on both Android and iOS
- support for retry in upload of data to CARP
- handling that a study id can only be an integer in the CARP web services
0.6.1 #
- Thorough testing on iOS.
- Better handling of probes not available on iOS via the
initialize
method. - Centralized concept for handling permissions.
0.6.0 #
- Extension of
Study
domain model to include support forTrigger
, which manages the temporal triggering of data sampling. See the documentation on how to defined a study with triggers. - Adjustment of runtime environment to reflect the new study model
- Addition of a
TriggerExecutor
- Update to
Executors
, i.e.StudyExecutor
,TaskExecutor
andProbe
- Addition of a
- The data manager model has been updated
- A
DataManager
now expose a stream of stateevents
as defined inDataManagerEventTypes
- A
DataManager
now has atype
which is a string as defined inDataEndPointTypes
- These changes are also implemented for the file and CARP data managers.
- A
- Minor refactoring
- Apps and AppUsage are no longer periodic measure, but one-off measures. Hence, use the new trigger model to sample installed apps and their usage e.g. on a daily basis.
- The
BluetoothDatum
now lists all devices found in a scan. - The pedometer now works as a simple step stream which sense and report each step taken.
datastore
library have been renamed todata_managers
.
0.5.1 #
- Update of readme file.
0.5.0 #
- BREAKING This version has been migrated from the deprecated Android Support Library to AndroidX.
This should not result in any functional changes, but it requires any Android app using this plugin to also
migrate if they're using the original support library.
- See Flutter AndroidX compatibility
- Fixed error in
PedometerProbe
0.4.0 #
- support for data transformers
- OMH Geolocation
- OMH PhysicalActivity
- support for privacy schema
- added support for hashing bluetooth names in the bluetooth package
- upgrade to json_serializable v.2
0.3.10 #
- minor change to the
StreamProbe
API - now non-static streams can be used by implementing theget stream
method. - update of the relevant sampling packages using
StreamProbe
0.3.8+9 #
- update and rename of
CARPDataPoint
toDataPoint
to reflect new CARP API. - moved CARP web service specific data model to
CARPDataPoint
to thecarp_webservices
package.
0.3.5+7 #
- rename of
packages
folder tosampling_packages
(seems like Dart Pub don't like folders calledpackages
) - rename of
core
folder todomain
0.3.3 #
- update to new versions of CACHET Flutter Plugins
- rename of
probes
folder topackages
- upgrade and test on Flutter v. 1.3.4 Dart v. 2.2.1
0.3.2 #
- support for dividing probes into separate sampling packages
- included in
carp_mobile_sensing
aredevice
(device, screen, memory, battery)sensors
(sensors, light, pedometer)connectivity
(connectivity, bluetooth)apps
(installed apps, app usage)
- implementation of the following external probe packages:
communication
(sms & call log)context
(location, activity, weather)audio
(noise, audio recording)movisens
(Movisens Move/ECG devices)
0.3.1 #
- small updates to the data format incl. documentation on the wiki.
- fixed error in the
stop
method.
0.3.0 - Domain Model update #
- major updates to the domain model as a
core
libraryMeasure
now have aconfiguration
- simplification to probe implementations
- all probes now uses the Dart
Stream
API and supports a reactive programming model - all probes adjusted to a stream model
- implementation of
SamplingSchema
architecture - support for power-aware sampling using different sampling schemas
0.2.6 #
- fixed small bug in
weater
probe.
0.2.5 #
- small bug fixes in connectivity datum model (to work w. `carp_firebase_backend).
weather
probe added.
0.2.4 #
- error in
light
probe fixed. noise
probe added.- using the
carp_core
domain model
0.2.3 #
- fixed error in
readme
file.
0.2.2 #
phone_log
probe addedaudio
probe addedactivity
probe added- improvement to
readme
file onmanifest.xml
andInfo.plist
.
0.2.1 #
- re-organization of github location and outline
- improvements to
FileDataManager
to avoid race conditions - improved API documentation
0.2.0 #
- refactor of organization of classes into libraries
- complete API documentation
0.1.1 #
- small improvements incl. documentation
0.1.0 #
- removal of all remote backend code to separate packages
0.0.1 #
- Initial version by Jakob E. Bardram
- Transferring the old implementation to this carp.sensing-flutter framework
- General refactor and clean-up