阿猫 ddd5009bb1 task(0a00ccbd-6f98-4730-adf2-6f1e864823de): Mount M2 project workbench home and modernize M1 layouts
- FeatureMount: HOME tab now mounts ProjectWorkspaceFragment; delete placeholder HomeFragment
- app/build.gradle.kts + libs.versions.toml: add androidx recyclerview and swiperefreshlayout for project list and pull-to-refresh
- NetworkModule: register ProjectApi (M2 2.5.1.1 GetProjectList) via provideProjectApi
- SessionRepository: add SessionState.Restoring as initial state so cold start renders neutral loading instead of prompting login
- MineFragment/layout: consumer-grade flow with horizontal identity card (whole card acts as login CTA when signed out), config warning card, grouped settings rows; drop back button and manual refresh entry
- MineViewModel: remove manual refresh(); session restore is now automatic on cold start
- LoginFragment/layout: MaterialToolbar back, segmented MaterialButtonToggleGroup for account/SMS mode, TextInputLayout floating-label inputs, linear progress below button
- ConfigFragment/ChangePasswordFragment layouts: unify back navigation to Toolbar, switch plain EditTexts to TextInputLayout, replace ProgressBar with LinearProgressIndicator
- strings.xml: add M2 home workbench copy and mine/login labels; remove unused action_back, mine_login, mine_refresh, mine_config_ready, mine_logout_confirm
2026-09-03 23:50:20 +08:00
*
2026-09-03 17:14:31 +08:00
*
2026-09-03 17:14:31 +08:00
*
2026-09-03 17:14:31 +08:00
*
2026-09-03 13:07:18 +08:00
*
2026-09-03 12:38:16 +08:00
*
2026-09-03 12:38:16 +08:00
*
2026-09-03 12:38:16 +08:00
*
2026-09-03 12:38:16 +08:00
*
2026-09-03 17:14:31 +08:00
*
2026-09-03 12:38:16 +08:00
*
2026-09-03 17:14:31 +08:00

监测数据不落地平台 · 安卓客户端

外业监测数据「不落地」采集与上传工具现场用手机通过蓝牙连接振弦式读数仪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-protocolcore:{network,database,ble} → core:commonble-protocol 零依赖。

快速开始

  1. Android StudioLadybug+JDK 17打开工程根目录等待 Gradle Sync
  2. 服务器地址、SecretKey、SystemCode 通过 app 壳的配置仓储注入(见 core:networkNetworkConfig一律不写入代码库
  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
Description
智慧监测
Readme 34 MiB
Languages
Java 52.7%
Kotlin 47.3%