docs: 新增 App 操作手册 + README 里程碑/阅读顺序更新
docs/android_app/app_manual.md(新,223 行): - 安装与首次连接(含"重启后 USB 授权失效需重新确认") - 界面总览图、实时界面各控件、测温点增删 - 标记怎么读(准星/描边字/MAX-MIN/引线的含义) - 相册、分析(离线测温)逐项操作 - 设置逐项说明,并标出**是否真正生效**:发射率/报警温度/语言目前仅保存未接入, 云同步为占位——避免文档承诺 App 做不到的事 - 方向规则(文件跟随握持、预览锁定、录像方向在按下瞬间确定) - 文件位置与 MDT 容器格式、远程预览双机用法、常见问题、已知限制 (相册不列录像、红热调色板为近似、PDF/巡检未接入界面) README.md:阅读顺序加入操作手册;仓库结构表更新;里程碑补记 2026-09-11~12 真机多轮联调的三个根因级修复(launchMode / SET_CONFIGURATION / 软件画布卡顿, 6.5→15.1fps)与同期完成项。 session_state.md 第二十四轮条目补记本轮新增文档。
This commit is contained in:
@@ -8,10 +8,11 @@ MAG160C 热像仪(160×120,15fps,USB VID `0x833C`)的逆向工程与双
|
|||||||
|
|
||||||
1. `docs/android_app/HANDOFF_DEVELOPMENT.md` — 安卓 App 总交接(必读)
|
1. `docs/android_app/HANDOFF_DEVELOPMENT.md` — 安卓 App 总交接(必读)
|
||||||
2. `docs/android_app/session_state.md` — 会话心跳与待办(最新进度)
|
2. `docs/android_app/session_state.md` — 会话心跳与待办(最新进度)
|
||||||
3. `analysis/README.md` — 逆向工程总目录索引(Linux/Windows/Android 三条线)
|
3. `docs/android_app/app_manual.md` — **App 操作手册**(界面/设置/方向/排障)
|
||||||
4. `analysis/magcx_official_flow.md` — **权威 USB 协议结论**(官方源码逐行核对版)
|
4. `analysis/README.md` — 逆向工程总目录索引(Linux/Windows/Android 三条线)
|
||||||
5. `analysis/protocol_spec.md` — 早期 PC 端协议逆向(硬件验证记录)
|
5. `analysis/magcx_official_flow.md` — **权威 USB 协议结论**(官方源码逐行核对版)
|
||||||
6. `csdk/README.md` — C SDK 文档(构建/API/工具/测试)
|
6. `analysis/protocol_spec.md` — 早期 PC 端协议逆向(硬件验证记录)
|
||||||
|
7. `csdk/README.md` — C SDK 文档(构建/API/工具/测试)
|
||||||
|
|
||||||
## 仓库结构
|
## 仓库结构
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ MAG160C 热像仪(160×120,15fps,USB VID `0x833C`)的逆向工程与双
|
|||||||
| `IR_Camera_SDK-1.0.1/` | 原厂 Windows/Android/Linux SDK 原始包 |
|
| `IR_Camera_SDK-1.0.1/` | 原厂 Windows/Android/Linux SDK 原始包 |
|
||||||
| `app/` | 官方安卓 APK 存档(普通版/专业版/ThermoScope/demo)|
|
| `app/` | 官方安卓 APK 存档(普通版/专业版/ThermoScope/demo)|
|
||||||
| `build-artifacts/` | 构建产物(安卓 APK、PC demo3、DDT 标定数据)|
|
| `build-artifacts/` | 构建产物(安卓 APK、PC demo3、DDT 标定数据)|
|
||||||
| `docs/android_app/` | 安卓 App 交接文档(HANDOFF / session_state / 逆向功能总表)|
|
| `docs/android_app/` | 安卓 App 文档:`app_manual.md` 操作手册 / `HANDOFF_DEVELOPMENT.md` 交接 / `session_state.md` 进度心跳 / 逆向功能总表 |
|
||||||
| `vendor-docs/` | 厂商资料 |
|
| `vendor-docs/` | 厂商资料 |
|
||||||
| `tools/` | 会话恢复脚本 |
|
| `tools/` | 会话恢复脚本 |
|
||||||
|
|
||||||
@@ -60,6 +61,16 @@ Start-Process "build-artifacts\mag160c_demo3.exe" -WorkingDirectory "build-artif
|
|||||||
USB 层(官方协议 Java 源码逐行复刻)、相机式 UI、拍照/录像/媒体库/分析/PDF
|
USB 层(官方协议 Java 源码逐行复刻)、相机式 UI、拍照/录像/媒体库/分析/PDF
|
||||||
- 2026-09-10:真机联调打通(根因:USB 命令字节序反转,已修复并用单测锁死);
|
- 2026-09-10:真机联调打通(根因:USB 命令字节序反转,已修复并用单测锁死);
|
||||||
官方 App 全量解包入库(jadx + Ghidra)
|
官方 App 全量解包入库(jadx + Ghidra)
|
||||||
|
- 2026-09-11~12:真机多轮联调(无线 adb)。修复根因级的三个问题:
|
||||||
|
**launchMode 缺失**导致 MIUI 重复广播 ATTACHED、建出多个 Activity 争抢相机
|
||||||
|
(重连风暴的真凶);`SET_CONFIGURATION` 复位设备导致相机反复重枚举;
|
||||||
|
**实时画面卡顿**——热像走 `lockCanvas` 软件画布,每帧在 CPU 上放大整屏,
|
||||||
|
实测只有 6.5 帧/秒、单帧 134ms,改用硬件画布后 **15.1 帧/秒、单帧 6.4ms**。
|
||||||
|
同期完成:官方 7×7 局部细节增强移植(含混叠系数修正与黄金值测试)、
|
||||||
|
测温点标注风格重做(准星+描边字,去白底)、拍照/录像方向跟随握持角度、
|
||||||
|
录像 3× 分辨率、分析页与照片标记完全对齐、设置持久化
|
||||||
|
- 文档:`docs/android_app/app_manual.md`(操作手册)、
|
||||||
|
`docs/android_app/session_state.md`(第 18~24 轮修复记录与排查方法)
|
||||||
|
|
||||||
## 仓库说明
|
## 仓库说明
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,223 @@
|
|||||||
|
# MAG160C 安卓 App 操作手册
|
||||||
|
|
||||||
|
适用版本:MAG160C 统一热像版 1.0.0(`com.mag160c.thermal`)
|
||||||
|
硬件:MAG160C 热像仪机芯(160×120 @15fps),USB VID `0x833C` PID `0x0001`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 安装与首次连接
|
||||||
|
|
||||||
|
1. 安装 APK(`build-artifacts/mag160c-app-debug.apk`):
|
||||||
|
```
|
||||||
|
adb install -r -d mag160c-app-debug.apk
|
||||||
|
```
|
||||||
|
也可以直接把 APK 拷进手机点击安装(需允许"安装未知应用")。
|
||||||
|
2. 把热像仪插到手机的 USB 口。系统会弹出 **"允许 App 访问该 USB 设备"** →
|
||||||
|
勾选"始终允许"并确定。**这个授权在手机重启后会失效,需要重新确认一次**。
|
||||||
|
3. App 会自动连接并出图,通常 1~2 秒。画面出现即表示握手完成(内部流程:
|
||||||
|
查设备 → 请求权限 → 握手 → 读标定文件 → 开始出流)。
|
||||||
|
|
||||||
|
> 如果顶栏下面显示"未检测到热像仪",见第 11 节。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 界面总览
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────┐
|
||||||
|
│ FFC 1× 追高·低 铁虹 画中画 │ ← 控制顶栏
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ 热成像画面(锁屏构图) │
|
||||||
|
│ │
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ 相册 拍照(快门) 录像 │ ← 拍摄栏
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ 实时 相册 分析 设置 │ ← 底部导航
|
||||||
|
└─────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
App 固定竖屏显示。转动手机时**界面和画面构图都不跟着转**(见第 8 节)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 实时界面
|
||||||
|
|
||||||
|
| 控件 | 作用 |
|
||||||
|
|---|---|
|
||||||
|
| **FFC** | 手动做一次快门校正。画面会短暂冻结一下,属正常;校正后温度读数会刷新 |
|
||||||
|
| **1×** | 数码变倍,点一次在 1× → 2× → 3× → 4× 之间循环(从画面中心裁剪放大) |
|
||||||
|
| **追高·低** | 全画面最高温/最低温标记的开关与目标(最高、最低、两者、关闭) |
|
||||||
|
| **铁虹** | 切换调色板(12 种,点开选择) |
|
||||||
|
| **画中画** | 可见光画面叠加(首次使用需授予摄像头权限),三档尺寸,可拖动摆放 |
|
||||||
|
| **相册 / 拍照 / 录像** | 见下 |
|
||||||
|
|
||||||
|
**测温点**:直接在画面上**点一下**就加一个测点;**点已有的测点**则删除它。
|
||||||
|
测点会显示序号 + 温度,并随画面一起保存进照片。
|
||||||
|
|
||||||
|
**拍照**:立刻把当前画面存成照片(含温度数据、测点、最高/最低温标记)。
|
||||||
|
|
||||||
|
**录像**:点一次开始,再点一次停止并保存。录制中按钮显示"停止"。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 画面上的标记怎么读
|
||||||
|
|
||||||
|
从本轮起标记改成仪表风格,含义如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─┐
|
||||||
|
───┤ ├─── ← 方形准星 + 四根短臂:指住被测量的那一个像素,
|
||||||
|
└─┘ 中心镂空,不遮挡被测区域
|
||||||
|
│
|
||||||
|
Pt1 25.0℃ ← 描边白字:冷端(黑)和热端(白)上都读得清
|
||||||
|
没有白色底板,不会挡住画面
|
||||||
|
```
|
||||||
|
|
||||||
|
- **`MAX` / `MIN`**:全画面的最高温与最低温,显示哪一个由"追踪"设置决定
|
||||||
|
- **`Pt1` `Pt2` …**:你手动点的测点
|
||||||
|
- **引线**:从读数连到自己那个准星,测点多时不会看错
|
||||||
|
|
||||||
|
温度单位统一为 ℃,显示一位小数。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 相册
|
||||||
|
|
||||||
|
- 列出 `DCIM/MAG160C` 里的照片,按时间倒序(最新的在最前)
|
||||||
|
- **点开**:全屏查看;**双指缩放**、**拖动平移**、**双击复位**
|
||||||
|
- **删除**:右上角"删除" → 确认后从手机中移除(不可恢复)
|
||||||
|
- 返回键回到列表,不会退出 App
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 分析(离线测温)
|
||||||
|
|
||||||
|
进入"分析"页会列出**带温度数据的照片**(早期没有温度数据的旧照片会被过滤掉)。
|
||||||
|
|
||||||
|
打开一张照片后:
|
||||||
|
|
||||||
|
| 操作 | 说明 |
|
||||||
|
|---|---|
|
||||||
|
| **点击画面** | 在空白处加一个测点;点在已有测点上则删除该测点 |
|
||||||
|
| **底部面板** | 显示 最高 / 最低 / 中心 温度,以及测点列表 |
|
||||||
|
| **顶部 · 调色板名** | 切换显示用的调色板 |
|
||||||
|
| **顶部 · 备注** | 给这张照片写一段文字备注(写入文件本身) |
|
||||||
|
| **顶部 · 保存** | 把当前测点烧录进图像,**另存为一张新照片**(温度数据一并保留) |
|
||||||
|
|
||||||
|
分析页显示的标记与照片里已经烧录的标记位置完全一致,不会出现"两个测点"。
|
||||||
|
|
||||||
|
**注意**:分析读的是照片里存的原始温度数据,所以同一张照片任何时候打开,
|
||||||
|
读数都一样(不会因为环境变化而漂移)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. 设置
|
||||||
|
|
||||||
|
| 设置项 | 说明 | 是否影响画面 |
|
||||||
|
|---|---|---|
|
||||||
|
| **默认调色板** | 启动时使用的调色板 | ✔ |
|
||||||
|
| **默认发射率** | 目标发射率(0.01~1.00) | ✖ 目前仅保存,尚未参与温度修正 |
|
||||||
|
| **报警温度** | 报警阈值 | ✖ 目前仅保存,尚未接入报警 |
|
||||||
|
| **追踪** | 最高温 / 最低温 / 最高+最低 / 关闭 | ✔ |
|
||||||
|
| **语言** | 中文 / 跟随系统 | ✖ 目前仅保存(界面为中文) |
|
||||||
|
| **旋转USB画面** | 0° / 90° / 180° / 270°,画面方向整体旋转 | ✔ |
|
||||||
|
| **图像增强** | 关闭 / 1~8 级,官方同款 7×7 局部细节增强 | ✔ |
|
||||||
|
| **水平翻转** | 画面左右镜像 | ✔ |
|
||||||
|
| **竖直翻转** | 画面上下镜像 | ✔ |
|
||||||
|
| **云同步** | 占位项,需账号与接口才能对接 | ✖ |
|
||||||
|
| **远程预览服务端** | 让本机作为主机,向局域网提供画面 | ✔ |
|
||||||
|
| **远程预览客户端** | 搜索局域网内的主机并连接观看 | ✔ |
|
||||||
|
| **关于** | 版本信息 | — |
|
||||||
|
|
||||||
|
**画面方向不对怎么调**:热像仪是插在手机上的,安装姿态决定了画面朝向。
|
||||||
|
若画面上下颠倒,用"旋转USB画面"(每次 90°);若左右镜像反了,用"水平翻转"或
|
||||||
|
"竖直翻转"。这三项是**永久生效的设置**,实时、拍照、录像都会跟着变。
|
||||||
|
|
||||||
|
**图像增强怎么选**:档位越高,纳入增强的对比度门槛越高、强边缘增强幅度越大,
|
||||||
|
即"更锐但更挑"——弱对比区域(噪声所在处)会被排除,所以调高**不会**把噪声放大。
|
||||||
|
日常建议 2~4 级;需要看清弱纹理时再上 6~8 级。默认关闭。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. 拍照 / 录像的方向(重要)
|
||||||
|
|
||||||
|
- **文件方向跟随你拿手机的方向**(和普通相机一样):
|
||||||
|
- 竖着拿 → 照片 720×960(竖幅),录像也是竖幅
|
||||||
|
- 横着拿 → 照片 960×720(横幅),录像也是横幅
|
||||||
|
- 无论怎么拿,**场景都是正的**,不需要事后旋转
|
||||||
|
- **预览画面本身是锁定的**:横着拿手机时,屏幕里的画面看起来是侧的
|
||||||
|
(因为屏幕构图固定在竖屏框架上),但保存下来的文件是正的。
|
||||||
|
这是刻意设计:热像仪固定在手机上,锁定预览才能保证转动手机时不晃方向。
|
||||||
|
- **录像方向在按下"录像"的瞬间确定**。录制过程中转动手机不会改变文件方向
|
||||||
|
(编码尺寸固定,所有相机都是这个行为)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. 文件与格式
|
||||||
|
|
||||||
|
| 类型 | 位置与命名 |
|
||||||
|
|---|---|
|
||||||
|
| 照片 | `DCIM/MAG160C/MAG160C_yyyyMMdd_HHmmss.jpg` |
|
||||||
|
| 分析另存 | `DCIM/MAG160C/MAG160C_yyyyMMdd_HHmmss_edit.jpg` |
|
||||||
|
| 录像 | `DCIM/MAG160C/MAG160C_V_yyyyMMdd_HHmmss.mp4` |
|
||||||
|
| 调试日志 | `Download/MAG160C/debug_*.log`(部分机型写进 `DCIM/MAG160C/`,排查问题时取这个文件) |
|
||||||
|
|
||||||
|
照片文件是 **MDT 容器**:文件开头就是标准 JPEG(任何看图软件都能打开),
|
||||||
|
后面追加了温度数据、测点坐标、备注、渲染参数等信息。
|
||||||
|
所以照片既能当普通图看,也能回到 App 里继续测温。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. 远程预览(两台设备)
|
||||||
|
|
||||||
|
把手机画面投到另一台设备上看(同一局域网):
|
||||||
|
|
||||||
|
1. **主机**(插着热像仪的那台):设置 → **远程预览服务端** → 打开
|
||||||
|
2. **客户端**:设置 → **远程预览客户端** → 点"重新扫描"自动发现主机 →
|
||||||
|
点主机连接;也可以手动输入 `IP:端口`
|
||||||
|
3. 客户端是**本地渲染**:主机把原始温度数据发过去,客户端自己画图,
|
||||||
|
所以能正确显示主机端的追踪标记和 FFC 状态
|
||||||
|
|
||||||
|
退出远程查看用返回键,会回到设置页。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. 常见问题
|
||||||
|
|
||||||
|
**显示"未检测到热像仪"**
|
||||||
|
- 确认热像仪插紧;换一个 USB 口试试
|
||||||
|
- 手机重启后 USB 授权会失效 → 重新插拔一次,在弹窗里点"允许"
|
||||||
|
- 仍不行:退出 App 重进(App 会自动重试,不用反复插拔)
|
||||||
|
|
||||||
|
**画面卡住或黑屏**
|
||||||
|
- FFC 校正时画面会短暂冻结,属正常
|
||||||
|
- 持续黑屏:退出 App 重进;确认没有别的 App 占用了热像仪
|
||||||
|
|
||||||
|
**温度看起来不准**
|
||||||
|
- 先做一次 FFC(环境温度变化后尤其需要)
|
||||||
|
- 分析页的读数来自照片里存的原始数据,不会随时间变化;实时页读数会随环境漂移
|
||||||
|
|
||||||
|
**录像停止时日志里有 "drain error"**
|
||||||
|
- 文件仍然完整可播放(尾部可能略短)。这是编码器在停止瞬间偶发的状态问题,
|
||||||
|
已做保护不会闪退,文件也已保存
|
||||||
|
|
||||||
|
**手机息屏后回来**
|
||||||
|
- 息屏时渲染停止(省电)、USB 读取继续,已保存的文件不受影响
|
||||||
|
|
||||||
|
**电脑上想取文件**
|
||||||
|
```
|
||||||
|
adb pull /sdcard/DCIM/MAG160C/
|
||||||
|
adb pull /sdcard/Download/MAG160C/ # 调试日志(部分机型在 DCIM/MAG160C)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. 已知限制
|
||||||
|
|
||||||
|
- **云同步**为占位项,需要账号与接口文档才能对接
|
||||||
|
- **发射率 / 报警温度 / 语言**三项目前只做保存,尚未接入实际功能
|
||||||
|
- **红热调色板**是近似实现(官方该调色板的原始数据未取到)
|
||||||
|
- **相册不列录像**:录像请用系统相册/文件管理器查看
|
||||||
|
- **预览锁定**是设计如此,不是缺陷(见第 8 节)
|
||||||
|
- PDF 报告与任务巡检的代码已实现,但**尚未接入界面**,当前版本无法从 App 中使用
|
||||||
@@ -530,6 +530,10 @@
|
|||||||
混为一谈就会在某个握持姿态下出错。固件级/相机类功能的"方向正确"必须用
|
混为一谈就会在某个握持姿态下出错。固件级/相机类功能的"方向正确"必须用
|
||||||
**同一场景在不同姿态下的可复现拍摄**来验证,不能只靠推导。
|
**同一场景在不同姿态下的可复现拍摄**来验证,不能只靠推导。
|
||||||
|
|
||||||
|
**本轮新增文档**:`docs/android_app/app_manual.md`(App 操作手册:界面、标注含义、
|
||||||
|
设置逐项说明与"是否真正生效"、方向规则、文件位置与格式、远程预览、常见问题、
|
||||||
|
已知限制),`README.md` 里程碑与阅读顺序已同步更新。
|
||||||
|
|
||||||
## 用户反馈修复 第二十三轮(2026-09-12,照片竖屏 / 标注风格重做 / 录像清晰度)
|
## 用户反馈修复 第二十三轮(2026-09-12,照片竖屏 / 标注风格重做 / 录像清晰度)
|
||||||
|
|
||||||
用户第五轮反馈(三点):竖屏拍照出来的照片不是竖屏;录像里的温度标点糊;
|
用户第五轮反馈(三点):竖屏拍照出来的照片不是竖屏;录像里的温度标点糊;
|
||||||
|
|||||||
Reference in New Issue
Block a user