How it works
The CONTXTFUL SDK
The CONTXTFUL plugin runs the CONTXTFUL SDK as a dependency.
The SDK manages :
Sensor access (Accelerometer, gyroscope, light sensor, magnetometer, etc)
Sensor sampling (time series)
Manipulation of data from sensor (storage and posting to data servers)
Configuration of sampling parameters and timeouts
Status broadcasting to listening handlers in other services
All this is executed in low level code running in dedicated async threads within the app or the dedicated service.
The Sensor sampling
The CONTXTFUL SDK has access to the non-private sensors through the standard Android NDK library. As such the permission for the sensor access has to be given in the Android project through the xml configuration.
This configuration might activate a permission request at installation from the user.
The Machine Learning
The sensor data is processed by the A.I. Engine within the SDK to generate contextual information. While the sensor data in his raw format doesn’t allow you to understand the nature of the context, the processed information is exposed as clear states such as STANDING
, device IN HAND
and in a BUS
.
In some configuration, the processing is done after the fact for statistical analysis but in most configuration the processing is done in real time by the CONTXTFUL A.I. engine.
Communication to servers
The CONTXTFUL SDK requires access to the CONTXTFUL infrastructure to sync the machine learning modules and to manage data.
The SDK will do async cURL POSTs to request binary assets frequently to have the most up-to-date models.
In some implementation, the SDK will communicate with the CONTXTFUL servers to manage data and allow for in-depth analysis. All communication to servers will be done async, through cURL POSts only when wifi is available to avoid draining mobile data needlessly.
Access to information
The SDK gathers no information on the users, stores no private information or id, and can’t track devices. Each second is treated as a new user for purpose of analysis.
In some configuration, this processed context can be exposed to the app for various purposes, but the SDK remains amnesiac and each user is forgotten as fast as the processing is done.