Android · 离线数据采集 · 版本 1.5.2

一部手机,
就是一台真正的仪器。

Signal Collector 持续记录手机所能触及的传感器、无线电和网络数据,直接写入手机——没有云存储,测得的数据不会离开设备。

真实截图 · Pixel 10a

  1. 测量进行中,圆环处于展开状态

    运行中的测量。圆环随数据到来显示卫星、网络和传感器。

  2. 选择要测量的技术

    选择测量什么。每个数据源是一行,写明它记录什么。

  3. 测量进行时的控制按键

    开始、重置和停止,上方是时长、距离和记录条数。

  4. 采集状态与导出面板

    面板底部:每个数据源在做什么,以及将要离开手机的文件。

  5. 从标题栏打开的设置菜单

    设置:投送到你自己的服务器、单位,以及停止之后发生什么。

本地 手机上的 Room / SQLite,不会自行发送任何内容
连续 屏幕锁定时继续采集
触手可及 四个小部件、一个快捷设置磁贴和通知栏
导出 TXT 或 GZIP,按大小自动选择

内部测试

下一个版本,在商店上架之前。

每一个构建在进入正式版之前都会先进入内部测试。用手机已登录的 Google 账号加入,之后更新会像普通更新一样送达。

走一趟。
拿到完整的环境。

每一个场景
最后都落到一个文件里。

衡量一台仪器的不是它的数据源清单,而是它能回答什么问题。以下是本应用为之而生的十二个场景中的六个——每一个都是一次走查,末尾都有一个文件。

01

会议室里的信号盲点

把手机放进口袋走一遍楼层,每到一个门口说一句备注。得到的是逐秒的吞吐量、手机实际连接的 AP,以及 一个具体的房间,而不是一场争论 ——在两个部门之间。

02

不用工程车的路测

两张 SIM 同时扫描,GPS 一秒一次,手机锁在仪表台上。制式、Cell ID 或 PCI 的每一次变化都记为一个事件,因此 切换点可以精确到米.

03

GPS 派不上用场的勘测

在仓库里,天空就是屋顶。用应用自带的取景器给每条通道拍一张照片作为标记,同时采集 AP、MLO 链路和 RTT 距离—— 在买下第一个新 AP 之前就有一张覆盖图.

04

自己上报的传感器

楼里几十个 BLE 温度计,一个都没有配对。走过去,它们的温度、湿度和电池电压就会 带着名称、以 SI 单位到达,与它们来源的原始字节并排放在一起。

05

给房东看的证据

走十分钟,就有一个带时间戳、位置、信号强度和房间照片的文件。“到处信号都很好”于是变成 一句可以核对的说法.

06

不接受云服务的客户

照常测量,然后投送到你自己的 S3、WebDAV 或 SFTP——或者直接交付一个文件。照片和语音备注从不进入手机相册,因此 保密协议依然签得下去.

全部十二个场景,以及用什么读取这些数据

完整更新日志

工作进度,
看得见。

1.5.1 版在每一次安装中都带上全部十二种语言,让漫长的导出或重置过程看得见,并新增了活页本,用来记下没有测量运行时标记的点、拍下的照片和做过的测试。

01

真正在里面的语言

Google Play 过去只投送手机在安装时拥有的语言,因此按应用选择语言时列出的捷克语等选项 背后其实没有任何字符串。现在全部十二种译文都随每一次安装一起提供。

02

按键上的彗星

在大型测量上,下载、分享和重置需要几秒到几分钟。现在有一颗彗星沿着按键边缘绕行,尾巴随已完成的部分变长,下方还有一行实时文字说明 已经完成多少、已经运行多久,以及大约还剩多久。可用空间在写入开始之前就会显示——紧张时为琥珀色,导出放不下时为红色。

03

一本活页本

测量点、照片、语音备注、一次性互联网测试和一轮 Wi-Fi 吞吐量循环都不再需要先按“开始”。在没有测量运行时,它们会进入一份单独的记录 不启动采集器、不占用唤醒锁,也不计入免费时长 ——它有自己的卡片、自己的分享文件和自己的清空。

04

从图标分享,使用系统控件

测量停止之后长按应用图标, “分享”就在“开始”旁边;它会打开应用并立即开始导出。开关、文本框、选项和提示现在都是标准的 Android 控件——按键和仪器本身保持原样。

只通过
Google Play 安装。

版本1.5.2
平台Android 12+
供应范围Play 允许的所有国家和地区
在 Google Play 上获取
  1. 1

    从 Google Play 安装——不需要邀请、不需要测试者名单、不需要等待。

  2. 2

    每年最多可以免费测量一小时。

  3. 3

    当这一小时不够用时,可以在应用内解锁无限测量。

Google Play 是唯一的分发渠道:它为更新链签名,任何地方都不提供直接下载的 APK。应用本身运行时不需要我们的账号,也不需要我们的服务器。

每年一小时,
让你拿定主意。

现场仪器无法靠截图来判断,因此 Signal Collector 每年给每部手机一小时测量时长——足够走完一条路线、看着圆环填满并打开导出文件。这一小时按测量时长计算,而不是按次数,因此可以分在几天、几个地点使用。用完之后,解锁是一次性的应用内购买,价格按你所在国家或地区的 Google Play 定价:没有订阅,没有续费日期,并且会带到用同一账号登录的每一部手机上。

1 小时免费测量时长,每年重置
一次购买此后不受限制,你的每一部手机都适用
24 小时从一条评价到一个分好类的问题

反馈通过 Google Play 的评价进行;每一条新评价都会在一天之内被读到、转成问题并得到答复,修复随下一次更新发布。付费应用没有广告、没有分析统计,测量过程中也没有任何第三方 SDK——开发由售价支撑。

从物理传感器
到你周围的网络。

每个数据源都可以在测量之前单独开关,部分技术还可以设置间隔。

01

蜂窝网络

服务小区与邻区、LTE/NR/3G/2G 参数、注册变化以及实验性主动扫描。

02

GNSS 与位置

1 Hz 的 GPS、卫星、GNSS 原始观测、时钟、AGC、导航电文、NMEA 和天线信息。

03

Wi‑Fi 与 RTT

当前连接、附近的 AP、Wi‑Fi 7 MLO、能力集,以及到支持的接入点的 RTT/FTM 测距。

04

Bluetooth

经典设备发现与 BLE 广播数据,包括厂商数据和服务数据。

05

传感器与噪声

运动、磁场、气压、光线、距离、旋转矢量,以及参考性的 dBFS 电平,不存储任何音频。

06

网络与传输

逐秒采集真实的下载、上传、RTT、抖动和超时,30 秒的容量突发测试,并可同时绑定到指定的 Wi‑Fi 和蜂窝网络。

07

SIM 与 eSIM

卡槽、运营商、MCC/MNC、漫游,以及哪张卡承载数据——小区本身指明的是发射端,而不是谁在观测。ICCID 和 EID 都不记录:它们是长期不变的订阅号码,连换手机都不会改变。

不在手机里的
传感器。

手机测量它能触及的东西。墙上的探头、线缆另一端的仪表、屋顶上的接收机——这些必须通过别的途径进来。进来的途径有四条,第一条已经可用。

01

会广播的传感器 · 现已可用

BTHome、Ruuvi、ATC 与 pvvx、Eddystone 遥测。无需配对,也无需连接:传感器把读数喊进房间,正在运行的扫描就听见了。温度、湿度、气压、CO₂、颗粒物、电压——带着名称、以 SI 单位,写在与其他一切相同的文件里。

02

Bluetooth LE 配置文件 · 计划中

Environmental Sensing 会自述它测的是什么,因此一台从没听说过的仪表也能连同单位一起读出。旁边还有标准配置文件——电池、体温计、位置——以及 Nordic UART 服务,自制探头通常就用它说话。

03

线缆上的串口 · 计划中

CDC-ACM、FTDI、CP210x、PL2303、CH340。这五类芯片几乎覆盖了所有插上 USB 又不是磁盘的设备:Arduino 和 ESP32 开发板、u-blox 接收机、频谱分析仪,以及用 SCPI 应答的仪表。

04

本地网络上的设备 · 计划中

通过 mDNS 发现,通过 HTTP 或纯 TCP 流读取。请求绑定在 Wi-Fi 网络上,因此不会从移动数据出去,也不会在通往隔壁房间那台机器的路上迷路。

不作任何猜测。传感器自己标记为无效的读数会被略去,而不是写成一个数字;加密的数据记为加密,而不是解成臆造的内容;应用不认识的格式则以原始字节留在文件里。所有键都列在 数据字典.

不必先打开应用
就能按下的按键。

现场测量往往一只手拿着手机,另一只手忙别的。因此每一个要紧的控制在应用之外都有位置,而且它们发出的指令与屏幕上完全一样。

01

测量面板

一个小部件,启动它内部保存的数据源组合和间隔。运行时它会显示状态、带上测量的数字,再点一次会先询问再停止。这个按键保留自己那份启动内容的副本,因此之后在应用中切换预设,不会悄悄改变桌面测量的内容。

02

标记点

最多四个你自己的标签并排——门口、拐角、窗口各点一下,立即写入该点。没有测量运行时,这个按键会一次完成开始测量和标记点。

03

数据源磁贴

把一个数据源显示为一个大数字:范围内的接入点、参与定位的卫星、响度。没有测量运行时点一下,会只用这个数据源开始一次测量。

04

数据源读数

最多六个数据源,每行一个,按你挑选的顺序排列——一眼读完,不必去找。

05

快捷设置中的磁贴

在任何应用中以及锁屏上开始和停止。它使用应用上次测量时的配置。在有安全锁的锁屏上,它会先要求解锁手机:启动的毕竟是带麦克风的定位。

06

图标下的快捷方式

长按应用图标,在没有测量时给出“开始”,测量进行时给出“停止”和“标记点”。这样标记的点没有标签——标签在小部件按键上,那里放得下。

07

通知

测量时它带有时长、记录条数和步行距离,下方是“标记点”和“停止”。在没有测量运行的整段时间里,“开始”都可以留在通知栏中,这样分段进行的测量就不必每次都去找应用。

按键由测量本身每五秒重绘一次——小部件不可能比喂给它数据的应用更新。因此每个按键都带着它的数字被读取的时间;秒表是例外,它自己走。所有按键都在同一个地方设置, 桌面按键 位于设置菜单中,说明见 帮助.

来自一部真实
手机的数据。

以下所有数据都在运行 Android 16 的 Google Pixel 10a 上测得。在 0.7.2 版上,一次分三段进行的测量共采集了 87,597 条记录:时长从 2:49 经 7:21 增至 8:12,测量编号始终没变,各段之间二十多分钟的暂停也没有计入时长。距离数字来自同一部手机上 0.7.1 版的一次九分钟运行——此后距离滤波没有改动。

429 m被距离滤波丢弃的 GPS 噪声
0 m一部从未移动过的手机“走出”的距离
9/9起始与结果成对的突发测试

前 274 次定位的精度在 9 到 114 米之间。把相邻定位之间的距离相加会得到 429 米,滤除粗略定位后为 28 米;把锚点移过阈值之后则为零。测试手机中没有 SIM,因此测绘的蜂窝分支正确地把网络报告为不可用。

安装、变更
与源代码。

代码仓库保持私有。已登录的协作者可以在其中找到源代码、打了标签的发布和 APK 校验和。

测得的数据从不离开手机。

应用可离线工作,不含任何分析、广告、归因或崩溃上报 SDK——今后也不会加入。构建这个应用所用的每一个库都 在隐私政策中列明,并各自锁定到确切版本,因此内部的任何变化都必然伴随一次说明此事的发布。可选的传输质量连续测绘使用公开的 Cloudflare Speedtest 端点进行小型 HTTPS 测试传输和周期性突发;它不是最大互联网速度的测量。该模块默认关闭。如果你购买解锁,会有一份购买回执离开手机,其中不含任何测得的数据;相关说明见 隐私政策。导出文件可能包含敏感的位置数据和附近网络的标识符。

从一个传感器
到文件里的一行。

每个数据源按自己的节奏运行。采样会被打上时间和最后已知位置,经过一个非阻塞队列,分批写入本地数据库。图中带下划线的键指向 数据字典.

数据通路示意图:数据源、SampleSink、队列、写入器、Room/SQLite、心跳与导出

采集设置

与应用在测量开始前为每个数据源提供的参数相同。取值范围和数据量估算与实现一致;有改动会立刻反映到上面的图中。

ms

范围 10–1000 ms

ms

范围 100–60000 ms

s

范围 5–300 秒

s

范围 5–60 秒

s

范围 5–300 秒

互联网测绘连续测量使用的网络

两者都选时,会同时运行两个独立的 Android Network 句柄。

ms

范围 500–5000 ms

KiB

范围 1–1024 KiB

KiB

范围 1–256 KiB

s

范围 10–300 秒

KiB

范围 64–10240 KiB

KiB

范围 8–2048 KiB

407 MB每 30 分钟测绘的数据用量上限估算
8 400七个传感器每分钟的采样数
120互联网测绘每分钟的采样数
20每 10 分钟的 Wi-Fi 与蜂窝扫描次数

这个估算是上限:链路慢时一次采样耗时更长,同样的时间里采样更少,传输的数据也更少。这不是最大速度的测量—— 原因.

更新日志 1.0.0

以 TXT 打开 ↗