Skip to content

Privacy & permissions

The RoadSave SDK requires several sensitive permissions. This page explains what data is collected, why it is needed, and how to present the permission rationale to your users.


Permissions required

Permission API level Required Purpose
ACCESS_FINE_LOCATION All Yes GPS sampling for trip tracking and crash location
ACCESS_COARSE_LOCATION All Yes Fallback location for areas with no GPS fix
ACCESS_BACKGROUND_LOCATION 29+ Recommended Location access while screen is off (needed for monitoring during full trips)
ACTIVITY_RECOGNITION 29+ Yes Detecting vehicle movement to start/stop trips automatically
FOREGROUND_SERVICE All Yes Keeping monitoring services alive
FOREGROUND_SERVICE_LOCATION 34+ Yes Foreground service with location access type (Android 14+ requirement)
POST_NOTIFICATIONS 33+ Yes Foreground service persistent notification (Android 13+ requirement)

Data collected

Data type Purpose Retention
GPS coordinates Trip route, crash location Uploaded to server; retained per your RoadSave contract
Accelerometer readings Crash detection Uploaded only on crash event; not stored locally beyond the sensor queue window
Device ID (ANDROID_ID) Unique device identification for evaluation payloads Sent with crash data; not stored beyond the session
Activity state (walking, vehicle, etc.) Trip auto-detection Not stored; used transiently

No data is stored beyond what is explicitly described above. The SDK does not access contacts, messages, camera, microphone, or any other sensitive hardware.


Presenting the permission rationale

Before requesting ACCESS_FINE_LOCATION and ACTIVITY_RECOGNITION, show the user a clear explanation of why the permissions are needed. Example rationale:

Location access: This app uses your location to track vehicle trips and detect crashes. Location is only used while you are in a vehicle or during a crash event.

Activity recognition: This app uses activity recognition to automatically start and stop trip monitoring when you enter or exit a vehicle.

For ACCESS_BACKGROUND_LOCATION (API 29+), present a separate rationale explaining that background location is needed for monitoring to work when the phone screen is off — a common condition during driving.


Background location on Android 10+

On Android 10 (API 29)+, background location requires a separate runtime permission request after ACCESS_FINE_LOCATION is granted. The user must explicitly select "Allow all the time" in system settings. Failing to grant background location means monitoring stops when the app is backgrounded.

The Google Play Store requires a declaration of background location use in the Play Console. Ensure your app's Data Safety form accurately reflects the SDK's usage.


Foreground service notification

The SDK runs as a foreground service to remain active during trips. A persistent notification is required by Android. Customize the notification content using RoadSave.setTripNotification(...) and RoadSave.setActivityNotification(...) to clearly inform the user that monitoring is active.