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.