Data collection in Android

General information about data collection can be found here.
This article describes types and internal structure of the data collected from Android applications.

Performance metrics

Performance monitor collects the following metrics:

  • CPU
    Average CPU usage for all cores available
  • Memory
    Resident size for the app process
  • Network
    It consists of two metrics: download and upload speed calculated by network traffic statistics and provided by TrafficStats
  • Disk
    Bytes read and written
  • FPS
    Number of frames per second calculated by Choreographer instance.
  • Battery
    Value provided by BatteryManager

📘

Starting from Android O, proc/stat is not available, so CPU, memory, and disk state information for this API version and above is not supported.

HTTP requests

HTTP monitor intercepts all requests made via OkHttp framework and tracks their responses, execution time etc. We support all versions of OkHttp.

Logs

Log monitor intercepts data produced by logcat. It tracks all calls to Log.d(), Log.e() etc. and the other print-family functions. Log level is set to verbose by default.

Environment information

It includes data from AndroidManifest, such as registered activities, permissions, services and the other general information. It also contains information about enabled/available SSL algorithms, hardware info(NFC, Bluetooth) etc. provided by PackageManager.hasSystemFeature("android.hardware.nfc").

SQLite database

We discover all databases in your app and provide their schemes and contents.
We use Context.databaseList() and Context.getDatabasePath() to identify database files.

Screenshots

All screenshots are taken from Window decor view and compressed to JPEG format.

User location

Location monitor gets a location object received by LocationManager and sends it to backend. The resulting position is displayed on a map on frontend.
It also allows to request location services permissions from the frontend. We never request them without explicit user command, so until your app has started a location manager, location tracking will not be available.
We mock locations via LocationManager, so in order for it to work as intended, the options "GPS tracking only" and mock location should be enabled in settings.