ee6859877af03ddc9ccede0b4fa41dc09740e6b7
debug 日志:DebugLog 增加总开关 enabled(默认 false),log() 直接返回、 init() 不装崩溃钩子、startFile() 不建文件。要在设备上排查时改成 true 重新构建 即可,其它代码不动。关闭后崩溃仍按安卓常规方式可见(logcat AndroidRuntime + 系统弹窗),只是不再有落在相册目录旁的 debug_*.log。 真机烟雾测试(小米 22041211AC,相机插着):出流正常、拍照成功(相册 19→20, 新增 MAG160C_20260912_153522.jpg)、崩溃 0、App 自身日志行数 0、无新日志文件。 插图版手册 docs/android_app/app_manual.md + manual_images/: - 02_markers:标记结构解剖(准星/读数/引线/描边字),真机照片放大 3 倍并标注 - 03/04:横屏 960x720 与竖屏 720x960 的真实照片 - 05/06/07:设置、分析(含底部测量面板)、相册 真机截图 - 01_live_schematic:实时界面改为**自绘示意图**,因为实时 OSD 文字按握持角度预旋转 (用户要求的可读性设计),手册拍摄时手机横放,截图里文字全是侧躺的无法阅读; 其余界面文字本就水平,直接用截图。 图由 manual_images/MakeFigures.java 生成(裁剪缩放/放大标注/示意图绘制), 界面改动后重跑即可;原始截图存为 JPEG(PNG→JPEG 省约 8MB)作为可再生输入。 .class 已加入 .gitignore。 README 阅读顺序加入操作手册、结构表更新、里程碑补记根因级修复。105 项测试全绿。
MAG160C 热像仪统一工程
MAG160C 热像仪(160×120,15fps,USB VID 0x833C)的逆向工程与双端实现:
C 参考实现(Linux/Windows,源自官方 PC SDK 逆向)与安卓统一 App
(Kotlin + Compose,适配 Android 16,整合官方 4 个 App 的功能)。
从这里开始(新接手者阅读顺序)
docs/android_app/HANDOFF_DEVELOPMENT.md— 安卓 App 总交接(必读)docs/android_app/session_state.md— 会话心跳与待办(最新进度)docs/android_app/app_manual.md— App 操作手册(界面/设置/方向/排障)analysis/README.md— 逆向工程总目录索引(Linux/Windows/Android 三条线)analysis/magcx_official_flow.md— 权威 USB 协议结论(官方源码逐行核对版)analysis/protocol_spec.md— 早期 PC 端协议逆向(硬件验证记录)csdk/README.md— C SDK 文档(构建/API/工具/测试)
仓库结构
| 路径 | 用途 |
|---|---|
android/ |
安卓统一 App(Kotlin + Compose,Gradle 工程,package com.mag160c.thermal):实时预览、拍照 MDT、录像、媒体库、离线分析、PDF 报告、任务巡检、设置 |
csdk/ |
纯 C SDK(官方管线 C 复刻:渲染/温度/IR 会话/FFC 调度,见 csdk/README.md) |
analysis/ |
逆向工程总目录(Linux/Windows/Android 三条 SDK 线的解包产物与结论,见 analysis/README.md) |
IR_Camera_SDK-1.0.1/ |
原厂 Windows/Android/Linux SDK 原始包 |
app/ |
官方安卓 APK 存档(普通版/专业版/ThermoScope/demo) |
build-artifacts/ |
构建产物(安卓 APK、PC demo3、DDT 标定数据) |
docs/android_app/ |
安卓 App 文档:app_manual.md 操作手册 / HANDOFF_DEVELOPMENT.md 交接 / session_state.md 进度心跳 / 逆向功能总表 |
vendor-docs/ |
厂商资料 |
tools/ |
会话恢复脚本 |
快速入口
安卓 App(构建/测试)
cd C:\Project\MAG160C\android
$env:JAVA_HOME = "C:\Tools\jdk-21"
.\gradlew.bat :app:assembleDebug test --no-daemon
# 产物:build-artifacts\mag160c-app-debug.apk
C 管线复刻 demo3
gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" `
-o build-artifacts\mag160c_demo3.exe csdk\tools\mag160c_demo3.c `
csdk\src\mag160c_display.c csdk\src\mag160c_error.c `
csdk\third_party\libusb\win64\libusb-1.0.x64.a -lgdi32 -luser32
Start-Process "build-artifacts\mag160c_demo3.exe" -WorkingDirectory "build-artifacts"
硬件
- 设备:MAG160C 热像仪机芯,160×120 @15fps
- USB:VID
0x833CPID0x0001;端点 0x03 命令 / 0x82 响应 / 0x81 图像流 / 0x84 标定文件 / 0x05 标定上传 - 协议细节:
analysis/magcx_official_flow.md(权威)
里程碑
- 2026-08:官方 PC SDK(libmagcore/CoreSDKLib)逆向 + C 管线逐像素复刻(demo3)
- 2026-09-06~09:安卓 App(纯 Kotlin,无 NDK):渲染管线移植(逐字节验证)、 USB 层(官方协议 Java 源码逐行复刻)、相机式 UI、拍照/录像/媒体库/分析/PDF
- 2026-09-10:真机联调打通(根因:USB 命令字节序反转,已修复并用单测锁死); 官方 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 轮修复记录与排查方法)
仓库说明
仓库包含官方 SDK、反编译产物、二进制样本和抓帧数据。部分内容可能受原厂许可 限制,仅用于本项目的互操作性研究和设备调试。
Languages
C
43%
Assembly
11.2%
Python
10%
Java
9.3%
C++
6.9%
Other
19.4%