Files
m-stecmd/README.md
阿猫 e96e92d7ab *
2026-09-03 12:38:16 +08:00

54 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 监测数据不落地平台 · 安卓客户端
外业监测数据「不落地」采集与上传工具现场用手机通过蓝牙连接振弦式读数仪IE-1000与综合采集仪VM208解析采集数据并直接上传至院方监测平台配合离线队列保证弱网/断网可用。
> 本文件为 2026-09-03 重建版(基线文件曾随工作树清理丢失,按任务记录复刻)。
## 技术基线
| 项 | 选型 |
|---|---|
| 语言 / UI | Kotlin 2.0.21、View 体系 + Material 3 |
| 架构 | MVVMViewModel + 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 业务壳导航、主题、权限、配置注入M1M6 页面挂载点)
core
├ common AppResult / UiState / 日志门面(纯 Kotlin 优先)
├ network 鉴权三要素拦截器、ApiEnvelope 统一解析、Retrofit 装配
├ database Room AppDatabase + 上传队列(离线优先参考实现)
└ ble BLE 扫描按名称前缀过滤、GATT 连接封装骨架
ble-protocol 纯 Kotlin JVMIE-1000 / VM208 帧解析(零 Android 依赖,可独立单测)
```
依赖方向:`app → core:* + ble-protocol``core:{network,database,ble} → core:common``ble-protocol` 零依赖。
## 快速开始
1. Android StudioLadybug+JDK 17打开工程根目录等待 Gradle Sync
2. 服务器地址、SecretKey、SystemCode 通过 `app` 壳的配置仓储注入(见 `core:network``NetworkConfig`**一律不写入代码库**
3. 运行:`./gradlew :app:assembleDebug`;协议单测:`./gradlew :ble-protocol:test`
## 配置说明
| 配置项 | 说明 | 注入点 |
|---|---|---|
| baseUrl | 平台接口地址(测试环境见接口文档 1.2.4 | ConfigRepository → NetworkConfig |
| SecretKey | 供应商调用密钥(会定期更换,必须可配置) | 同上 |
| SystemCode | 供应商编码(与 SecretKey 一一对应) | 同上 |
| Token | 登录后颁发,登录接口外必带 | TokenProviderDataStore |
## 文档索引
- `docs/安卓客户端功能明细表.md` —— 36 个功能点、模块映射、优先级、接口覆盖对照
- `docs/安卓客户端开发计划表.md` —— 6 阶段 12 周迭代计划、人日估算、里程碑、风险
- `docs/BLE-IE1000.txt` —— IE-1000 / VM208 蓝牙协议原始说明
- 接口规范 V4.5 —— 上海城建勘测院《监测数据不落地系统接口文档》docs/ 下 docx