radar-base@kcl.ac.uk, radar-base@thehyve.nl KCL +44 (0)20 7848 0924; The Hyve +31 (0)61 169 6842

The RADAR-base Passive Mobile App is the hub for collecting background sensor data and provides data streams from both on-phone sensors (below) and the capability to collect data from a number of wearable devices. New wearable devices can readily be connected to the passive app as plugins using a vendor SDK.

The boxes below contain descriptions of available passive phone sensors. Besides the phone sensors we also support the data sensors of an increasing list of devices. For the current overview, please see the Supported Devices.

The schemas with all data fields retrieved from the smartphone sensors can be found here: https://github.com/RADAR-CNS/RADAR-Schemas/tree/master/commons/passive/phone

Relative location

Collects the relative degrees of latitude and longitude data from GPS and/or the Android Network Location Provider (using cell tower and WiFi signals). To ensure participants privacy, the absolute location is converted to a location relative to an unspecified reference offset. No absolute location data is streamed to or stored on the server. Besides the coordinates, the module also collects altitude (relative), speed, bearing and the accuracy of the location.

Location data can be used to derive information about the mobility of participants and determine commonly visited locations.

Avro schema: phone_relative_location
Note on relative coordinates

A problem caused by randomly shifting coordinates to a different origin, is that distances between these coordinates cannot be calculated accurately. A degree travelled at the equator is a different distance than in the Arctic. The longitude is made relative to the first longitude reported for that participant. The latitude however, is only shifted by a random number of degrees between -4 and 4. This means that for a received relative location, the actual location will be within a 8 degree latitude band around the earth. The 8 degree latitude band corresponds to a UTM latitude band, which allows for a good approximation of the actual distance. See for more information: https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system


Collects the raw acceleration values from the 3-axis accelerometer with the gravitational constant (g ≈ 9.81m/s) as unit. By default, the values are collected in roughly 200 millisecond intervals. The values include the gravitational acceleration. For a device at rest, the magnitude of acceleration is therefore approximately 1g. The acceleration can be used to assess general activity as well as analyse movement in more detail, e.g. the gait of participants.

Avro schema: phone_acceleration


Collects the raw gyration values from the 3-axis gyroscope in radians per second (rad/s).  By default, the values are collected in 200 millisecond intervals. The gyration reports the rotation of the device over one of the three axes. The gyration can be used to analyse movement, e.g. the gait of participants.

Avro schema: phone_gyroscope

Magnetic Field

Collects the raw magnetic field from the 3-axis magnetometer. By default, the values are collected in 200 millisecond intervals and have micro Tesla (µT) as unit. Without the presence of other magnets, the sensor measures the earth magnetic field. This can be used, together with the acceleration and gyration, to determine the position of the device.

Avro schema: phone_magnetic_field

The acceleration, gyration and magnetic field sensors follow the Android sensor coordinate system: https://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-coords

Step count

Reports the number of steps taken since the previous step count record. In most cases the number is one, which means that every single step will produce a record. The phone derives the step count either from the accelerometer and magnetometer or gyroscope, depending on the availability. The step count can be used as a generic proxy for activity and to approximate distance walked.

Avro schema: phone_step_count


Reports the light intensity from the light sensor in luminous flux per unit area (illuminance, lx). The illuminance is captured if the value changes. This means that when e.g. the light sensor is covered, no values are reported after an initial 0 lx. The light intensity can be used to determine whether the participant is inside in a dark room (e.g. bedroom), illuminated room or outside.

Avro schema: phone_light

Interaction state

Collects the phone interaction state from the Android system. Every phone lock (standby), unlock and shutdown is recorded from respectively the ACTION_SCREEN_OFF, ACTION_USER_PRESENT and ACTION_SHUTDOWN intents broadcasted by the system. Also the phone startup is collected by listening for the first action since a shutdown.

This data can be used to retrieve the total time the phone was used per time period. In conjunction with the application usage, this gives a complete view of the participants phone use.

Avro schema: phone_user_interaction

Application usage

Collects opening and closing of installed phone applications. To be more specific, this module listens for the ‘move to foreground’ and ‘move to background’ events for every application. For every event, the package name of the app and event type is registered. The app category, as given by the Google Play Store, is added to the record in the Kafka backend. In addition, the package name can be removed to protect the privacy of the participant.

The application usage events give insight in the app use of the participant. Metrics like number of apps used and total app usage time per category can be derived from this data.

Avro schema: phone_usage_event

Call log

Collects ingoing and outgoing calls. The duration of each call, the phone number of the caller and whether the caller is a contact is captured. The phone numbers of callers are hashed, such that the actual numbers are concealed. Also the actual call audio is not stored.

The call log provides a measure for communication and social interaction. Metrics like the number of different contacted persons can be derived.

Avro schema: phone_call

SMS log

Collects received and send text messages. The length of the message, the phone number of the sender/receiver and whether the sender/receiver is a contact is captured. In addition, the number of unread messages is, by default, collected every day. The phone numbers of callers are hashed, such that the actual numbers are concealed. Also the actual content of the message is not stored.

Similarly to the call log, the SMS log provides a measure for communication and social interaction. Note that the SMS log does not include messages send via other messaging services.

Avro schema: phone_sms, phone_sms_unread

Contact list

Collects the current number of contacts in the phone’s contact list and the changes since the previous check. By default, the data is collected every day. This only includes the phone’s native contact application.

Tracking the number of contacts can be used to monitor new social interactions a participant might have had.

Avro schema: phone_contact_list

Bluetooth devices

Collects the number of paired and nearby Bluetooth devices. By default, the data is collected every hour. As most phones have Bluetooth, the number of nearby Bluetooth is a proxy for the number of people are in the vicinity of the participant. This should be used with care however, because also most other, non-person bound, devices have Bluetooth capabilities. For instance nearby printers and laptops are also counted.

Avro schema: phone_bluetooth_devices

Battery level

Collects the phone battery level and charging status upon change. It can for instance be used to help determine when the participant is traveling and when he/she is home, depending on the charging status. The battery level is only reported when it changes.

Avro schema: phone_battery_level

Local Weather

Plug-in ‘radar-android-weather’.

Reports the current local weather conditions. By default, the data is collected every 3 hours from the OpenWeatherMap API. The phone GPS or network coordinates are used to request data for the location. The following weather information is captured:

• ambient temperature in degrees Celsius (C)

• atmospheric pressure in hectoPascal (hPa)

• humidity in percentage (%)

• cloudiness in percentage (%)

• precipitation in millimeter rain/snow (mm)

• condition type

• sunrise and sunset in minutes after midnight (to calculate total minutes of daylight)

The weather conditions can be used to relate participant activity and/or mood to outside conditions. 

Note: this data is sensitive, as it can be used in combination with e.g. relative location to improve the approximation of the participants location.

Avro schema: local_weather

Information on the pRMT application and connected server. Used for monitoring the connection.

RADAR-base Support for iOS

Separate Android and iOS versions of the Passive Data Collection app have been developed as part of RADAR-base, however, there are substantial differences in the mobile sensors available on iOS, in particular, these may be more sparse in iOS due to lack of background collection capabilities:

Cite RADAR-base: RADAR-base: An Open Source mHealth Platform for Collecting, Monitoring and Analyzing Data Using Sensors, Wearables, and Mobile Devices.
Ranjan Y, Rashid Z, Stewart C, Begale M, Verbeeck D, Boettcher S, Dobson R, Folarin A, The Hyve, RADAR-CNS Consortium. URL: https://mhealth.jmir.org/2019/8/e11734/ DOI: 10.2196/11734 PMID: 31373275