Android · offline data collection · version 1.5.2

A phone that works
as a real instrument.

Signal Collector continuously records the sensor, radio and network data your phone can reach, straight into the phone — no cloud storage, no measured data leaving the device.

Real captures · Pixel 10a

  1. Measurement in progress with the ring expanded

    A running measurement. The ring shows satellites, networks and sensors as they arrive.

  2. Selecting the technologies to measure

    Choosing what to measure. Every source is a row that says what it records.

  3. Control buttons during a running measurement

    Start, reset and stop, with the duration, distance and record count above them.

  4. Collection health and the export panel

    The bottom of the panel: what each source is doing and the file that leaves the phone.

  5. The settings menu opened from the header

    Settings: delivery to your own server, units, and what happens after stopping.

Local Room / SQLite on the phone, nothing sent on its own
Continuous Keeps collecting with the screen locked
At hand Four widgets, a quick settings tile and the shade
Export TXT or GZIP, chosen by size

Internal test

The next version, before the Store has it.

Every build lands in the internal test before it goes to production. Join with the Google account the phone is signed in with and the update then arrives like any other.

One run.
The whole context.

Every case ends
in a file.

A measuring instrument is not sold by its list of sources but by the question it answers. Six of the twelve situations the app was built for — each one a walk, and a file at the end of it.

01

The dead spot in the meeting room

Walk the floor with the phone in your pocket and say a note at every door. Out comes throughput second by second, the AP the phone was really on, and a room instead of an argument between two departments.

02

A drive test without the van

Both SIMs scanning, GPS at one second, the phone locked on the dashboard. Every change of technology, Cell ID or PCI lands as an event, so handovers come out located to the metre.

03

A survey where GPS gives nothing

In a warehouse the sky is a roof. Mark each aisle with a photo from the app's own viewfinder and collect APs, MLO links and RTT distances — a coverage map before the first new AP is bought.

04

Sensors that report on their own

Dozens of BLE thermometers around a building, none of them paired. Walk past and their temperature, humidity and battery voltage arrive named and in SI units, beside the bytes they came from.

05

Proof for the landlord

Ten minutes of walking gives a file with a timestamp, a position, signal strength and photographs of the rooms. “The signal is fine everywhere” becomes a claim that can be checked.

06

A customer who will not have a cloud

Measure as usual and deliver to your own S3, WebDAV or SFTP — or hand over a file. Photos and voice notes never touch the phone gallery, so the NDA stays signable.

All twelve cases, and what reads the data

Full changelog

Work you can
watch.

Version 1.5.1 ships all twelve languages in every install, lets you see a long export or Reset at work, and adds a loose notebook for points, photos and tests taken without a running measurement.

01

Languages that are actually there

Google Play used to deliver only the languages the phone had at install time, so the per-app language choice offered Czech and the others with no strings behind them. All twelve translations now ship in every install.

02

A comet on the key

Download, Share and Reset take seconds to minutes on a large measurement. A comet now runs around the edge of the key, the tail growing with the finished part, and a live line under it says how much is done, how long it has run and roughly how long is left. Free space shows before the write starts — amber when tight, red when the export would not fit.

03

A loose notebook

Survey points, photos, voice notes, the one-off internet test and a Wi-Fi throughput cycle no longer need Start. Without a running measurement they go into a separate record with no collectors, no wake lock and no charge against the free hour — with its own card, its own Share file and its own Clear.

04

Share from the icon, system controls

Long-press the app icon once a measurement has stopped and Share is there next to Start; it opens the app and starts the export straight away. Switches, text fields, choices and messages are now standard Android controls — the keys and the instrument stay as they were.

Installed through
Google Play only.

Version1.5.2
PlatformAndroid 12+
AvailabilityEvery country Play allows
Get it on Google Play
  1. 1

    Install from Google Play — no invitation, no tester list, no waiting.

  2. 2

    Measure for up to an hour a year without paying anything.

  3. 3

    Unlock unlimited measuring from inside the app whenever the hour stops being enough.

Google Play is the only distribution channel: it signs the update chain and no direct APK is offered anywhere. The app itself needs no account of ours and no server of ours to run.

An hour a year
to make up your mind.

A field instrument cannot be judged from screenshots, so Signal Collector hands every phone an hour of measuring time a year — enough to walk a route, watch the ring fill and open the export. The hour is counted in measuring time, not in runs, so it can be spent at several places on several days. When it runs out, unlocking is a one-off in-app purchase at the Google Play price for your country: no subscription, no renewal date, and it carries over to every phone signed in to the same account.

1 hourof measuring time free, renewed every year
One purchaseunlimited from then on, on every phone of yours
24 hoursfrom a review to a triaged issue

Feedback goes through the Google Play review; every new review is picked up within a day, turned into an issue and answered, and fixes ride the next update. The paid app carries no advertising, no analytics and no third-party SDK inside the measurement — the price is what pays for the development instead.

From physical sensors
to the networks around you.

Every source can be switched on or off individually before a measurement, and for selected technologies the interval can be set as well.

01

Cellular network

Serving and neighbouring cells, LTE/NR/3G/2G parameters, registration changes and the experimental active scan.

02

GNSS and location

1 Hz GPS, satellites, raw GNSS measurements, clock, AGC, navigation messages, NMEA and antenna info.

03

Wi‑Fi and RTT

The current connection, nearby APs, Wi‑Fi 7 MLO, capabilities and RTT/FTM ranges to supported access points.

04

Bluetooth

Classic discovery and the BLE advertising payload, including manufacturer and service data.

05

Sensors and noise

Motion, magnetic field, pressure, light, proximity, rotation vector and an indicative dBFS level with no audio stored.

06

Network and transfer

Per-second samples of real download, upload, RTT, jitter and timeouts, 30-second capacity bursts, and binding to a specific Wi‑Fi and cellular network at the same time.

07

SIM and eSIM

Slot, operator, MCC/MNC, roaming and which card carries the data — cells on their own name the transmitter, not who was looking at it. Neither ICCID nor EID is recorded: they are permanent subscription numbers that outlive even a change of phone.

A sensor that is not
inside the phone.

The phone measures what it can reach. A probe on the wall, a meter on a cable, a receiver on the roof — those have to get in some other way. There are four ways in, and the first one already works.

01

Sensors that broadcast · working now

BTHome, Ruuvi, ATC and pvvx, Eddystone telemetry. Nothing to pair and nothing to connect: the sensor calls its reading into the room and the scan that is already running hears it. Temperature, humidity, pressure, CO₂, particulates, voltage — named, in SI units, in the same file as everything else.

02

Bluetooth LE profiles · planned

Environmental Sensing describes its own measurements, so a meter nobody has ever heard of can still be read together with its unit. Next to it the standard profiles — battery, thermometer, location — and the Nordic UART service, which is how a home-built probe speaks.

03

A serial line on a cable · planned

CDC-ACM, FTDI, CP210x, PL2303, CH340. Five families of chips cover nearly everything that plugs into USB and is not a disk: Arduino and ESP32 boards, u-blox receivers, spectrum analysers, meters that answer in SCPI.

04

A device on the local network · planned

Found over mDNS, read over HTTP or as a plain TCP stream. The request is bound to the Wi-Fi network, so it does not leave through mobile data and get lost on the way to a machine one room away.

Nothing is guessed. A reading the sensor itself marked as invalid is left out instead of being written as a number, an encrypted payload is recorded as encrypted rather than decoded into fiction, and a format the app does not know stays in the file as raw bytes. The keys are listed in the data dictionary.

A key that does not need
the app opened first.

Measuring in the field means one hand on the phone and the other on something else. Every control that matters therefore has a place outside the app, and each of them sends exactly the same instruction the screen sends.

01

Measurement panel

A widget that starts the set of sources and the intervals saved in it. While it runs it says so, carries the numbers of the measurement, and a second tap asks before it stops. The key holds its own copy of what it starts, so switching a preset in the app later does not silently change what the home screen measures.

02

Mark point

Up to four of your own labels side by side — doorway, corner, window are one tap each, written into the point straight away. With nothing running, the key starts the measurement and marks the point in one go.

03

Source tile

One source as one large number: access points in range, satellites in the fix, loudness. A tap while nothing is running starts a measurement with that source alone.

04

Source readout

Up to six sources, one line each, in the order you picked them — a list to be read at a glance instead of searched.

05

Tile in the quick settings

Start and Stop from any app and over the lock screen. It measures with whatever the app measured with last. Over a secured lock screen it asks for the phone to be unlocked first: what starts is location with a microphone.

06

Shortcuts under the icon

A long press on the app icon offers Start while nothing runs, and Stop with Mark point once something does. The point is marked without a label — labels are on the widget key, where there is room for them.

07

The notification

While measuring it carries the duration, the record count and the walked distance, with Mark point and Stop underneath. Start can be kept in the shade the whole time nothing is running, so a measurement taken in sections does not mean finding the app every time.

The keys are redrawn by the measurement itself, once every five seconds — a widget cannot be fresher than the app that feeds it. That is why each key carries the time its numbers were read at; the stopwatch is the exception, it ticks on its own. All of them are set up in one place, Home screen keys in the settings menu, and described in the help.

Data from a real
phone.

Everything below was measured on a Google Pixel 10a running Android 16. On version 0.7.2, a single measurement in three stretches collected 87,597 records: the duration grew from 2:49 through 7:21 to 8:12, the measurement number never changed, and more than twenty minutes of pauses between the stretches did not count towards the duration. The distance figures come from a nine-minute run of version 0.7.1 on the same phone — the distance filter has not changed since.

429 mof GPS noise thrown away by the distance filter
0 mwalked by a phone that never moved
9/9bursts with a start paired to a result

The first 274 fixes had an accuracy between 9 and 114 m. Summing the distances between neighbouring fixes would give 429 m, or 28 m once coarse fixes are filtered out; moving the anchor past the threshold gave zero. The test phone had no SIM, so the cellular branch of the mapping correctly reported the network as unavailable.

Install, changes
and source code.

The repository stays private. Signed-in collaborators find the source code, tagged releases and APK checksums in it.

Measured data never leaves the phone.

The app works offline and contains no analytics, advertising, attribution or crash-reporting SDK — and none will be added. Every library the app is built from is named in the privacy policy, each pinned to an exact version, so nothing inside changes without a release that says so. The optional continuous mapping of transfer quality uses the public Cloudflare Speedtest endpoints for small test HTTPS transfers and periodic bursts; it is not a measurement of maximum internet speed. The module is off by default. If you buy the unlock, one purchase report leaves the phone and carries no measured data; it is described in the privacy policy. An export may contain sensitive location data and identifiers of nearby networks.

From a sensor
to a row in a file.

Every source runs at its own pace. A sample is stamped with a time and the last known location, passes through a non-blocking queue and is stored into the local database in batches. Underlined keys in the diagram lead to the data dictionary.

Diagram of the data path: sources, SampleSink, queue, writer, Room/SQLite, heartbeat and export

Collection settings

The same parameters the app offers for every source before a measurement starts. The ranges and the data estimate match the implementation; a change shows up in the diagram above straight away.

ms

Range 10–1000 ms

ms

Range 100–60000 ms

s

Range 5–300 s

s

Range 5–60 s

s

Range 5–300 s

Internet mappingNetwork for continuous measurement

With both selected, two separate Android Network handles run at the same time.

ms

Range 500–5000 ms

KiB

Range 1–1024 KiB

KiB

Range 1–256 KiB

s

Range 10–300 s

KiB

Range 64–10240 KiB

KiB

Range 8–2048 KiB

407 MBupper estimate of data used per 30 minutes of mapping
8 400samples per minute from seven sensors
120samples per minute from internet mapping
20Wi-Fi and cellular scans per 10 minutes

The estimate is an upper bound: on a slow link a sample takes longer, so fewer of them fit into the same time and less data is transferred. This is not a measurement of maximum speed — why.

Changelog 1.0.0

Open as TXT ↗