mEMA10 Android Sensor Data Guide
The mEMA10 Android app passively collects sensor data from the participant's phone using event-driven recording. Unlike aggregated sampling, each row in the data represents an individual sensor event — a change in value or a state transition. This provides high-resolution, objective contextual information about the participant's environment and phone usage without requiring any manual input.
All sensor readings are timestamped and uploaded automatically alongside survey responses.
Sensors collected
The following table describes each sensor, the range of values it can produce, when readings are collected, and what those readings represent.
Sensor | Possible values | When collected | Description |
ambientLight | 0 to ~266+ lux (continuous) | On change, at least every ~8 seconds while the screen is on | The ambient light level measured by the phone's light sensor, reported in lux. Higher values indicate brighter environments — for example, ~50–80 lux is typical indoors, ~100+ lux near windows, and ~200+ lux outdoors or under bright artificial lighting. |
screenBrightness* | 0 to 255 (integer) | Recorded alongside each ambient light or proximity event | The current screen brightness setting at the time of the event (Android system value). 0 = dimmest; 255 = brightest. Values of 25–28 indicate a low brightness setting. |
proximity | 0 or max range (e.g., 5) | On change — when something approaches or moves away from the sensor | The proximity sensor reading. 0 = something is close to the sensor (e.g., phone held to ear, face down, or in a pocket). 5 (or the device's max range) = nothing near the sensor. Transitions between 0 and 5 indicate the phone being picked up, put down, or held to the ear. |
screenLock | 0 or 1 | On state change | Indicates a screen lock or unlock event. 1 = screen was just locked (screen off). 0 = screen was just unlocked (screen on). Each row is a discrete event, not a percentage. |
screenOnDuration | 0+ (seconds) | When the screen turns off | The total number of seconds the screen was continuously on before it turned off. Recorded once per screen-off event. |
appForeground | 0 or 1 | On state change | Indicates whether the mEMA app entered or left the foreground. 1 = app became visible to the user. 0 = app moved to the background (user switched to another app or locked the phone). |
appForegroundDuration | 0+ (seconds) | When the app leaves the foreground | The total number of seconds the mEMA app was continuously in the foreground before the user navigated away. Recorded once per background event. |
*screenBrightness - On Android, Settings.System.SCREEN_BRIGHTNESS should return 0–255. However, some manufacturers (notably Samsung and some Android 13+ devices) use extended brightness ranges — Samsung devices with "Extra Brightness" can report values up to ~4095 (12-bit) or even higher, and some OEMs use non-standard scales. The values over 1000 are likely raw values from such devices being passed through without normalization.
Sensors not collected
Several sensors that may have been available in the past but are not collected on mEMA10 Android. The reasons are consistent with the iOS version of the app:
Orientation — the mEMA app is locked to portrait mode, so orientation data does not change meaningfully and is not collected.
Amplitude (microphone) — audio amplitude data is not collected in order to protect participant privacy.
Humidity, temperature, and barometric pressure — modern smartphones no longer include environmental sensors of this type. These are not available on participant devices.
Data interpretation examples
Because the Android format is event-driven rather than time-windowed, each row captures a specific moment of change. The examples below show how to read sequences of events together to reconstruct participant behaviour.
Phone usage session
Combining appForeground, appForegroundDuration, screenLock, and screenOnDuration lets you reconstruct how a participant interacted with their phone during a given period.
Time | Sensor | Value | Likely interpretation |
11:09:16 | appForeground | 1 | The participant opened the mEMA app. |
11:09:21 | appForegroundDuration | 5 | The participant spent only 5 seconds in the app before switching away. |
11:09:21 | appForeground | 0 | The app moved to the background. |
11:10:34 | screenLock | 1 | The participant locked the phone (screen turned off). |
11:10:34 | screenOnDuration | 42 | The screen had been on for 42 seconds total before being locked. |
In this sequence, the participant briefly opened the app for 5 seconds (possibly checking a notification), then used other apps for about 37 more seconds before locking the phone.
Proximity — detecting phone-to-ear or pocket events
The proximity sensor can identify when the phone is held close to the face or placed in a pocket. Sustained readings of 0 may indicate a phone call; rapid transitions suggest the phone is being handled or repositioned.
Time | Sensor | Value | Likely interpretation |
11:08:17 | proximity | 0 | Something is close to the sensor — phone may be held to the ear or placed face down. |
11:08:17 | proximity | 5 | Sensor cleared almost instantly — brief contact, likely the participant picking up the phone. |
14:18:34 | proximity | 0 | Phone near face or in pocket. |
14:18:35 | proximity | 5 | Cleared again. |
14:18:37 | proximity | 0 | Another close event within 2 seconds. |
14:18:37 | proximity | 5 | Rapid back-and-forth — the participant may be adjusting phone position or checking the screen intermittently. |
Ambient light changes over time
The ambientLight sensor provides a continuous picture of the participant's lighting environment. Light trends can help identify indoor/outdoor transitions, sleep patterns (very low lux at night), and contextualise survey responses.
Time | Ambient light | Likely interpretation |
11:07:47 | 55.8 lux | Moderate indoor lighting — typical of an office or living room. |
12:01:24 | 111.6 lux | Increasing brightness — participant may have moved near a window, or natural light is strengthening as midday approaches. |
13:10:33 | 58.4 lux | Light has dropped — participant may have moved to a dimmer area or away from the window. |
14:18:43 | 192.1 lux | Very bright — likely near a window with direct sunlight, or outdoors. |
Notes
The Android sensor data format is event-driven: each row represents a single sensor event with a specific timestamp, sensor name, and value. This differs from the iOS format, which aggregates multiple samples into time windows.
ambientLight and screenBrightness are typically recorded together as a pair at the same timestamp.
screenOnDuration and appForegroundDuration are calculated durations recorded at the moment the screen turns off, or the app goes to the background, respectively. They are not continuous readings.
Proximity sensor max range varies by device (commonly 5cm). A value equal to the max range means nothing is detected near the sensor.