3cb82169b6a69950efc7597d2392960d3bd3113a
补偿提交:归档自动提交(commitOnArchive)未落盘,由主聊天代为补交 S-M4 全部源码变更(16 新 + 4 改 + 1 删)。 - core:ble:BleDriver/BleConnection 抽象 + SystemBleDriver/FakeBleDriver(演示模式,协议精确样例帧)/SwitchableBleDriver;BleSession 四态状态机(Ready)、MTU 协商、API 33+ 回调签名,修复 notifyBytes 自建 listener 收不到回调的骨架缺陷 - app:feature/collect 九件套(权限分版动线/扫描/连接/会话编排/退避重连/激励下发/MonitorValue payload 入队/测点源 M5 预留接口),Tab.COLLECT 换挂 CollectWorkspaceFragment,删除占位 CollectFragment - 修正存量协议测试断言:接口文档 140V 系算术笔误,按公式口径应为 140.39 验证::app:assembleDebug BUILD SUCCESSFUL(app-debug.apk 8.6MB);单测 15/15 绿(协议 12 + payload 3)
task(0a00ccbd-6f98-4730-adf2-6f1e864823de): Mount M2 project workbench home and modernize M1 layouts
监测数据不落地平台 · 安卓客户端
外业监测数据「不落地」采集与上传工具:现场用手机通过蓝牙连接振弦式读数仪(IE-1000)与综合采集仪(VM208),解析采集数据并直接上传至院方监测平台,配合离线队列保证弱网/断网可用。
本文件为 2026-09-03 重建版(基线文件曾随工作树清理丢失,按任务记录复刻)。
技术基线
| 项 | 选型 |
|---|---|
| 语言 / UI | Kotlin 2.0.21、View 体系 + Material 3 |
| 架构 | MVVM(ViewModel + StateFlow/LiveData) |
| 网络 | Retrofit 2.11 + OkHttp 4.12 + kotlinx.serialization 1.7.3 |
| 本地存储 | Room 2.6.1(离线优先队列)+ DataStore 1.1.1 + EncryptedSharedPreferences |
| 依赖注入 | Hilt 2.52 |
| 蓝牙 | Android 原生 BLE API;协议解析独立纯 Kotlin 模块 |
| 构建 | AGP 8.7.3 / Gradle 8.10.2 / JDK 17 / minSdk 26 / targetSdk 34 |
模块结构
app 业务壳:导航、主题、权限、配置注入(M1–M6 页面挂载点)
core
├ common AppResult / UiState / 日志门面(纯 Kotlin 优先)
├ network 鉴权三要素拦截器、ApiEnvelope 统一解析、Retrofit 装配
├ database Room AppDatabase + 上传队列(离线优先参考实现)
└ ble BLE 扫描(按名称前缀过滤)、GATT 连接封装骨架
ble-protocol 纯 Kotlin JVM:IE-1000 / VM208 帧解析(零 Android 依赖,可独立单测)
依赖方向:app → core:* + ble-protocol;core:{network,database,ble} → core:common;ble-protocol 零依赖。
快速开始
- Android Studio(Ladybug+,JDK 17)打开工程根目录,等待 Gradle Sync;
- 服务器地址、SecretKey、SystemCode 通过
app壳的配置仓储注入(见core:network的NetworkConfig),一律不写入代码库; - 运行:
./gradlew :app:assembleDebug;协议单测:./gradlew :ble-protocol:test。
配置说明
| 配置项 | 说明 | 注入点 |
|---|---|---|
| baseUrl | 平台接口地址(测试环境见接口文档 1.2.4) | ConfigRepository → NetworkConfig |
| SecretKey | 供应商调用密钥(会定期更换,必须可配置) | 同上 |
| SystemCode | 供应商编码(与 SecretKey 一一对应) | 同上 |
| Token | 登录后颁发,登录接口外必带 | TokenProvider(DataStore) |
文档索引
docs/安卓客户端功能明细表.md—— 36 个功能点、模块映射、优先级、接口覆盖对照docs/安卓客户端开发计划表.md—— 6 阶段 12 周迭代计划、人日估算、里程碑、风险docs/BLE-IE1000.txt—— IE-1000 / VM208 蓝牙协议原始说明- 接口规范 V4.5 —— 上海城建勘测院《监测数据不落地系统接口文档》(docs/ 下 docx)
Description
Languages
Java
52.7%
Kotlin
47.3%