Signal Collector
Datový slovník · 0.10.0 English

Datový slovník
SIGNAL_COLLECTOR_TXT_V4.

Co přesně stojí v exportovaném souboru: hlavička session, sloupce TSV a všechny klíče payloadu, které jednotlivé zdroje zapisují. Odpovídá implementaci verze 0.10.0.

Stránka je psaná podle kódu, ne podle záměru. Kde se popis a chování aplikace rozejdou, platí kód — app/src/main/java/app/signalcollector/.

Struktura souboru

Export je textový soubor v UTF‑8. Podle odhadované velikosti se ukládá jako .txt, nebo zabalený do GZIPu. Má tři části: první řádek s označením formátu, blok hlavičky klíč=hodnota, prázdný řádek a pak tabulku vzorků oddělenou tabulátory.

SIGNAL_COLLECTOR_TXT_V4
session_id=42
session_status=COMPLETED
…
sources=accelerometer,collector_heartbeat,gnss_raw,location,wifi

timestamp_iso_utc	epoch_ms	elapsed_realtime_ns	session_id	sequence_number	source	payload
2026-08-10T09:14:02.118Z	1786439642118	918273645000	42	1	location	record_type=fix;provider=gps;latitude=50.087;…

Vzorky jsou seřazené podle timestampEpochMs a při shodě podle pořadí vložení. Řádek nikdy neobsahuje syrový tabulátor ani konec řádku — viz escapování.

Hlavička session

Popisuje celý běh měření: kdy začal, jak skončil a kolik vzorků prošlo kterou fází. Hlavičku píše MeasurementRepository.exportLatest z uzavřené session.

KlíčTypPopis
SIGNAL_COLLECTOR_TXT_V4textPrvní řádek souboru, ne dvojice klíč=hodnota. Verze formátu; při změně struktury se zvýší.
session_idlongID session v lokální databázi. Stejná hodnota je i ve sloupci session_id každého řádku.
session_statusenumCOMPLETED běžný Stop · FAILED selhal zápis nebo start · INTERRUPTED proces zanikl a session dopsal až další start aplikace.
end_reasonenumUSER_STOP · WRITER_ERROR · START_ERROR · PROCESS_RECOVERY. Prázdné jen u záznamů z verzí, které pole ještě neměly.
started_atISO‑8601Vznik session v UTC, tedy okamžik prvního stisku Start. Navázání ho nepřepisuje.
ended_atISO‑8601Konec session, tedy poslední Stop. Nikdy není dřív než poslední potvrzený zápis, i když callback dorazil až během vypínání kolektorů.
running_mslongČistý čas sběru: součet běžících úseků bez pauz mezi Stopem a dalším Startem. U session s pauzou je menší než ended_at − started_at; délky jednotlivých pauz jdou dopočítat z událostí zdroje session.
last_record_atISO‑8601Čas posledního vzorku v souboru (MAX(timestampEpochMs)).
last_persisted_atISO‑8601Čas posledního vzorku, který writer opravdu potvrdil do databáze.
tail_gap_mslongended_at − last_persisted_at, minimálně 0. Kolik času na konci session zůstalo bez dat — u zdravého běhu jednotky až stovky ms.
devicetextVnořené manufacturer;model;device;android;sdk, escapované stejně jako payload.
record_countlongPočet řádků vzorků v tomto souboru.
accepted_sampleslongKolik vzorků přijala zápisová fronta. Kolektor vzorek předá a pokračuje dál, nikdy nečeká na disk.
written_sampleslongKolik vzorků writer potvrdil do databáze. Rozdíl proti accepted_samples je fronta, která nestihla dojet.
dropped_sampleslongKolik vzorků fronta odmítla, protože byla plná (kapacita 20 000). Vzorek se ztratí, ale je započítaný — ticho v datech nelze zaměnit za ztrátu.
distance_mdoubleUšlá vzdálenost z GPS fixů, jedno desetinné místo. Neměří se součtem sousedních fixů, ale posuny kotvy — telefon ležící na stole tak neujde ani metr.
distance_max_accuracy_mfloatPráh přesnosti fixu pro trasu (20.0 m). Horší fix se do vzdálenosti nezapočítá vůbec.
writer_errortextTyp a zpráva výjimky, která shodila zápis. Prázdné = bez chyby.
sourceslistAbecední seznam zdrojů, které v této session opravdu něco zapsaly — ne seznam zaškrtnutých přepínačů. Obsahuje i collector_heartbeat, haptic a session.

Sloupce TSV

Sedm sloupců oddělených tabulátorem. Prvních šest je pro všechny zdroje stejných, sedmý je payload konkrétního zdroje.

SloupecTypPopis
timestamp_iso_utcISO‑8601Čitelný přepis epoch_ms v UTC. Odvozený sloupec, žádná informace navíc.
epoch_mslongSystémový čas při přijetí vzorku do fronty. Umožňuje srovnání s jinými zařízeními, ale může skočit, když se telefonu přenastaví hodiny.
elapsed_realtime_nslongMonotónní čas od startu telefonu, běží i ve spánku. Tohle je časová osa pro měření odstupů. Většina zdrojů ho bere přímo z Android API (fix, sken, buňka, BLE, GNSS hodiny), takže odpovídá okamžiku měření, ne okamžiku doručení callbacku.
sequence_numberlongPořadí řádku v souboru od 1. Přiděluje se až při exportu, není to ID v databázi.
sourceenumZdroj vzorku — jedna z hodnot popsaných níže, nebo collector_heartbeat.
payloadtextDvojice klíč=hodnota oddělené středníkem. Klíč record_type říká, který tvar payloadu následuje. Chybějící hodnota se zapíše jako prázdná — klíč v řádku zůstane.

Escapování

Payloady jako raw_scan_result, NMEA věty nebo text výjimky běžně obsahují znaky, které by strukturu souboru rozbily. Escapuje se proto vždy, i když v konkrétní hodnotě problémový znak není.

ZnakZápisKde
\\\payload, hlavička i sloupce TSV
;\;uvnitř payloadu a hlavičky — jinak by vypadal jako oddělovač dvojic
=\=uvnitř payloadu a hlavičky — jinak by vypadal jako oddělovač klíče a hodnoty
tabulátor\tsloupce source a payload, hodnoty v hlavičce
CR / LF\r / \nvšude

Parser tedy nejdřív rozdělí řádek na tabulátory, pak payload na neescapované středníky, pak dvojici na první neescapované rovnítko — a nakonec zruší escapování hodnoty.

Společné přípony payloadu

Některé klíče nepocházejí od zdroje samotného, ale připojí se ke vzorku až cestou. Díky tomu má i vzorek z akcelerometru poslední známou polohu, aniž by o poloze cokoli věděl.

Poloha u každého vzorku

Přidá se ke každému vzorku, u kterého je známá poslední poloha. Pokud zdroj polohu už sám nese, nepřipojuje se znovu. U internet_quality se připojí vždy — i prázdná, aby v datech bylo poznat, že poloha nebyla k dispozici.

KlíčTypPopis
last_locationboolByla poloha k dispozici.
last_latitudedoubleZeměpisná šířka posledního fixu.
last_longitudedoubleZeměpisná délka posledního fixu.
last_altitudedoubleNadmořská výška, jen když ji fix měl.
last_location_accuracyfloatHlášená horizontální přesnost fixu v metrech.
location_age_mslongStáří fixu vůči tomuto vzorku. Bez něj by nešlo poznat, jestli je poloha sekundu, nebo pět minut stará.

Síťový kontext u mapování internetu

Připojuje se jen ke vzorkům internet_quality a váže naměřený přenos ke konkrétní síti. Sada klíčů se liší podle transportu.

KlíčTransportPopis
ssid, bssid, rssi_dbm, rssi, frequency_mhz, frequency, channel, wifi_standard, rx_link_speed_mbps, tx_link_speed_mbpsWIFISnímek připojené Wi‑Fi v okamžiku vzorku. Neznámé údaje zůstávají prázdné; zástupné hodnoty Androidu (RSSI −127, frekvence −1) se do exportu nedostanou.
operator, mcc, mnc, plmn, technology, cell_id, nci, pci, tac, bands, band, earfcn, nrarfcn, rsrp, rsrq, sinr, ss_rsrp, ss_rsrq, ss_sinrCELLULARSnímek obsluhující buňky. U 5G se cell_id doplní z nci a rsrp/rsrq/sinr z ss_*, aby šly řady porovnávat napříč technologiemi.
network_context_age_msobaStáří snímku sítě vůči vzorku.
network_handle, network_request_transport, network_request_internet, network_has_internet, network_validated, interface_name, subscription_idobaDůkaz, přes kterou Android Network přenos opravdu šel. Bez toho by u souběžného Wi‑Fi a mobilního měření nešlo vzorky rozlišit.

Senzory

source: accelerometer · gyroscope · magnetometer · barometer · light · proximity · rotation_vector

Všech sedm senzorů má stejný tvar payloadu. Hodnoty se přebírají tak, jak je vrátí SensorEvent, bez filtrování a bez převodů. elapsed_realtime_ns je čas události ze senzoru, ne čas doručení.

KlíčTypPopis
v0, v1, v2, …floatOsy podle typu senzoru: akcelerometr m/s² (x, y, z) · gyroskop rad/s · magnetometr µT · barometr hPa (jen v0) · světlo lx · přiblížení cm · rotation vector kvaternion (v0v3, případně v4 jako přesnost v radiánech).
accuracyintHlášená přesnost senzoru 0–3 (0 = nespolehlivá, 3 = vysoká).
sensortextJméno konkrétního hardwarového senzoru, jak ho hlásí zařízení.

noise

source: noise · record_type: bez něj, payload má vždy stejný tvar

Z mikrofonu se počítá jen hlasitost bloku vzorků. Zvuk se nikam neukládá ani neodesílá; z uložených hodnot nelze zvuk rekonstruovat.

KlíčTypPopis
rmsdoubleEfektivní hodnota bloku v jednotkách 16bitového PCM.
dbfsdoubleHlasitost v dBFS vůči plnému rozsahu, zdola omezená na −120. Je to relativní úroveň, ne kalibrované dB SPL.
sample_rate_hzintSkutečná vzorkovací frekvence, se kterou se podařilo mikrofon otevřít.
samplesintPočet PCM vzorků v tomto bloku.

location

source: location · record_type: fix · registration

record_type=fix

KlíčTypPopis
providerenumgps nebo network. Oba providery běží současně, pokud jsou zapnuté.
latitude / longitudedoublePoloha ve stupních (WGS‑84).
altitudedoubleVýška nad elipsoidem v metrech, jen když ji fix má.
speed_mpsfloatRychlost v m/s.
bearing_degfloatAzimut pohybu ve stupních.
horizontal_accuracy_mfloatPoloměr 68% jistoty v metrech. Nad 20 m se fix nezapočítá do distance_m.
vertical_accuracy_mfloatNejistota výšky.
speed_accuracy_mpsfloatNejistota rychlosti.
bearing_accuracy_degfloatNejistota azimutu.
location_time_epoch_mslongČas fixu podle poskytovatele polohy — nemusí souhlasit s epoch_ms řádku.
location_elapsed_realtime_nslongMonotónní čas fixu; z něj vychází i elapsed_realtime_ns řádku.
is_mockboolPodvržená poloha. Do trasy se nezapočítá.
raw_locationrawtoString() objektu Location pro případ, že by v budoucnu chyběl nějaký nový atribut.

record_type=registration

KlíčTypPopis
callbacktextVždy LOCATION_UPDATES.
providerenumKterého providera se registrace týká.
provider_enabledboolByl provider v systému zapnutý.
statusenumSUCCESS · PROVIDER_DISABLED · FAILED. Rozlišuje vypnutou GPS od odmítnuté registrace.
registeredboolZda odběr fixů opravdu vznikl.
error / messagetextTřída a zpráva výjimky, pokud registrace selhala.

gnss_satellite

source: gnss_satellite · record_type: satellite · summary · event · registration · callback_error

Při každé změně stavu družic se zapíše jeden řádek na družici a k tomu jeden souhrn. Souhrn je předpočítaný schválně — jinak by ho musel počítat každý, kdo data zpracovává.

record_type=satellite

KlíčTypPopis
constellationenumGPS · GALILEO · GLONASS · BEIDOU · QZSS · NAVIC · SBAS · UNKNOWN.
svidintIdentifikátor družice v rámci konstelace.
cn0_db_hzfloatPoměr nosné k šumu v dB‑Hz. Hlavní ukazatel síly signálu družice.
baseband_cn0_db_hzfloatC/N0 měřené v basebandu, pokud ho čip hlásí.
elevation_deg / azimuth_degfloatPoloha družice na obloze.
carrier_frequency_hzfloatNosná frekvence signálu — odliší L1 od L5.
used_in_fixboolByla družice použita ve výpočtu polohy.
has_ephemeris / has_almanacboolMá přijímač k družici efemeridy / almanach.

record_type=summary

KlíčTypPopis
satellites_visible / satellites_usedintKolik družic přijímač vidí a kolik jich použil pro fix.
fix_use_ratiodoublePodíl použitých k viditelným.
cn0_avg_db_hz / cn0_max_db_hzdoublePrůměrné a nejlepší C/N0 přes všechny viditelné družice.
used_cn0_avg_db_hzdoublePrůměrné C/N0 jen z družic použitých ve fixu.
ephemeris_count / almanac_countintKolik družic má efemeridy / almanach.
gps_count, galileo_count, glonass_count, beidou_count, qzss_count, navic_count, sbas_count, unknown_countintPočty viditelných družic po konstelacích.

record_type=event / registration / callback_error

KlíčTypPopis
eventenumGNSS_STARTED · GNSS_STOPPED · GNSS_FIRST_FIX.
ttff_msintTime to first fix — jen u GNSS_FIRST_FIX.
callbacktextGNSS_STATUS u registrace.
status, registered, error, messagemixVýsledek registrace, stejný tvar jako u location.

gnss_raw

source: gnss_raw · record_type: clock · measurement · agc · capabilities · registration · status · callback_error

Surová GNSS měření pro post‑processing. Jeden clock záznam a k němu tolik measurement řádků, kolik družic čip v dané epoše sledoval.

record_type=clock

KlíčTypPopis
measurement_countintKolik measurement řádků k této epoše patří.
full_trackingboolZda čip běží v režimu plného sledování (Android 14+).
time_nanoslongHardwarový čas přijímače v nanosekundách.
time_uncertainty_nanosdoubleNejistota hardwarového času.
full_bias_nanos / bias_nanoslong / doubleHrubý a jemný posun hodin přijímače vůči GPS času.
bias_uncertainty_nanosdoubleNejistota posunu hodin.
drift_nanos_per_seconddoubleDrift hodin přijímače.
drift_uncertainty_nanos_per_seconddoubleNejistota driftu.
leap_secondintAktuální počet přestupných sekund.
hardware_clock_discontinuity_countintPočet skoků hodin. Změna hodnoty znamená, že se fáze nesmí spojitě navazovat.
clock_elapsed_realtime_nslongNavázání hodin přijímače na systémový monotónní čas.
clock_elapsed_realtime_uncertainty_nsdoubleNejistota tohoto navázání.
reference_constellation, reference_carrier_frequency_hz, reference_code_typemixReferenční signál pro mezisystémové biasy.
raw_clockrawtoString() objektu GnssClock.

record_type=measurement

KlíčTypPopis
constellation / svidenum / intKonstelace a číslo družice.
code_typetextTyp kódu signálu, například C, L, Q.
stateintBitová maska stavu sledování. Určuje, jestli je received_sv_time_ns jednoznačné.
received_sv_time_nslongPřijatý čas družice — základ pro pseudovzdálenost.
received_sv_time_uncertainty_nslongNejistota přijatého času.
time_offset_nsdoublePosun měření vůči času v clock.
cn0_db_hz / baseband_cn0_db_hz / snr_dbdoubleSíla a poměr signálu k šumu.
carrier_frequency_hzfloatNosná frekvence, odliší L1/L5.
carrier_cycles, carrier_phase, carrier_phase_uncertaintylong / doubleFázová měření nosné.
pseudorange_rate_mpsdoubleZměna pseudovzdálenosti v m/s (dopplerovské měření).
pseudorange_rate_uncertainty_mpsdoubleNejistota téhož.
accumulated_delta_range_mdoubleAkumulovaná změna vzdálenosti z fáze nosné.
accumulated_delta_range_uncertainty_mdoubleNejistota akumulované změny.
accumulated_delta_range_stateintStav akumulace; hlásí ztrátu fáze (cycle slip).
multipath_indicatorintIndikátor odrazu signálu, pokud ho čip poskytuje.
agc_level_dbdoubleÚroveň automatického řízení zisku — citlivá na rušení v pásmu.
full_inter_signal_bias_ns, full_inter_signal_bias_uncertainty_ns, satellite_inter_signal_bias_ns, satellite_inter_signal_bias_uncertainty_nsdoubleBiasy mezi signály a mezi družicemi.
raw_measurementrawtoString() objektu GnssMeasurement.

record_type=agc / capabilities / status

KlíčTypPopis
constellation, carrier_frequency_hz, level_db, raw_agcmixAGC po jednotlivých pásmech (Android 13+).
hardware_model, hardware_year, capabilitiestext / intModel a rok GNSS čipu a jeho hlášené schopnosti. Vysvětlí, proč některá pole na daném telefonu vždy chybí.
status / status_nameint / enumREADY · LOCATION_DISABLED · NOT_SUPPORTED · UNKNOWN.

gnss_navigation

source: gnss_navigation · record_type: navigation_message · status · registration

KlíčTypPopis
typeintTyp navigační zprávy podle konstelace a signálu.
svidintDružice, ze které zpráva přišla.
message_id / submessage_idintPořadí rámce a podrámce.
statusintZda zpráva prošla kontrolou parity.
data_hexhexSurová data zprávy v hexadecimálním zápisu.
data_lengthintDélka dat v bajtech.
raw_navigation_messagerawtoString() objektu zprávy.

gnss_nmea

source: gnss_nmea · record_type: nmea · registration

KlíčTypPopis
nmea_timestamp_epoch_mslongČas věty podle systému.
sentencetextCelá NMEA věta bez koncových bílých znaků. Hvězdička a kontrolní součet zůstávají; případné oddělovače jsou escapované.

gnss_antenna

source: gnss_antenna · record_type: antenna_info · registration

KlíčTypPopis
indexintPořadí antény v seznamu, který telefon hlásí.
carrier_frequency_mhzdoublePásmo, ke kterému se údaje vztahují.
phase_center_offsetrawPosun fázového středu antény včetně nejistot.
phase_center_variation_correctionsrawMapa korekcí fázového středu podle směru.
signal_gain_correctionsrawMapa korekcí zisku podle směru.
raw_antenna_inforawtoString() objektu GnssAntennaInfo.

wifi

source: wifi · record_type: scan · access_point · connection · mlo_link · status

Každý čerstvý sken zapíše jeden řádek na viditelný přístupový bod a k tomu jeden řádek o vlastním připojení. Android skeny škrtí a scanResults pak vrací pořád tentýž poslední výsledek, proto má každý pokus o sken vlastní řádek record_type=scan a každý AP navíc svůj scan_timestamp_us.

record_type=scan

Vzniká při každém pokusu o sken, i když z něj žádná nová data nejsou. Bez toho by opakovaně vrácený starý sken vypadal jako pravidelné vzorkování po nastaveném intervalu a z mapy pokrytí by nešlo poznat, kde se doopravdy měřilo. Řádky access_point se zapisují jen u stavu FRESH.

KlíčTypPopis
statusenumFRESH nový sken · THROTTLED systém startScan() odmítl · UNCHANGED tentýž sken už zpracoval systémový callback. Rozlišení je podstatné: UNCHANGED roste i na telefonu, kde se vůbec neškrtí, a jako škrcení by vypadalo mylně.
triggerenumPERIODIC_POLL vlastní tik sběru · SCAN_RESULTS_CALLBACK sken vyvolaný systémem nebo jinou aplikací, který sběr převzal, místo aby čekal na svůj další tik.
start_scan_requestedboolNávratová hodnota startScan(). Prázdné u trigger=SCAN_RESULTS_CALLBACK, kde sběr o sken nežádal.
scan_timestamp_uslongČas nejnovějšího výsledku ve skenu, v mikrosekundách od bootu. Právě podle něj se pozná, že jde o tentýž sken jako minule.
scan_age_mslongStáří výsledku vůči tomuto řádku. U FRESH jednotky až stovky ms, u opakovaného skenu roste.
ap_countintKolik přístupových bodů sken vrátil.
fresh_scans / throttled_scans / unchanged_scanslongKumulativní čítače za běžící úsek. Po navázání do session začínají znovu od nuly, takže se poměr počítá vždy v rámci jednoho úseku.

record_type=access_point

KlíčTypPopis
ssid / bssidtextJméno sítě a MAC adresa přístupového bodu.
rssi_dbmintSíla signálu v dBm.
frequency_mhz / channelintFrekvence a z ní odvozený kanál.
channel_widthintŠířka kanálu jako konstanta ScanResult (0 = 20 MHz, 1 = 40, 2 = 80, …).
center_freq_0_mhz / center_freq_1_mhzintStřední frekvence segmentů u širokých kanálů.
capabilitiestextŘetězec schopností a zabezpečení, jak ho hlásí sken.
security_typeslistČíselné typy zabezpečení (Android 13+).
wifi_standardenumLEGACY · 802.11n · 802.11ac · 802.11ax · 802.11ad · 802.11be. Neznámý standard zůstává prázdný, ne UNKNOWN.
scan_timestamp_uslongKdy byl AP naposledy viděn, v mikrosekundách od bootu. Odhalí opakovaně vrácený starý sken.
passpoint, operator_friendly_name, venue_namebool / textPasspoint metadata, pokud je síť hlásí.
raw_scan_resultrawtoString() objektu ScanResult.

record_type=connection

KlíčTypPopis
ssid / bssidtextIdentifikace připojené sítě. Prázdné, když je systém kvůli oprávněním skryje.
ssid_available / bssid_availableboolRozlišuje „síť je bez jména“ od „jméno nám systém nedal“.
rssi_dbm, frequency_mhz, channelintSignál a kanál aktuálního spojení.
link_speed_mbps, rx_link_speed_mbps, tx_link_speed_mbpsintVyjednaná rychlost linky. Není to naměřená propustnost — tu měří internet_quality.
max_rx_link_speed_mbps / max_tx_link_speed_mbpsintMaximum, které spojení podporuje.
wifi_standardenumStandard aktuálního spojení.
security_typeintTyp zabezpečení připojené sítě.
passpoint_fqdn / passpoint_providertextPasspoint poskytovatel, pokud se přes něj telefon připojil.
ap_mld_mac / ap_mlo_link_idtext / intWi‑Fi 7 multi‑link: adresa MLD a ID aktivního linku.
raw_wifi_inforawtoString() objektu WifiInfo.

record_type=mlo_link

KlíčTypPopis
mlo_kindenumscan_affiliated · connection_affiliated · connection_associated — odkud link pochází.
link_idintID linku v rámci MLD.
ap_mac / sta_mactextAdresy obou konců linku.
band, channel, frequency_mhzintPásmo a kanál linku.
rssi_dbm, rx_link_speed_mbps, tx_link_speed_mbpsintSignál a rychlost linku (Android 14+).
stateenumACTIVE · IDLE · UNASSOCIATED · INVALID.
raw_mlo_linkrawtoString() objektu MloLink.

record_type=status

Jediný stav, status=SCAN_CALLBACK_REGISTRATION_FAILED s klíči error a message. Znamená, že se nepodařilo zaregistrovat odběr systémových skenů — v datech pak budou jen skeny vyžádané sběrem, tedy trigger=PERIODIC_POLL.

wifi_rtt

source: wifi_rtt · record_type: capabilities · ranging_result · status

Měření vzdálenosti k přístupovým bodům, které podporují FTM (802.11mc / 802.11az). Takových AP je málo; když žádný není v dosahu, zapíše se status=NO_RESPONDERS, aby bylo poznat, že měření proběhlo a jen nemělo co měřit.

KlíčTypPopis
available / characteristicsbool / textDostupnost RTT a hlášené vlastnosti čipu (record_type=capabilities).
statusint / enumU výsledku číselný kód (0 = úspěch), u stavu UNAVAILABLE · NO_RESPONDERS · FAILURE · ERROR.
mac_addresstextAdresa měřeného přístupového bodu.
distance_mm / distance_std_dev_mmintVzdálenost a její rozptyl v milimetrech. Vyplněné jen u úspěšného měření.
rssi_dbmintSignál v okamžiku měření.
attempted_measurements / successful_measurementsintKolik dílčích měření se zkusilo a kolik vyšlo.
ranging_timestamp_mslongČas měření podle čipu; z něj vychází elapsed_realtime_ns řádku.
measurement_frequency_mhz / measurement_bandwidthintKanál a šířka pásma měření (Android 14+).
is_80211mc / is_80211az_ntbboolKterou variantou FTM měření proběhlo.
lci_hex / lcr_hexhexHlášená poloha a civilní adresa přístupového bodu (Android 15+).
min_ntb_interval_us / max_ntb_interval_uslongRozsah intervalů u 802.11az non‑trigger‑based měření.
ranging_authenticated / ranging_frame_protectedboolZabezpečení měření (Android 16+).
code, error, messageint / textDůvod neúspěchu u status záznamů.
raw_ranging_resultrawtoString() objektu RangingResult.

wifi_throughput

source: wifi_throughput · record_type: wifi_throughput · status

Signál všech okolních sítí dá jeden sken naráz, propustnost ne — telefon je asociovaný vždy jen k jedné AP. Zdroj proto obchází předem zadané sítě jednu po druhé přes WifiNetworkSpecifier a u každé změří download, upload i HTTPS RTT. Přepnutí se týká jen této aplikace, ostatní provoz telefonu zůstává na původní síti.

Měřit se má vestoje: za chůze by každá síť v cyklu vyšla z jiného místa a čísla by se nedala srovnat. Při prvním připojení ke každé síti si Android vyžádá souhlas modálním systémovým dialogem, který nejde potlačit — obchůzka proto začíná odklikáním dialogů na prvním bodě.

record_type=wifi_throughput

Jeden řádek na jednu síť v jednom cyklu, a to i tehdy, když se k síti vůbec nedošlo — jinak by z dat nešlo poznat rozdíl mezi sítí, která tu nebyla, a sítí, na kterou se zapomnělo.

KlíčTypPopis
statusenumSUCCESS oba přenosy prošly · PARTIAL aspoň jeden skončil chybou · NOT_VISIBLE síť nebyla v posledním skenu, pokus se vůbec nezkusil · CONNECT_FAILED připojení se nepovedlo do connect_timeout_s.
cycle / target_indexintKolikátá obchůzka a pořadí sítě v zadaném seznamu. Dvojice určuje řádek jednoznačně.
requested_ssid / securedtext / boolZadaná síť tak, jak stojí v nastavení, a jestli má heslo. Heslo samotné se do dat nikdy nezapisuje.
connect_msdoubleDoba od zahájení pokusu po dostupnou síť, tedy asociace a DHCP. Bez ní by nešlo odlišit pomalou síť od pomalého přepínání. U NOT_VISIBLE nula.
total_msdoubleCelá obsluha sítě včetně obou přenosů a RTT sond.
has_internetboolHlásí síť schopnost NET_CAPABILITY_INTERNET. Síť bez internetu se měří dál a skončí s chybou přenosu — jako výsledek, ne jako nedostupnost.
ssid, bssid, rssi_dbm, frequency_mhz, channel, wifi_standard, rx_link_speed_mbps, tx_link_speed_mbpstext / intSnímek spojení v okamžiku měření: ke které AP se telefon opravdu připojil a s jakou vyjednanou rychlostí. Vyplněné jen u úspěšného připojení.
latency_ms_median / latency_ok / latency_errorsdouble / int / listMedián HTTPS RTT, počet vrácených sond a typy výjimek u těch neúspěšných. Není to ICMP ping.
download_mbps / upload_mbpsdoublePropustnost přenosu. U chyby zůstává prázdná, i když se část bajtů přenesla — poloviční přenos není naměřená rychlost.
download_bytes / upload_byteslongKolik bajtů se opravdu přeneslo; u chyby do okamžiku selhání.
download_ms / upload_msdoubleDoba přenosu včetně navázání spojení.
download_error / upload_errortextNázev třídy výjimky, například SocketTimeoutException. Odmítnutý stavový kód HTTP se sem dostane jako IllegalStateException. Prázdné u úspěchu.
server_mode / servertextRežim a host testovacího endpointu, stejné jako u internet_quality.

record_type=status

Jediný stav, status=NO_TARGETS s vysvětlující message. Zdroj je zapnutý, ale seznam sítí je prázdný, takže se nespustí — v exportu je to vidět místo mlčení.

mobile_network

source: mobile_network · record_type: cell · signal_strength · event

U record_type=cell je sada klíčů vždy stejná a úplná — pole, která daná technologie nemá, zůstanou prázdná. Sloupce v tabulce tedy nikdy neposkakují podle toho, jestli telefon zrovna visí na LTE nebo na 5G.

Společné klíče záznamu cell

KlíčTypPopis
scan_modeenumPASSIVE_CELL_SCAN běžný odběr · ACTIVE_NETWORK_SCAN experimentální aktivní sken.
triggerenumTELEPHONY_CALLBACK · GET_ALL_CELL_INFO · REQUEST_CELL_INFO_UPDATE · ACTIVE_NETWORK_SCAN. Odliší vyžádaný snímek od spontánní změny.
technologyenumNR · LTE · WCDMA · TDSCDMA · GSM · CDMA.
registeredboolJe telefon k této buňce registrovaný.
connection_statusenumPRIMARY_SERVING · SECONDARY_SERVING · NONE · UNKNOWN.
subscription_id / sim_slotintKe které SIM buňka patří. U dvou SIM běží dvě nezávislé sady záznamů.
cell_timestamp_mslongČas snímku podle modemu; z něj vychází elapsed_realtime_ns řádku.
dbm, asu, levelintSíla signálu v dBm, v ASU a jako úroveň 0–4 pro UI.
mcc, mnc, plmntextKód země, kód sítě a jejich spojení.
operatortextJméno operátora, nebo PLMN, když jméno není. UNKNOWN u buňky bez identity.
operator_alpha_long / operator_alpha_shorttextDlouhé a krátké jméno sítě podle modemu.
additional_plmnslistDalší PLMN, které buňka vysílá (network sharing).
raw_cell_info, raw_cell_identity, raw_signal_strengthrawtoString() tří objektů modemu, jako záloha pro pole, která zde ještě nemají vlastní klíč.

Klíče podle technologie

KlíčTechnologiePopis
cell_idLTE, WCDMA, GSM, TDSCDMA, CDMAIdentifikátor buňky (u LTE ci, u ostatních cid, u CDMA base station ID).
nciNR48bitové 5G NR Cell Identity.
pciLTE, NRPhysical Cell ID.
tacLTE, NRTracking Area Code.
lacWCDMA, GSM, TDSCDMALocation Area Code.
pscWCDMA, GSM, TDSCDMAPrimary Scrambling Code, u TDSCDMA se plní z cpid.
bsicGSMBase Station Identity Code.
earfcn / nrarfcn / uarfcn / arfcnLTE / NR / WCDMA, TDSCDMA / GSMČíslo kanálu podle technologie.
bandsLTE, NRPásma, ve kterých buňka pracuje.
bandwidthLTEŠířka pásma v kHz.
rssiLTE, GSMCelková přijímaná síla.
rsrp / rsrqLTEReferenční výkon a kvalita.
rssnrLTEPoměr signálu k šumu.
sinrLTE, NRSjednocený klíč pro porovnání napříč technologiemi: u LTE kopíruje rssnr, u NR ss_sinr.
ss_rsrp, ss_rsrq, ss_sinrNRMěření na synchronizačním signálu.
csi_rsrp, csi_rsrq, csi_sinrNRMěření na CSI‑RS.
cqi / cqi_table_indexLTE, NRIndikátor kvality kanálu; u NR jde o seznam hodnot.
timing_advance / timing_advance_usLTE, GSM / NRČasový předstih — hrubá informace o vzdálenosti od vysílače.
ec_noWCDMAPoměr energie čipu k šumu.
rscpTDSCDMAReceived Signal Code Power.
bit_error_rateGSMChybovost.
network_id, system_id, basestation_latitude, basestation_longitude, cdma_dbm, cdma_ecio, evdo_dbm, evdo_ecio, evdo_snrCDMAPole starých CDMA sítí; v Evropě se nevyplní.

record_type=signal_strength

KlíčTypPopis
technologytextTřída měření podle Androidu, například CellSignalStrengthLte.
dbm, asu, levelintSíla signálu ve třech obvyklých jednotkách.
subscription_id / sim_slotintKteré SIM se měření týká.
raw_signal_strengthrawtoString() měření.

record_type=event

KlíčTypPopis
eventenumCELL_LIST_CHANGED · SIGNAL_STRENGTH_CHANGED · SERVICE_STATE_CHANGED · DISPLAY_INFO_CHANGED · DATA_CONNECTION_CHANGED · SERVING_CELL_CHANGED · CELL_INFO_UPDATE_ERROR · RADIO_API_ERROR · ACTIVE_NETWORK_SCAN_*.
before / afterrawStav před změnou a po ní, aby šlo přechod zrekonstruovat.
before_technology, before_cell_id, before_pci, after_technology, after_cell_id, after_pcimixRozpad přechodu obsluhující buňky — tohle je handover.
operationtextKteré volání modemu selhalo u RADIO_API_ERROR.
has_carrier_privileges / modify_phone_state_grantedboolProč aktivní sken systém povolil nebo odmítl.
result_countintPočet buněk vrácených aktivním skenem.
error_code, error, exception, messageint / textPřesný důvod odmítnutí nebo chyby.
manufacturer, model, android, sdktext / intZařízení a systém u záznamů aktivního skenu — jeho dostupnost je silně závislá na telefonu.

sim_info

source: sim_info · record_type: summary · subscription

Které karty byly v telefonu, když se měřilo. mobile_network nese identitu vysílače, ale ne toho, kdo se na něj díval — a při dvou kartách nebo v roamingu je to zásadní rozdíl. Zapisuje se jednou při startu měření a pak už jen tehdy, když systém ohlásí změnu předplatných; karty se za chůze nemění.

ICCID ani EID se nezapisují. Jsou to trvalé identifikátory předplatného, které přežijí i výměnu telefonu, kdežto zbytek téhle sekce popisuje síť, ve které se měřilo. Aplikaci je systém od Androidu 10 stejně nevydá.

record_type=summary

KlíčTypPopis
slot_countintKolik předplatných umí telefon držet naráz.
active_countintKolik jich je aktivních. Nula znamená telefon bez karty, ne chybu čtení.
esim_countintKolik z aktivních je profil eSIM.
euicc_supportedboolMá telefon eSIM čip, bez ohledu na to, jestli je na něm profil.

record_type=subscription

KlíčTypPopis
subscription_idintLokální číslo předplatného. Po přeregistrování karty se změní, takže telefon neidentifikuje; slouží ke spojení řádků v rámci jednoho měření.
slot_indexintSlot, ve kterém karta sedí. Číslováno od nuly.
carrier_name / display_nametextOperátor podle karty a jméno, které si předplatnému nastavil uživatel.
mcc / mnctextKód země a sítě. Spojuje kartu se záznamy buněk v mobile_network.
country_isotextZemě předplatného podle ISO.
embeddedbooltrue u profilu eSIM, false u fyzické karty.
roamingboolJestli předplatné právě jede v roamingu.
default_data, default_voice, default_smsboolKterá karta veze data, hovory a zprávy. Pro rozbor měření je podstatné hlavně default_data — jeho síť se objeví v internet_quality.

network_context

source: network_context · record_type: capabilities · link_properties · event

Pohled operačního systému na sítě: co telefon o síti tvrdí, ještě než se přes ni něco přenese. Zapisuje se na startu, periodicky a při každé změně.

record_type=capabilities

KlíčTypPopis
triggerenumINITIAL · PERIODIC · CALLBACK.
network_handlelongIdentifikátor sítě. Spojuje záznam s konkrétním vzorkem internet_quality.
transportslistCELLULAR, WIFI, VPN, ETHERNET, BLUETOOTH, THREAD, SATELLITE
capabilitieslistČíselné konstanty schopností sítě.
internet / validatedboolSlibuje síť internet a ověřil si systém, že opravdu funguje.
captive_portalboolSíť vyžaduje přihlášení přes portál.
metered, roaming, congested, suspendedboolStav sítě. Uloženo v kladném významu, tedy metered=true znamená měřená síť.
downstream_kbps / upstream_kbpsintOdhad linkové kapacity od systému — odhad, ne měření.
signal_strengthintSíla signálu sítě, když ji systém uvádí.
owner_uid, network_specifier, transport_infomixDoplňující identifikace sítě, u Wi‑Fi obsahuje WifiInfo.
raw_capabilitiesrawtoString() objektu NetworkCapabilities.

record_type=link_properties

KlíčTypPopis
interface_nametextJméno rozhraní, například wlan0 nebo rmnet_data0.
link_addresseslistIP adresy rozhraní.
dns_servers / domainslist / textDNS servery a vyhledávací domény.
routeslistSměrovací záznamy, oddělené svislítkem.
mtuintMaximální velikost rámce.
private_dns_active / private_dns_serverbool / textStav privátního DNS.
dhcp_server, nat64_prefix, http_proxy, wake_on_lanmixOstatní vlastnosti linky.
raw_link_propertiesrawtoString() objektu LinkProperties.

record_type=event

KlíčTypPopis
eventenumAVAILABLE · LOSING · LOST · BLOCKED_CHANGED.
max_ms_to_liveintKolik času systém síti dává u LOSING.
blockedboolJe provoz aplikace na této síti blokovaný.

internet_quality

source: internet_quality · record_type: network_quality_sample · network_capacity_probe · network_capacity_probe_started · speed_test_result · speed_test_event

Skutečné HTTPS přenosy navázané na konkrétní Android Network, ne odhad kapacity linky. Sekundový vzorek je malý schválně: cílem je souvislá mapa kvality při chůzi, ne špička rychlosti. Proto každý záznam nese i measurement_semantics=SMALL_TRANSFER_QUALITY_NOT_MAX_SPEED.

Ke každému vzorku se navíc připojují společné přípony — poloha i snímek sítě.

record_type=network_quality_sample / network_capacity_probe

KlíčTypPopis
timestamp / timestamp_epoch_mslongZačátek vzorku. Dva klíče se stejnou hodnotou kvůli zpětné kompatibilitě starších skriptů.
scheduled_at_epoch_ms / started_at_epoch_mslongKdy měl vzorek začít a kdy začal.
schedule_delay_mslongZpoždění proti plánu. Roste, když je linka pomalá nebo systém aplikaci přidusí.
missed_intervalslongKolik celých intervalů se přeskočilo. Vteřinová osa vzorků řádek zapíše i tehdy, když se měřit nedalo, takže tohle roste jen po skutečném uspání procesu.
statusenumZměřeno: SUCCESS · PARTIAL · TIMEOUT (selhalo vše a jen vypršením lhůty) · ERROR. Neměřeno: BUSY (transport držel burst nebo ruční test) · NETWORK_LOST (nebylo na čem měřit). Poslední dva nesou prázdné naměřené sloupce a nepočítají se do chybovosti.
busy_reasonenumKdo transport držel: QUALITY_SAMPLE · CAPACITY_PROBE · SPEED_TEST. Jen u status=BUSY.
measurement_semanticsenumVždy SMALL_TRANSFER_QUALITY_NOT_MAX_SPEED. Pojistka proti čtení hodnot jako speedtestu.
server_mode / servertextRežim a host testovacího endpointu.
network_bindingenumVždy ANDROID_NETWORK — přenos šel prokazatelně přes vybranou síť, ne přes výchozí.
transport_targetenumCo uživatel zvolil: AUTO · WIFI · CELLULAR · BOTH.
transportenumPřes co vzorek opravdu šel: WIFI · CELLULAR · ETHERNET · BLUETOOTH · VPN · OTHER · NONE.
download_requested_bytes / upload_requested_byteslongKolik bajtů se mělo přenést.
download_bytes / upload_byteslongKolik se jich opravdu přeneslo. U chyby jsou to bajty stažené do okamžiku selhání.
download_duration_ms / upload_duration_msdoubleDoba přenosu včetně navázání spojení.
short_download_mbps / short_upload_mbpsdoublePropustnost sekundového vzorku. Malý přenos, takže je to spodní odhad — ne maximum linky.
burst_download_mbps / burst_upload_mbpsdoubleTotéž pro kapacitní burst, který běží jednou za nastavený interval a je výrazně větší.
latency_probe_countintKolik RTT sond se mělo poslat.
successful_probes / failed_probesintKolik jich prošlo a kolik selhalo.
rtt_min_ms, rtt_avg_ms, rtt_max_msdoubleOdezva HTTPS sond.
jitter_msdoublePrůměrná absolutní změna RTT mezi sousedními sondami.
failed_requests / timeout_countintKolik požadavků selhalo celkem a kolik z toho vypršelo.
probe_duration_msdoubleJak dlouho trval celý vzorek. Na pomalé lince je delší než interval — další vteřiny pak nesou status=BUSY.
errors / errortextSeznam chyb ve tvaru fáze:typ, případně jednoslovný důvod (NO_ACTIVE_NETWORK, TARGET_NETWORK_UNAVAILABLE).

record_type=network_capacity_probe_started

Zapíše se v okamžiku, kdy burst začne. Burst drží zámek transportu po celou dobu přenosu, takže po tu dobu chodí místo naměřených vzorků řádky se status=BUSY — tahle značka říká, od kdy a proč. Klíče jsou podmnožinou předchozí tabulky plus transfer_deadline_ms (nejzazší doba přenosu).

record_type=speed_test_result

Ruční test spuštěný tlačítkem, ne součást průběžného mapování. Přenáší se megabajty, ne kilobajty.

KlíčTypPopis
triggertextMANUAL u testu z UI.
statusenumSUCCESS · PARTIAL · ERROR.
transportenumWIFI · MOBILE. Volba BOTH zapíše dva samostatné výsledky.
download_mbps / upload_mbpsdoublePropustnost velkého přenosu.
rtt_median_ms / rtt_p95_msdoubleMedián a 95. percentil odezvy — u ručního testu je sond víc než u vzorku.
packet_loss_pctdoublePodíl sond, které se nevrátily.
download_error, upload_error, latency_errorstextChyby jednotlivých fází testu.

record_type=speed_test_event

KlíčTypPopis
eventenumINTERNET_SPEED_TEST_STARTED · _COMPLETE · _ERROR.
targetenumZvolený cíl testu včetně BOTH.
status, trigger, error, messagetextStav a případná chyba běhu testu.

bluetooth_classic

source: bluetooth_classic · record_type: discovery_result · paired_device · event · registration · status

KlíčTypPopis
discovery_modeenumCLASSIC_DISCOVERY nalezeno skenem · BONDED_CACHE vypsáno ze spárovaných zařízení.
scan_cycle_idlongPořadí skenovacího cyklu. Spojí nález s konkrétním oknem skenu.
result_indexintKolikátý nález v tomto cyklu.
name / aliastextJméno zařízení a uživatelský alias, pokud jsou dostupné.
addresstextMAC adresa zařízení.
bond_stateint10 nespárováno · 11 páruje se · 12 spárováno.
device_typeint1 Classic · 2 LE · 3 Dual.
bluetooth_classtextTřída zařízení (typ a služby).
uuidslistNabízené služby.
rssi_dbmintSignál v okamžiku nálezu.
pairedboolJen u paired_device, vždy true.
event / statusenumCLASSIC_DISCOVERY se stavem REQUESTED · STARTED · FINISHED · REJECTED · ERROR.
found_devicesintKolik zařízení cyklus našel — v FINISHED je to jeho výsledek.
receiver_flagenumRECEIVER_EXPORTED nebo IMPLICIT. Discovery broadcasty chodí ze systému, takže s neexportovaným receiverem sken v datech vypadá mrtvý — proto se použitý příznak zapisuje.
callback, registered, error, messagemixVýsledek registrace receiveru.

status=ADAPTER_DISABLED znamená vypnutý Bluetooth. Bez tohoto hlášení by zdroj vypadal jako zapnutý, jen bez jediného nálezu.

bluetooth_ble

source: bluetooth_ble · record_type: advertisement · status

Kompletní advertising payload včetně syrových bajtů. Sken běží v režimu nízké latence a nefiltruje, takže v hustém prostředí je to nejvydatnější zdroj řádků.

KlíčTypPopis
callback_typeintTyp callbacku skeneru (všechny shody, první shoda, ztráta shody).
name, alias, addresstextIdentifikace zařízení.
address_typeintVeřejná nebo náhodná adresa (Android 15+). Vysvětlí, proč se adresa mění v čase.
bond_state / device_typeintStejný význam jako u bluetooth_classic.
rssi_dbmintSignál přijatého paketu.
tx_power / record_tx_powerintVysílací výkon podle skeneru a podle obsahu advertisingu. S RSSI dává hrubý odhad vzdálenosti.
connectable / legacyboolLze se připojit; jde o starý formát advertisingu.
data_statusintZda je payload úplný, nebo pokračuje dalším paketem.
primary_phy / secondary_phyintFyzická vrstva (1M, 2M, kódovaná).
advertising_sidintID advertising setu u rozšířeného advertisingu.
periodic_advertising_intervalintInterval periodického advertisingu, když ho zařízení používá.
advertise_flags / advertised_nameint / textPříznaky a jméno přímo z advertising paketu.
service_uuids / service_solicitation_uuidslistNabízené a vyžadované služby.
manufacturer_datahexData výrobce jako 0xIDID:hex, oddělené čárkou. Podle ID výrobce jde zařízení typovat.
service_datahexData služeb jako uuid:hex.
advertising_datahexCelá mapa AD typů jako 0xTT:hex (Android 13+).
raw_bytes_hexhexSyrový advertising paket. Umožní dopočítat cokoli, co ostatní klíče nepokrývají.
raw_scan_record / raw_scan_resultrawtoString() obou objektů.
status / error_codeenum / intSCAN_FAILED s kódem chyby, nebo ADAPTER_DISABLED.

collector_heartbeat

source: collector_heartbeat · record_type: collector_heartbeat · každých 5 s

Heartbeat není zdroj dat o okolí, ale o měření samotném. Prochází stejnou frontou i stejným writerem jako ostatní vzorky, takže z hotového souboru jde zpětně určit, kdy který modul opravdu běžel a jestli se zápis nezadrhl. Ticho v datech tak nelze zaměnit za chybu.

KlíčTypPopis
active_collectorslistTřídy běžících kolektorů, abecedně.
active_sourceslistZdroje, které se při startu podařilo opravdu zaregistrovat — ne ty zaškrtnuté.
writer_statusenumOK · RETRYING · DRAINING · DRAINED · FAILED · CANCELLED · STOPPED.
queue_sizelongKolik vzorků právě čeká ve frontě. Trvale rostoucí hodnota znamená, že zápis nestíhá.
accepted_samples, written_samples, dropped_sampleslongPrůběžné čítače, stejný význam jako v hlavičce.
writer_errortextPrvní chyba zápisu, pokud nějaká nastala.

haptic

source: haptic · record_type: haptic

Vibrace je mechanický impulz a telefon zároveň nahrává akcelerometr i gyroskop, takže si každé zabzučení zapíše do vlastních dat jako otřes, který nepochází z chůze. Tenhle záznam říká, kdy k němu došlo, aby šlo okolo něj v senzorickém proudu vyříznout okno. Do dat se zapisuje ztráta a návrat výchozí sítě a značka místa; alarm selhaného zápisu záznam nemá, protože v tu chvíli už writer nežije — nese ho end_reason=WRITER_ERROR a za tím okamžikem žádná senzorická data nevznikají.

KlíčTypPopis
signalenumTRANSPORT_LOST výchozí síť zmizela a do dvou sekund ji nic nenahradilo · TRANSPORT_RESTORED síť je zpátky · SELECT obsluha označila bod, ke stejnému času patří survey_point.
patterntextRytmus signálu: thud, tick-tick nebo tick.
nominal_duration_mslongJmenovitá délka obálky, ne změřená. U skládaného efektu určuje doznívání systém, takže okno na vyříznutí se má brát s rezervou.
composedbooltrue = telefon umí primitiva VibrationEffect.Composition a šlo o ťuknutí; false = náhradní waveform se stejným rytmem.
deliveredboolfalse znamená, že systém vibraci odmítl — otřes tedy v datech není.

session

source: session · record_type: session_started · session_paused · session_resumed · survey_point

Start pokračuje do posledního neresetovaného měření, takže jedna session může mít víc oddělených úseků. Tyhle záznamy říkají, kde úsek začal a kde skončil — bez nich by se pauza v datech nedala odlišit od díry v pokrytí nebo od zamrzlého sběru. Pauza je schválně dvě samostatné události, ne jeden záznam s délkou: záznam s délkou by musel počkat na konec pauzy, a kdyby aplikaci mezitím zabil systém, nevznikl by vůbec.

KlíčTypPopis
session_idlongSession, ke které úsek patří. U navázání se nemění — proto je z ní poznat, že jde o pokračování, ne o nové měření.
segment_started_at_epoch_mslongZačátek úseku. U session_paused začátek toho právě ukončeného.
session_started_at_epoch_mslongPrvní Start celé session; u session_started a session_resumed.
paused_at_epoch_mslongOkamžik Stopu; jen u session_paused.
paused_since_epoch_mslongKdy začala pauza, na kterou se navazuje; jen u session_resumed. Rozdíl proti segment_started_at_epoch_ms je délka pauzy.
segment_running_ms / running_ms_totallongDélka ukončeného úseku a součet všech dosavadních; jen u session_paused. Součet odpovídá running_ms v hlavičce.
running_ms_beforelongNaběhaný čas před tímhle úsekem. U session_started nula.
distance_m / distance_m_beforedoubleTrasa na konci úseku, respektive na začátku navázaného. Vzdálenost překonaná během pauzy se do trasy nezapočítá — kotva se navázáním zahazuje.
accepted_samples_beforelongKolik vzorků session měla, než se navázalo; jen u session_resumed.
end_reason / statusenumProč a v jakém stavu úsek skončil; jen u session_paused. Stejné hodnoty jako end_reason a session_status v hlavičce.
previous_status / previous_writer_errortextStav a chyba předchozího úseku; jen u session_resumed. Navázání vrací řádek session do běhu a přepisuje na něm stav i chybu, takže tohle je jediné místo, kde selhaný zápis zůstane dohledatelný i po úspěšném dokončení.

record_type=survey_point

Značka místa, na kterém měření stojí. Uvnitř budovy GNSS polohu nedá, takže tohle je jediné, co v datech spojí naměřené hodnoty s bodem na půdorysu: obsluha se zastaví, klepne na Označit bod, chvíli počká a jde dál. Značka stojí samostatně na časové ose a point_index se do ostatních záznamů nepřidává — hodnoty se k bodu přiřazují časovým oknem za značkou, ne klíčem v každém řádku.

KlíčTypPopis
session_idlongSession, do které bod patří.
point_indexintPořadí bodu od 1 za běžící úsek. Po navázání začíná znovu od jedničky — body ze dvou úseků rozliší running_ms_total nebo předchozí událost session_resumed.
labeltextVolitelný popisek z pole nad tlačítkem. Prázdný bod zůstane jen pořadovým číslem, což pro průchod podle očíslovaného půdorysu stačí.
marked_at_epoch_mslongSystémový čas klepnutí. Řádek nese i běžný elapsed_realtime_ns, podle kterého se okno vyřezává.
running_ms_totallongNaběhaný čas sběru v okamžiku značky, včetně předchozích úseků a bez pauz.
distance_mdoubleUšlá trasa v okamžiku značky. Rozdíl proti předchozímu bodu říká, kolik metrů mezi nimi obsluha opravdu ušla.

Klepnutí zároveň zabzučí, takže ke každému bodu existuje i řádek haptic se stejným časem — otřes v senzorech tedy není nevysvětlený.

Parametry měření

Každý zdroj lze před startem samostatně zapnout a u části z nich i nastavit tempo. Hodnoty mimo rozsah se přitáhnou do mezí — jinak by například interval_s=0 udělal z periodické smyčky tight loop.

ZdrojParametrVýchozí · rozsah
senzory (7×)interval_ms50 ms · 10–1 000
noisesample_rate_hz8 000 Hz · 8 000–48 000
locationinterval_ms1 000 ms · 100–60 000
gnss_rawinterval_ms1 000 ms · 100–60 000
wifi, wifi_rtt, mobile_network, network_contextinterval_s30 s · 5–300
bluetooth_classic, bluetooth_blescan_s / pause_s15 s · 5–60 / 45 s · 5–300
internet_qualitytransport_targetWi‑Fi + mobilní data · AUTO, WIFI, CELLULAR, BOTH
sample_interval_ms1 000 ms · 500–5 000
download_kib / upload_kib64 KiB · 1–1 024 / 8 KiB · 1–256
latency_probe_count3 × · 2–3
capacity_interval_s30 s · 10–300
capacity_download_kib1 024 KiB · 64–10 240
capacity_upload_kib128 KiB · 8–2 048
download_mb (ruční test)10 MB · 1–100
upload_mb (ruční test)5 MB · 1–50
Interní limity: 3 s timeout požadavku, 5 s strop krátkého přenosu, 15 s strop burstu, 60 s strop ručního testu.
wifi_throughputcycle_interval_s60 s · 10–600
connect_timeout_s30 s · 5–120
download_kib1 024 KiB · 64–10 240
upload_kib128 KiB · 8–2 048
latency_probe_count3 × · 1–5
Interní limit: 20 s timeout jednoho HTTPS požadavku. Seznam měřených sítí není parametr — zadává se zvlášť v kartě zdroje a hesla se ukládají do předvoleb aplikace v čitelné podobě.

Uložení v telefonu

Data leží v lokální databázi Room / SQLite, schema verze 4. Nikam se neodesílají; export do souboru dělá až uživatel.

Tabulka sensor_samples

SloupecTypPopis
idlongPrimární klíč. Určuje pořadí u vzorků se stejným časem.
sessionIdlongOdkaz na session; při smazání session zmizí i vzorky.
sourcetextZdroj vzorku.
timestampEpochMslongExportuje se jako epoch_ms.
elapsedRealtimeNanoslongExportuje se jako elapsed_realtime_ns.
payloadtextPayload zdroje včetně připojených přípon.

Tabulka measurement_sessions

Jeden řádek na běh měření. Sloupce odpovídají polím v hlavičce exportu; navíc se během běhu průběžně aktualizují acceptedSamples, writtenSamples, droppedSamples a lastPersistedAtEpochMs, a to ve stejné transakci jako vložení dávky vzorků. Když proces zanikne, zůstane session ve stavu RUNNING a další start aplikace ji uzavře jako INTERRUPTED s end_reason=PROCESS_RECOVERY — částečný záznam zůstává exportovatelný.

← Zpět na schéma sběru