ZXCLI
|
f41668d5d1
|
android: 修正 7x7 细节增强的混叠系数(原实现把增益乘了两遍,画面满噪点)
官方 FilterDetailEnhancement_Simple 把「增益缩放后」的 k = strength*gain*2>>8 只
传给 map(决定阈值与 divisor 下限),混叠系数用的是**原始 strength**。本移植最初
两处都用 k,等于把细节再乘一遍增益:真机 level 2 满屏噪点。改为原始 strength 后
HF 能量与关闭档基本相同(0.47-0.51 vs 0.46-0.47),边缘仍被增强。
细节校正:
- 一个有用的推论:每档的边缘强度其实与档位无关(化简为 128/gain),档位只决定
哪些窗口通过对比度阈值——所以调高档位是"纳入更多弱对比区域",不是"推得更狠"。
据此把档位从 0-4 扩到 0/1/2/3/4/6/8(官方 MAG_SetDetailEnhancement 钳 0..32)。
- 官方 App 自身不调用 SetDetailEnhancement(jadx 全量搜索无此符号),SetEX 是数码
变焦 ROI 与增强无关;故无法据此对齐官方默认档,保持用户可见设置、默认关闭。
测试:
- 新增 blendUsesTheRawStrengthNotTheGainScaledOne 黄金值用例(推导写在注释里),
把 bug 改回去会立刻失败(已实测验证)。
- 原 gainScalesTheEffect 改为 gainDoesNotAmplifyNoiseOnAFlatField + gainBelowOneIsANoOp,
因为修正后增益不再缩放混叠幅度。98 项测试全绿。
顺带修复(同一轮真机复现):
- no_device 死锁:首次 connect 撞上相机重枚举时停在「无相机」,且紧随其后的
ATTACHED 广播被 800ms 防抖丢弃 → 永久无画面。防抖/退避改为延后重试,no_device
也安排 1.5s 重试(scheduleRetry 单槽位、最新优先)。
- 手机平放时加速度计 x/y≈0,迟滞逻辑保留旧姿态角导致 OSD 文字整体转 90°;
改为 tilt<4m/s² 判定平放、姿态归零。
- 录像帧缺 max/min 标记:probesAsMarks() 现在一并返回,录像与实时画面一致。
真机(小米 22041211AC/Android12/MIUI):15.1fps 稳定、单帧 6-9ms(开增强 11ms)、
拍照与分析页标记一致且各只有一个 min/max、设置跨冷启动持久化、
屏幕熄灭时渲染停止无空转(CPU 3.7%)。
|
2026-09-12 05:04:50 +08:00 |
|
ZXCLI
|
4ebdca109a
|
android: 实时画面卡顿根因是软件画布(6.5→15.1fps),标注统一 + 7x7 细节增强
卡顿: 热像走 SurfaceView.lockCanvas 的软件画布, 每帧在 CPU 上做 320x240 ->
~810x1080 双线性放大 + 清整屏, 实测只有 6.5 帧/秒、单帧 134ms。dumpsys gfxinfo
看不到这条路径(只统计 Compose), 故给渲染线程加自测量日志才定位到。改用
lockHardwareCanvas(API29+, 旧系统回退) 后 15.1 帧/秒、单帧 6.4ms。
同时消除每帧垃圾: 复用翻转缓冲/标记列表, 色条改预渲染位图; 温度扫描从主线程
移到 Dispatchers.Default。
标注统一: 新增 AnnotSpec(唯一几何定义) + MarkerPainter(唯一绘制例程), 实时/
分析/照片/视频共用, 极端值标签改用 max/min; 照片按传感器朝向 3x 分辨率保存。
修 placeLabel 不判重叠(min 与 max 印成一团), 现支持让位。
分析对齐: 极端值漏了 sensorToPhoto 映射(落在左上角几十像素内), annotateJpeg
忽略照片镜像(另存时标记镜像到另一侧), 两处已修。
新增 BLOCK_EXTREMES(0x5BB5B562) 存拍摄时的极值位置/温度: 分析页重扫 NUC 不可能
逐位复现 live 结果, 真机出现过两个相距几像素的 min。
分析面板被导航栏遮挡: UiInsets.navPx 改可观察状态并加 padding。
7x7 局部细节增强(官方 FilterDetailEnhancement_Simple 逐行移植), 强度换算
level shl 3 经 MAG_SetDetailEnhancement(钳 0..32)核对一致; 设置页新增
"图像增强" 0-4 级, 默认关闭(无官方参考输出), 不影响逐位基线。
真机验证(小米 22041211AC/Android12/MIUI): 15.1fps、拍照含 2 探针+2 极值、
照片与分析页标记位置/风格一致且各只有一个 min/max、分析数值与照片吻合、
增强 2 级细节明显且不掉帧。测试 96 项全绿。
|
2026-09-12 04:20:16 +08:00 |
|
ZXCLI
|
47037f3a23
|
android: unify temperature annotations (one spec, sharp 3x photos), sensor-orientation photos, video annotations, palette cache + render loop, Android 8 API guards
|
2026-09-12 03:06:27 +08:00 |
|
ZXCLI
|
376b8389ea
|
android: fix launchMode (singleTask) root cause of reconnect storm; drop SET_CONFIGURATION reset; fix analysis temp units, NUC block size, viewer back keys
|
2026-09-12 02:30:05 +08:00 |
|
ZXCLI
|
4cb6e69ea4
|
android: fix analysis temperatures (store calibrated NUC data), marker sizing, bottom data panel; split album (zoom/delete) from analysis tab
|
2026-09-12 00:05:49 +08:00 |
|
ZXCLI
|
15a7127287
|
android: fix recording crash+save, gallery viewer unreachable, back key, settings persistence; photo orientation+annotations, analyzable MDT probes, trace mode
|
2026-09-11 23:26:27 +08:00 |
|
ZXCLI
|
3704ee797b
|
android: settings screen scrollable + wire dead rows (language/about) + instant orientation apply
|
2026-09-11 03:59:55 +08:00 |
|
ZXCLI
|
f7bca894ba
|
android: revert image to locked orientation (user decision); keep official-style manual rotate/flip settings
|
2026-09-11 03:50:56 +08:00 |
|
ZXCLI
|
464cfcb5e8
|
android: fix real-device defects (temp double-conversion, FFC temp jump, image orientation per grip, remote raw+metadata stream)
|
2026-09-11 03:01:13 +08:00 |
|
ZXCLI
|
0919f5e186
|
docs+analysis: independent verification guide for phases A-F (calibrated scanners, self-tested commands)
|
2026-09-11 01:10:18 +08:00 |
|
ZXCLI
|
8e1312a137
|
android: phase Z wrap-up (docs, release build, camera feature optional, APK)
|
2026-09-11 00:57:46 +08:00 |
|
ZXCLI
|
512508e629
|
android: LAN remote preview (UDP discovery + raw-frame TCP stream, client-side rendering)
|
2026-09-11 00:54:13 +08:00 |
|
ZXCLI
|
f8b3200464
|
android: visible-light PIP overlay (camera2, draggable, 3 sizes)
|
2026-09-11 00:31:00 +08:00 |
|
ZXCLI
|
c34940e6fd
|
android: cloud module scaffold (retrofit, opt-in, disabled by default)
|
2026-09-11 00:22:25 +08:00 |
|
ZXCLI
|
b7a928e23d
|
android: vendor palette extraction tooling (+exact tables if found)
|
2026-09-11 00:15:39 +08:00 |
|
ZXCLI
|
656d419f81
|
android: MDT temperature decode + analyzer probe UI
|
2026-09-10 23:43:19 +08:00 |
|
ZXCLI
|
06c1f30b13
|
android: lifetime query + cali consistency check + real-device checklist
|
2026-09-10 23:34:10 +08:00 |
|
ZXCLI
|
087e15cb19
|
docs: execution plan for remaining backlog (written for no-vision executor model)
|
2026-09-10 23:18:49 +08:00 |
|
ZXCLI
|
e69a97436b
|
chore: reorganize analysis/ by SDK lineage (linux/win/android) with README index, move legacy notes to history/, refresh root README, ignore .zcode/
|
2026-09-10 03:09:13 +08:00 |
|
ZXCLI
|
4ba98f62cd
|
analysis: full official-app reverse artifacts (jadx sources, ghidra libcxsdk decomp, authoritative protocol conclusions) + docs
|
2026-09-10 02:51:37 +08:00 |
|
ZXCLI
|
623d62b641
|
android: CRITICAL fix - commands were byte-reversed (ByteBuffer big-endian); official app sends little-endian, palindrome 66b masked it for 16 rounds
|
2026-09-10 02:39:19 +08:00 |
|
ZXCLI
|
b29d7fd377
|
android: port official MAG-Cx UsbCommunication handshake verbatim (66b/66c/66f 800ms, cali file fetch via 670+EP0x84, BasePara parse)
|
2026-09-10 02:28:46 +08:00 |
|
ZXCLI
|
8ecd50228a
|
android: match official libcoresdk handshake - 66f cali-info, 670+EP0x84 cali fetch w/ cache, drop legacy 66b/pre-start FFC
|
2026-09-10 02:01:26 +08:00 |
|
ZXCLI
|
1a2fc7abb8
|
android: clear usbfs endpoint-halt after every timed-out transfer (stream killer); drop async reader, add START re-kick
|
2026-09-10 01:38:25 +08:00 |
|
ZXCLI
|
0f2aa11196
|
android: USB hardening from device logs - async stream reader, CLEAR_HALT recovery, session mutex, detach handling, fast init
|
2026-09-10 01:21:29 +08:00 |
|
ZXCLI
|
dbb4f24608
|
android: fix startup crash (MediaStore rejects text/plain in DCIM); log sink fallback DCIM->Download->app-private, logging never throws
|
2026-09-10 00:48:56 +08:00 |
|
ZXCLI
|
ee317c7b25
|
android: fix black screen (missing FFC(0)x2+START pre-stream sequence) + field debug log to DCIM/MAG160C
|
2026-09-10 00:01:25 +08:00 |
|
ZXCLI
|
fe8595f747
|
android: remove demo synthetic thermal image (real-device display test); rebuild toolchain+APK on this machine
|
2026-09-09 19:23:19 +08:00 |
|
ZXCLI
|
ca7e29a647
|
chore: commit working tree (tools/SDK/csdk/analysis churn) for user to review & prune
|
2026-09-09 17:51:46 +08:00 |
|
ZXCLI
|
456285c71b
|
docs: refresh handoff for next model - final layout conventions + next-round prompt
|
2026-09-09 17:42:41 +08:00 |
|
ZXCLI
|
add3d06713
|
android: include safe-drawing top inset in uiTopPx (image top clipped on punch-hole phones) + smaller shutter row
|
2026-09-07 20:16:39 +08:00 |
|
ZXCLI
|
7437ce5e85
|
android: camera-style controls - 4-item top bar (ffc/zoom/trace/palette), shutter row (gallery/photo/record) above nav
|
2026-09-07 19:22:49 +08:00 |
|
ZXCLI
|
fabea4c664
|
android: fix inverted device-orientation mapping (real accelerometer reads world-up; emulator uses gravity convention)
|
2026-09-07 19:09:57 +08:00 |
|
ZXCLI
|
b1a3c38a69
|
android: rotate bar icons/text + OSD labels by physical grip angle (accelerometer), image region stays glued
|
2026-09-07 13:37:34 +08:00 |
|
ZXCLI
|
d0b133a895
|
android: lock portrait - UI composition glued to phone frame (top/bottom bars + image area absolutely fixed)
|
2026-09-07 13:17:19 +08:00 |
|
ZXCLI
|
2c38537303
|
android: 顶栏/底栏位置固定+图像区域永不旋转(只转文字)+挖孔屏安全区适配+完整交接文档
|
2026-09-07 12:59:26 +08:00 |
|
ZXCLI
|
798e180683
|
android: 顶栏控制项+图像世界固定旋转+状态栏沉浸+inset感知渲染+乱码二次修复
|
2026-09-07 12:43:35 +08:00 |
|
ZXCLI
|
96b92a8d26
|
android: 心跳更新(第二轮UI反馈修复)
|
2026-09-07 00:30:09 +08:00 |
|
ZXCLI
|
8d22969f6d
|
android: 竖屏旋转热像图填满屏宽/横屏原生方向+控制栏横屏移至右侧+大号圆圈标记与色标+fullSensor方向跟随
|
2026-09-07 00:29:16 +08:00 |
|
ZXCLI
|
17fcb7b94c
|
android: 心跳更新(用户反馈修复完成)
|
2026-09-06 23:15:57 +08:00 |
|
ZXCLI
|
f8eab28857
|
android: 相册页接线+演示模式(真实管线渲染合成帧+demo温度显示映射)
|
2026-09-06 23:15:05 +08:00 |
|
ZXCLI
|
430bf373e4
|
android: 修复源码GBK编码导致的中文乱码+重绘图标+USB插入自动授权+媒体权限+多点测温/色标条/追踪开关
|
2026-09-06 21:56:34 +08:00 |
|
ZXCLI
|
6d0805af90
|
android: 恢复脚本+APK产物
|
2026-09-06 20:41:41 +08:00 |
|
ZXCLI
|
4fd2e5bf79
|
android: 图标+预测性返回+心跳更新 阶段7预验收
|
2026-09-06 20:41:16 +08:00 |
|
ZXCLI
|
a07a49b437
|
android: 设置页+任务巡检解析器(sqlite/xml) 阶段6a
|
2026-09-06 20:34:21 +08:00 |
|
ZXCLI
|
3bca426c99
|
android: PDF巡检报告生成(PdfDocument) 阶段5b
|
2026-09-06 20:04:06 +08:00 |
|
ZXCLI
|
29a9b85cbe
|
android: 媒体库+MDT离线分析查看器(缩放/调色板/备注) 阶段4-5a
|
2026-09-06 19:55:22 +08:00 |
|
ZXCLI
|
ed0a0882d8
|
android: 拍照MDT容器保存(MediaStore DCIM/MAG160C)+MP4录像(Surface编码) 阶段3b
|
2026-09-06 19:40:56 +08:00 |
|
ZXCLI
|
6297a06b97
|
android: USB层+实时画面+UI骨架(阶段3a)
|
2026-09-06 19:16:35 +08:00 |
|
ZXCLI
|
5b41a6aa9b
|
android: 统一APP工程骨架 + 官方渲染管线Kotlin移植(与C参考逐字节一致)
|
2026-09-06 18:44:02 +08:00 |
|