Privacy Policy
How we collect, use, and protect your information when you use the Radar Android application.
Last updated: 4 November 2026📋 Overview
This Privacy Policy explains how DAL Technology ("we", "our", or "us") collects, uses, stores, and shares information when you use the Radar Android application.
By installing or using Radar you agree to the practices described in this policy. If you do not agree, please uninstall the app and do not use it.
📦 Information We Collect
The following categories of data are collected or accessed, depending on the features you use and the permissions you grant.
Data you provide directly
| Data type | Examples | Where stored | Why needed |
|---|---|---|---|
| Profile nickname | Optional display name you choose | Device + server (current value only) | Shown to nearby Radar peers |
| Gender | Optional — male / female / not specified | Device + server (current value only) | Shown to nearby peers as part of your profile |
| Profile photo | Image chosen from gallery or camera | Device only — transferred peer-to-peer | Shown on your contact card to nearby peers |
| Chat messages (unencrypted path) | Text, images, video, audio clips, files | Device; temporarily on relay server (≤ 7 days) | Delivered to recipient via server relay when no direct path available |
| Chat messages (sealed-sender path) | End-to-end encrypted ciphertext | Device; temporarily on relay server — content unreadable to us | Encrypted delivery via server relay when no direct path available |
| Emergency contacts | Names and phone numbers added manually | Device only | Quick-dial contacts for the Emergency / SOS screen |
| In-app support message | Problem description; optional reply-to email | Server (retained for support resolution) | Enable us to respond to support requests |
Data collected automatically
| Data type | Examples | Where stored | Why needed |
|---|---|---|---|
| Current GPS location | Latitude, longitude, altitude | Device; current position only on server (overwritten each update — no history) | Power radar view; share position with nearby peers; enable peer discovery |
| Device UUID | Randomly generated GUID created on first launch | Device + server (linked to current location row) | Pseudonymous device identifier for peer routing; contains no personal information |
| IP address | IPv4 / IPv6 at time of server contact | Server (current value, overwritten each update) | Network routing for direct peer communication |
| Device technical info | Manufacturer, model, Android version, SDK | Server (stored when push notifications registered) | Diagnostic support and compatibility checks |
| App version | e.g. 0.9.1 | Server | Compatibility checks and support |
| FCM push token | Firebase Cloud Messaging registration token | Server | Deliver a wake-up notification when a new message is waiting |
| Matrix guest credentials | Server-generated username and password derived from UUID | Server + device | Auto-created Matrix account for in-app support chat. Not linked to any personal Matrix account. |
| Crash and diagnostic reports | Crash stack traces, app version, device model, Android version, app state at the time of the crash, and a random installation identifier | Google (Firebase Crashlytics) | Find and fix crashes and stability problems. Never includes message content or contacts. |
| Nearby Wi-Fi access point observations | For each Wi-Fi access point your device detects: its BSSID (hardware address), network name (SSID), signal strength, encryption type, channel, first/last-seen time and the approximate coordinates where it was seen. This describes the access point, not your own connections or browsing. | Device queue, then uploaded to our server (at most once a day, while charging on Wi-Fi) as part of a shared crowdsourced Wi-Fi dataset | Build the crowdsourced Wi-Fi infrastructure layer shown on the radar and map. On by default; you can turn it off — see Your Rights & Choices. The upload request is authenticated like every other API call, so the API request log also records your device UUID and IP address for it. |
| Identity backup | Device UUID, Matrix guest credentials and related identity fields | Your Google Account, via Google Block Store / Android Restore Credentials (encrypted by Google, tied to the Radar app) | Restore your Radar identity automatically when you move to a new phone |
| Premium purchase verification | Google Play purchase token and product ID (no card or payment details — those stay with Google Play) | Server | Confirm that a Premium subscription is valid before unlocking Premium features |
| Anonymous usage analytics | Which onboarding steps and features are used, whether data loads or fails, ad and Premium screen interactions (coarse event names and categories only), app version, device model and Android version, approximate country derived from IP address, and a random app-instance identifier generated by Firebase | Google (Firebase / Google Analytics) | Understand which features are used, where users get stuck, and how to improve Radar. Never includes message content, contacts, precise location, nearby device identities or Matrix IDs. You can turn this off at any time — see Your Rights & Choices. |
Data accessed with your permission
| Permission | Data accessed | Storage | Why needed |
|---|---|---|---|
| Contacts | Names, phone numbers, emails from address book | Device only | Merge Android contacts with Radar peers in unified contact list |
| SMS / MMS | Message content, sender numbers, timestamps | Device only | Display and send SMS/MMS from within the app (optional feature) |
| Camera | Photos and video captured in-app | Device only | Attach media to messages or set a profile photo |
| Microphone | Audio recordings you initiate | Device only | Record audio clips to attach to messages |
| Media / Storage | Images and files you choose to share, selected through the Android Photo Picker or document picker (no broad media permission is requested) | Device only | Attach files and images to messages |
🗄️ What Our Server Stores — In Detail
Radar operates an Oracle-based backend server that enables peer discovery and message relay. The following explains precisely what is stored, how long it is kept, and what we can and cannot see.
Peer location record
- One row per device UUID — no history, just the current position.
- Stores: UUID (pseudonymous), current GPS coordinates, optional nickname, optional gender, IP address, port, app version, FCM token, device model/OS.
- No email address or phone number is stored — deliberate privacy design decision.
- Record is overwritten on every location update; previous locations are not retained.
- Soft-deleted when device identity is reset; hard-deleted on the next nightly cleanup job.
Relayed messages
- Messages sent via server relay are stored temporarily until the recipient collects them.
- Maximum retention: 7 days. Soft-deleted on recipient acknowledgement or TTL expiry; hard-deleted by the nightly job.
- Unencrypted relay messages: the server stores the full message JSON. We can technically read the payload. We do not do so except for operational support or legal obligations.
- Encrypted (sealed-sender) messages: ciphertext stored opaquely. We cannot decrypt or read message content. Cipher: X25519 / XChaCha20-Poly1305.
- The sender's UUID is stored in the outer message envelope (used for authentication / anti-spam). It is pseudonymous and not linked to any real-world identity.
- Push notification payload for sealed messages contains only a minimal wake-up signal ('message_pending') — no message content, no sender identity.
API request log
- Every API call is logged with: client IP address, sender UUID, action type, request timestamp, and the full request/response JSON.
- Used for debugging, security monitoring, and operational support.
- Log tables are partitioned by date and rotated by the nightly job.
Nonces
- Single-use cryptographic nonces stored for up to 5 minutes to prevent replay attacks.
- No personal data is contained in nonces.
Support records
- Stores: sender UUID, support category, message text, optional reply-to email you provide.
- Retained until the support request is resolved.
⚙️ How We Use Your Information
We use the information described above only for the following purposes:
- To power the core peer discovery, messaging, and mapping features of Radar.
- To display your pseudonymous profile (nickname and gender) to nearby Radar peers.
- To relay messages between you and other Radar users when no direct wireless path is available.
- To send a minimal push notification to your device when a relayed message is waiting.
- To render maps and location features via Google Maps SDK and Google Play Services Location.
- To maintain the local encrypted database of your messages, contacts, and settings.
- To provide emergency features including GPS display, SOS signalling, and nearby-services lookup.
- To respond to in-app support requests you submit.
- To verify Premium subscriptions and unlock Premium features.
- To collect crash reports so we can fix stability problems.
- To build a shared, crowdsourced Wi-Fi access point dataset used by the radar and map layers (you can opt out).
- To measure, in aggregate and without reading your content, which features are used and where problems occur, using Firebase Analytics (you can opt out — see Your Rights & Choices).
- To detect and prevent abuse, replay attacks, and unauthorised access to the API.
🤝 How We Share Your Information
Radar is designed to minimise data sharing. Information is shared only in the following limited circumstances.
Third-party services used by the app
| Service | Provider | Data shared | Purpose |
|---|---|---|---|
| Google Maps SDK | Google LLC | Map tile requests, device location | Render the interactive peer and POI map |
| Firebase Cloud Messaging | Google LLC | FCM push token, minimal wake-up payload | Deliver background push notifications |
| Firebase Analytics (Google Analytics for Firebase) | Google LLC | Coarse usage events (for example onboarding progress, feature use, ad and Premium screen interactions), app version, device model and Android version, approximate country, and a random app-instance identifier. Not your Radar messages, contacts, precise location or nearby device identities. Google may also use your advertising ID for measurement and, where linked, for measuring advertising campaign performance. | Understand app usage, reliability and the effectiveness of our advertising. Can be switched off in the app (Settings → Privacy → Analytics). |
| Firebase Crashlytics | Google LLC | Crash stack traces, app version, device model, Android version, random installation identifier | Detect and fix crashes |
| Google Play Billing (Premium) | Google LLC | Subscription purchase handled entirely by Google Play; we receive a purchase token and product ID for verification | Process and verify Premium subscriptions. We never see your card or payment details. |
| Google Block Store / Restore Credentials | Google LLC | Radar identity blob (device UUID, Matrix guest credentials), encrypted by Google | Restore your identity on a new device |
| Voice & video calls (WebRTC, STUN/TURN) | DAL Technology (our STUN/TURN server) and Google LLC (public STUN servers) | Your IP address and connection-negotiation data. Call audio/video is sent peer-to-peer, or relayed (still encrypted) through our TURN server when a direct path isn't possible. The other participant also sees your IP address on a direct call. | Set up Radar voice and video calls |
| Google Play in-app updates | Google LLC | App version and update-availability information | Prompt you when a new version is available |
| Google Play Services Location | Google LLC | Device GPS coordinates | Obtain precise and fused location data |
| ML Kit (on-device) | Google LLC | Message text — processed on-device only, not sent to Google servers | On-device translation of received messages |
| OpenSky Network (Premium) | OpenSky Network | Bounding-box coordinates | Live aircraft position data for map overlay |
| Overpass API / OpenStreetMap | OpenStreetMap Foundation | Bounding-box coordinates | Points of interest (hospitals, pharmacies, etc.) |
| Google Places API (Premium) | Google LLC | Bounding-box coordinates | Emergency service POI (hospitals, police, pharmacy) |
| HERE Maps API (Premium) | HERE Global B.V. | Bounding-box coordinates | Points of interest and emergency contact data |
| WiGLE (Premium) | WiGLE.net | Bounding-box coordinates | Historical Wi-Fi network data overlay |
| Google AdMob (free users only) | Google LLC | Advertising ID, IP address, device and ad-interaction information. Not your Radar messages, contacts or precise location. | Serve advertising to users without an active Premium subscription. In the EEA and UK, consent is requested before ads are loaded. |
| Matrix homeserver (optional) | Server you configure, or our built-in support server | Messages, media, room membership | Federated group chat via the Matrix protocol |
With other Radar users
- Your current location and pseudonymous profile (nickname, gender) are shared with nearby Radar peers via our server or direct wireless link.
- No email address or phone number is ever sent to other users.
- You control what profile information you provide — all profile fields except UUID are optional.
Legal requirements
- We may disclose information if required by law, court order, or governmental authority.
- We may also disclose information where necessary to protect our legal rights or the safety of any person.
⏱️ Data Retention & Deletion
| Data | Retention period | How deleted |
|---|---|---|
| Current location + profile | Until you reset your device identity, or until inactive cleanup | Soft-deleted then hard-deleted by the nightly scheduled job |
| Relayed messages | Maximum 7 days; earlier if all recipients acknowledge receipt | Auto soft-deleted on acknowledgement or TTL expiry; hard-deleted by the nightly job |
| FCM token / device info | Until you reset your device identity | Cleared when identity is reset; nightly cleanup |
| Matrix guest credentials | Until you reset your device identity | Cleared when identity is reset |
| API request log | Partitioned by date and rotated on a schedule | Automatically rotated by a nightly maintenance process |
| Support messages | Until support request is resolved | Deleted manually or on request |
| Usage analytics (Firebase / Google Analytics) | Held by Google for a limited period (no longer than 14 months) | Expires automatically; stops being collected if you switch analytics off |
| Crash reports (Firebase Crashlytics) | Held by Google for up to 90 days | Expires automatically |
| Wi-Fi access point observations | Queued on your device until the next daily upload, then removed from the device queue. Uploaded access point records form part of a shared dataset and are not removed by uninstalling. | Device queue cleared after upload; to request removal of data linked to your UUID, see "Your Rights" |
| On-device data | Until you delete in-app or uninstall | Clear chat, delete contact, or uninstall the app |
🔒 Security
On-device security
- The local message and contact database is encrypted at rest using SQLCipher.
- Optional biometric lock (fingerprint / face authentication) before the app opens.
- Device UUID and cryptographic keys can be wiped and regenerated at any time via the red Reset Device Identity button on the Settings → Security page.
In-transit security
- All communication with the relay server uses HTTPS (TLS).
- API requests are authenticated with a pre-shared API key, a per-request timestamp, and a one-time-use nonce to prevent replay attacks.
- End-to-end encrypted messages use X25519 key exchange and XChaCha20-Poly1305 authenticated encryption — the server stores only the opaque ciphertext.
- The sealed-sender design means the server cannot determine the real-world identity of message participants from the encrypted payload alone.
Server-side security
- The relay server is an Oracle APEX / ORDS deployment.
- Requests older than 60 seconds are rejected (anti-replay).
- Single-use nonces prevent exact request replay.
🔑 Android Permissions Explained
Every Android permission declared in the app manifest is listed below with the reason it is needed.
- Location and Nearby devices (Bluetooth / Wi-Fi) — required. Radar cannot discover or connect to nearby peers without them, so the app will not work properly if they are refused.
- SMS — optional. Needed only if you want to see and use Radar as your SMS/MMS messenger. The rest of the app works without it.
- Contacts — optional. Needed only so Radar can show your Android contacts alongside Radar peers. The rest of the app works without it.
You can change any permission at any time in Android Settings → Apps → Radar → Permissions. To be asked again for permissions you previously declined, open Radar's Settings → Security page and tap the green Re-request Permissions button.
| Permission | Status | Reason |
|---|---|---|
| ACCESS_FINE_LOCATION | Required | Core radar, map, and peer-discovery features |
| ACCESS_COARSE_LOCATION | Required | Fallback location for device discovery |
| ACCESS_BACKGROUND_LOCATION | Required | Keep mesh and position updates active while app is in background |
| BLUETOOTH_SCAN | Required | Discover nearby Radar peers over Bluetooth LE |
| BLUETOOTH_CONNECT | Required | Connect to discovered Bluetooth LE peers |
| BLUETOOTH_ADVERTISE | Required | Make your device discoverable to other Radar peers |
| NEARBY_WIFI_DEVICES | Required | Wi-Fi Aware peer discovery (Android 13+) |
| ACCESS_WIFI_STATE / CHANGE_WIFI_STATE | Required | Read and configure Wi-Fi for peer discovery |
| CHANGE_WIFI_MULTICAST_STATE | Required | Enable multicast for local network peer discovery |
| CHANGE_NETWORK_STATE | Required | Manage network connections for the relay feature |
| INTERNET | Required | Web relay, Google Maps, Firebase push notifications |
| FOREGROUND_SERVICE / FOREGROUND_SERVICE_LOCATION | Required | Run background location service with visible notification |
| POST_NOTIFICATIONS | Required | Show incoming message and service notifications (Android 13+) |
| RECEIVE_BOOT_COMPLETED | Required | Auto-restart background service after device reboot |
| WAKE_LOCK | Required | Prevent CPU sleep during active message delivery |
| VIBRATE | Required | Haptic feedback for messages and distress alerts |
| ACCESS_NETWORK_STATE | Required | Check whether an internet connection is available |
| BLUETOOTH / BLUETOOTH_ADMIN (Android 11 and earlier) | Required | Legacy Bluetooth permissions for peer discovery on older Android versions |
| FOREGROUND_SERVICE_CONNECTED_DEVICE | Required | Keep Bluetooth LE scanning and connections running in the background service |
| REQUEST_IGNORE_BATTERY_OPTIMIZATIONS | Optional | Lets Radar ask you to exempt it from battery optimisation so background connectivity keeps working. You can decline. |
| MODIFY_AUDIO_SETTINGS / FOREGROUND_SERVICE_PHONE_CALL | Optional | Voice and video calls: switch between earpiece and speaker, and show the ongoing-call notification |
| CALL_PHONE | Optional | One-tap calling of a contact without opening the dialler (falls back to the dialler if denied) |
| UWB_RANGING | Optional | Precise distance and direction to nearby Ultra-Wideband-capable devices (on supported phones) |
| com.google.android.gms.permission.AD_ID | Optional | Lets Google services such as AdMob and Firebase Analytics read your Android advertising ID. You can reset or delete it in Android Settings → Privacy → Ads. |
| READ_CONTACTS / WRITE_CONTACTS | Optional | Merge Android address book with Radar peers; save peers as contacts |
| READ_SMS / RECEIVE_SMS / SEND_SMS | Optional | SMS integration — read, receive, and send SMS from within the app |
| RECEIVE_MMS / READ_MMS | Optional | MMS integration — display received MMS messages |
| CAMERA | Optional | Take photos for profile or message attachments |
| READ_EXTERNAL_STORAGE (Android 12L and earlier) | Optional | Select files to attach on older Android versions. On newer versions Radar uses the Android Photo Picker and document picker and requests no media permission. |
| RECORD_AUDIO | Optional | Record audio clips to attach to messages |
| WRITE_EXTERNAL_STORAGE | Optional (Android ≤9) | Save attachments on older Android versions |
📍 Location Data — Special Notice
Radar uses both foreground and background location. This is fundamental to the app's purpose: discovering nearby peers and keeping your position updated on the shared map even when the screen is off.
- Your current location is sent to our relay server and stored in one record per device (no history — each update overwrites the previous position).
- Location is shared with other Radar peers who query for nearby devices within your configured discovery range.
- Your precise location is not used for advertising or profiling. Ads shown to free users are served by Google AdMob, which may use approximate, IP-derived location.
- You can disable location sharing at any time via the app's Privacy Settings or by revoking the location permission in Android Settings.
- A persistent foreground service notification is shown whenever background location is active, in compliance with Android requirements.
📱 SMS & MMS Integration
Radar can optionally act as an SMS/MMS client. This feature is entirely optional and off by default.
- The app reads your SMS inbox from the Android Telephony provider to display messages alongside Radar chats.
- Incoming SMS/MMS messages are received via system broadcast receivers.
- SMS/MMS content is stored locally in the encrypted on-device database only — it is never uploaded to our relay server.
- You can disable SMS integration at any time in Settings → SMS Integration.
🧑 Your Rights & Choices
You have the following controls over your data:
- Delete messages — delete individual messages, clear entire conversations, or wipe all chats from within the app.
- Delete contacts — remove any Radar contact from the contact card dialog.
- Reset device identity — tap the red Reset Device Identity button on the Settings → Security page at any time to replace your unique device identifier (UUID) and security keys with new ones, severing all links to your previous identity on the server. Messages already queued on the server for your old identity are retrieved at the time of the reset, but you will lose access to the old identity and cannot receive any messages sent to it afterwards. Existing peers will need to re-establish contact with your new identity.
- Revoke permissions — revoke any permission at any time via Android Settings → Apps → Radar → Permissions.
- Opt out of analytics — turn off the toggle in Settings → Privacy → Analytics at any time. Radar then stops sending usage analytics to Firebase. Analytics is on by default and the setting is remembered on your device.
- Opt out of Wi-Fi crowdsourcing — turn off "Participate in crowdsourcing" in the app's Internet Connectivity settings to stop uploading nearby Wi-Fi access point observations. It is on by default.
- Block contacts — block any peer to stop all messages and presence updates from them.
- Delete my data — the red Delete My Data button at the bottom of the Settings → Security page (also at the bottom of the Privacy page) is the only way to delete your identity and all your messages from both our server and your device in one step. It asks our server to delete everything held against your device UUID, wipes the app's database, files, keys and settings on your device, and offers to uninstall the app. This cannot be undone, and you will no longer receive any messages sent to that identity. Uninstalling the app on its own does not delete your identity or server-side data on request — server records then only expire under the retention periods above. Data held by Google (for example Analytics, crash reports and the Google Account identity backup) is governed by Google's retention settings.
- Export data — use Settings → Debug Info to view stored data; use Export Chat to export conversations.
GDPR / UK GDPR rights
- If you are in the EU/EEA or UK you may also have rights to: access, rectification, erasure, restriction of processing, and data portability.
- To exercise these rights, open the app and use the Contact Support form. Your request is linked to your Radar UUID, which is the only identifier we hold, so we can locate your data and verify the request.
💬 Public Rooms & Community Conduct
Public rooms are hosted on the Matrix network. Everything you post in a public room — messages, media, your display name and the fact that you joined — is visible to every member of the room and may be copied, stored and retained by other participants and by other Matrix servers. Public room messages are not end-to-end encrypted, and we cannot guarantee that anything you post can be fully deleted afterwards.
Radar does not require your real name, phone number or e-mail address to join a public room, and other members see only your chosen nickname. This anonymity is a privilege. Our servers still process technical data such as your device identifier and IP address, and we may disclose it where required by law. Do not share personal information about yourself or others in a public room.
Rules for public rooms
- Be polite and respectful to everyone.
- Only post in the room's common language.
- Do not post insulting, hurtful or obscene messages.
- Do not post illegal or pornographic content.
Channel moderators may remove content and ban users who break these rules, and we may act on reports of illegal content. You agree to these rules when you join a public room.
🧒 Children's Privacy
Radar is not intended for children under the age of 13 (or the applicable minimum age in your jurisdiction). We do not knowingly collect personal information from children under 13.
If you are a parent or guardian and believe your child has provided us with personal information, please use the Contact Support form in the app on your child's device, so we can identify the data by its Radar UUID. We will take steps to delete such information as quickly as possible.
🔗 Third-Party Links & Services
The app may contain links to third-party websites or services (e.g. emergency services websites, hospital listings). We are not responsible for the privacy practices of those third parties.
The Matrix protocol allows you to connect to homeservers operated by third parties. Those homeservers are governed by their own privacy policies.
Google's use of data is governed by the Google Privacy Policy.
📝 Changes to This Policy
We may update this Privacy Policy from time to time. When we do, we will revise the "Last updated" date at the top of this page and, where appropriate, notify you via an in-app notice.
Your continued use of Radar after any changes constitutes your acceptance of the revised policy. We encourage you to review this page periodically.
Contact Us
Support: for help with Radar, please use the Contact Support form inside the app. We do not provide general support by email.
For privacy and data-protection requests, use the same form, as described in the "Your Rights" and "Children's Privacy" sections above.
Developer: DAL Technology
App: Radar (Android)