ZOYKUHot Board

wan-1230/n-linkDokumentasi

wan-1230/n-link documentation on GitHub Hot

Pemberitahuan Bahasa:Dokumentasi lokal tidak tersedia. Menampilkan versi bahasa Inggris asli resmi.
Instalasi Cepat
git clone https://github.com/wan-1230/n-link.git

N-Link

为尼康 Z 系列微单打造的 Android 连接与遥控伴侣 —— 稳定连接 · 极速传图 · 全功能遥控。

Android Kotlin minSdk targetSdk Version

N-Link 是一款面向尼康 Z 系列微单(Z50II / Z6III / Z8 / Z9 / Zf 等)的开源 Android 应用,打通 连接 → 浏览 → 传输 → 遥控 → 监看 的完整链路,以「永不断联」为核心卖点:

  • 稳:BLE 心跳保活 + 前台服务常驻,断线自动重连(< 3s)
  • 快:USB / WiFi 双高速通道,智能调度与自动回退
  • 全:照片传输 + 远程快门 + 实时取景 + 参数管理四合一
  • 简:一次配对、自动恢复、零上手成本

✨ 功能特性

三通道连接

通道 能力
BLE 辅助通道:配对引导(免输入下发 WiFi 凭证)· 心跳保活 · GPS 注入 · 遥控快门 · 状态读取。采用尼康 BLE 配对协议与 Blowfish 加密
WiFi 主数据通道:相机发现(mDNS _ptp._tcp / _nikon._tcp + 子网扫描),PTP/IP(ISO 15740)全量会话,承载实时取景与全分辨率传输
USB 有线优先通道,相机插入自动唤起,keepalive 保活,支持 USB Live View 与遥控;v1.2.0 完成全链路优化(PTP 事务层容器重组重建、USB 实时监看打通、相册加载与断连修复)

通道定位:BLE 负责「握手引导 + 状态注入 + 低功耗保活」,WiFi PTP/IP 与 USB 负责「搬运数据」。 BLE 受 GATT 带宽限制,不承载实时取景与大文件传输(结论:可行,作为辅助通道保留并继续投入)。

照片浏览与传输

  • 相机存储卡照片列表,18 张/页分页加载 + 缩略图实时预览,默认按拍摄时间降序(新拍的在前)
  • 格式筛选(全部 / 照片 / 视频 / RAW / JPG),筛选无结果时自动兜底提示
  • 单张 / 批量 / 筛选 / 全部下载,支持跳过已下载与剩余数量进度提示,传输队列支持暂停、恢复、取消
  • 断点续传:中断自动从断点恢复,失败自动重试并回退备用通道,传输去重;相册列表滑动节流,长列表不卡顿
  • 归档至 DCIM/N-Link(MediaStore / Scoped Storage),「本地照片」Tab 随时回看,下载完成后触发媒体库扫描
  • 独立分享页:选中照片后进入分享页,支持缩略图预览、预览 / 原图两种画质与目标应用直达;相机未连接时也可分享已下载照片

远程遥控拍摄

  • 两段式快门:半按对焦 → AF 收敛后自动释放快门,确保合焦
  • B 门遥控(实时曝光计时)、定时拍摄(2s/5s/10s/自定义)、间隔拍摄(延时摄影)
  • 曝光三要素(光圈 / 快门 / ISO)、白平衡、对焦模式、测光等参数实时读写
  • 画面模式置于顶部下拉芯片快速切换,拍摄模式下拉分体按钮切换;更多动作长按弹出教程气泡

实时取景(Live View)

  • 实时画面传输,端到端低延迟(目标 < 200ms @ WiFi 5GHz)
  • 触摸对焦、手动对焦驱动、双指缩放
  • 构图网格叠加(三分线等)、全屏沉浸体验、重力感应横竖屏

连接稳定性

  • 前台连接服务(connectedDevice|dataSync)保活 + 开机自启 + WorkManager 健康检查
  • 连接状态机:通道升级、失败回退、指数退避重连;WiFi STA 扫描失败原因可见化(权限 / 定位开关 / 系统限制逐项提示)
  • 实时连接状态仪表盘与厂商后台策略适配

其他

  • 快门次数查询:机身 PTP 不支持时自动经 EXIF 解析(Digeeker 协议)
  • 相机位置与详情:手机位置写入相机(拍摄地点)· 相机详情页(固件 / 序列号 / 镜头 / 快门 / 电量 / 存储 / 连接时长)· 固件版本检查与下载入口
  • 拍摄参数预设管理、传输完成通知、RAW 处理策略
  • 应用内更新:读取 GitHub Releases 元数据(仅提示正式版),解析夸克网盘回退链接写入本地缓存,更新弹窗纯文本呈现
  • 支持与反馈页(问题反馈 / 交流群 / 捐赠入口)
  • 黑白极简设计语言:DayNight 自适应主题、8px 圆角、PressEffect 按压反馈

版本增强速览

近 5 个版本的亮点速览,完整记录见 更新日志。

版本 亮点
v3.4.5 向相机写入手机位置 · 设置页区分「写入相机」与「分享副本保留 GPS」 · 选中照片后进入独立分享页(预览 / 原图 / 目标应用直达) · 相机详情页与固件版本检查 · 最近设备折叠与「取消连接」
v3.4.4 同一路由器 WiFi 连接保持与掉线感知修复 · 持续被拒时引导重新注册主机 · 注册状态按网段提示 · 自动发现按当前拓扑扫描 · 对焦框持续跟随相机真实区域 · 越界 AF 区域不再误画
v3.4.3 相册多选返回稳定退出 · 镜头按最近照片 EXIF 显示完整品牌型号 · 缩略图与大图预览更清晰 · 快门瞬间取景框不再被拉长 · 对焦回显按相机显示区域换算 · 对焦标记停留时间延长
v3.4.2 多选显示选择圈与已选张数,下载 / 删除 / 分享后自动退出 · 新增下载队列入口与面板,可暂停 / 重试 / 清理 · 预览页 RAW+JPG 成对下载修复 · 分页加载与刷新保持排序稳定 · 5GHz 分块与相机热点整文件传输提速 · 相机热点文件名与机内编号一致 · 首次启动后台运行授权
v3.4.1 STA 相机新增「已保护」筛选,保护位按需读取、读不到明确提示 · 下载断线后等待重连再续传,大文件与视频不再半途失败 · 视频 / 下载目录照片保存修复,失败原因可核对 · 相册快速上下滑减少跳帧,停稳后缩略图补齐 · 设备页与设置页快滑同步优化 · 预览删除尾部照片不再闪退

🚀 快速开始

下载安装(普通用户)

渠道 说明
GitHub Releases 最新 Release 下载 APK(国内访问不稳定时用下方夸克网盘)
夸克网盘 公开永久链接(免提取码),目录 /N-Link/releases/ 恒为最新版(历史版本归档于 /N-Link/_archive-releases/)
百度网盘 本版分享链接(提取码内嵌于链接,点击自动填充),目录 /N-Link/releases/ 恒为最新版
应用内检查更新 启动时自动检查(只提示正式版),GitHub 不可达时自动回退到夸克网盘缓存链接

WiFi STA 连接教程

适用场景:相机作为客户端加入网络(连手机热点,或与手机连同一路由器)。 尼康相机在 STA 模式下有「信任主机」门控:首次使用必须先注册一次,否则 PTP/IP 握手会被相机拒绝(日志表现为 fail_reason=1,即「连接被占用」)。

第 1 步 · 首次使用先注册主机(只需做一次)

  1. 相机开启 WiFi 热点(AP 模式),手机在系统设置里连上该热点;
  2. App 切到「WiFi-AP」页签 → 连上相机;
  3. 切到「WiFi-STA」页签 → 点「STA 主机注册」→ 按相机屏幕提示确认(约 10 秒);
  4. 出现「主机注册完成」即成功。相机已记住本机,之后长期有效,无需重复注册。

「STA 主机注册」按钮常驻在 WiFi-STA 页签内。相机尚未记住本机时按钮显示为强调色,注册完成后转为描边样式。

第 2 步 · 每次 STA 连接

  1. 相机菜单进入「WiFi 连接(STA mode)」,选择连接手机热点(或同一路由器),停在连接的等待画面;
  2. 手机开启个人热点(或与相机处于同一 WiFi);
  3. App 切到「WiFi-STA」页签,选择子模式(同一 WiFi / 连接手机热点)→ 点「扫描相机」→ 点「连接相机」。

失败提示对照

现象 原因 处理
握手被拒(fail_reason=1「连接被占用」) 相机未停在「WiFi 连接(STA mode)」等待画面,或本机尚未注册为主机 先在相机上进入「WiFi 连接(STA mode)」并停在等待画面;若仍失败,执行第 1 步注册
扫描不到相机 权限 / 路由未就绪 / 相机不在同一子网 按 App 内诊断文案处理(定位权限、子网、ARP 条目数)
注册提示「相机未接受预备注册」 相机屏幕不在可接受连接的画面 让相机处于连接等待画面后重试注册

环境要求(开发者)

  • Android Studio(JDK 17 + Android SDK 35)
  • Android 10(API 29)及以上真机(建议支持 BLE 5.0 与 5GHz WiFi)

构建

cd N-Link
./gradlew :app:assembleDebug

调试 APK 输出:

app/build/outputs/apk/debug/app-debug.apk

开发工具

无需真机即可联调协议栈:

# 在 PC 上启动模拟尼康相机(mDNS 广播 + PTP/IP 握手)
python tools/mock_nikon_ptp.py --advertise

# 探测相机 WiFi 的 PTP/IP 连通性(只读、逐包打印响应码)
python tools/ptp_probe.py --host 192.168.1.1

详细说明见 tools/README.md。


🧱 技术栈

类别 选型
语言 / 构建 Kotlin 2.1.0 · AGP 8.7.3 · Gradle Wrapper · KSP
UI ViewBinding · Material Components 1.12 · ConstraintLayout · Navigation 2.8.5
架构 MVVM + Repository,单向数据流(StateFlow / LiveData)
依赖注入 Hilt 2.53.1
异步 Kotlin Coroutines 1.9.0
本地存储 Room 2.6.1 · Gson
后台任务 WorkManager 2.10.0(hilt-work)· 前台服务
图片加载 Coil 2.7.0
日志 Timber
测试 JUnit4 · MockK 1.13.14 · coroutines-test

🏗️ 项目结构

app/src/main/java/com/nikonlink/app/
├── MainActivity.kt / NLinkApp.kt
├── device/        # 设备连接层:ble / ptp / usb / wifi(AP + STA)/ 连接状态机 / 前台服务
├── camera/        # 相机内容:相册与传输(gallery)/ 实时取景(liveview)/ 参数与快门次数(params)
├── capture/       # 远程遥控拍摄:两段式快门 / B 门 / 定时 / 间隔
├── settings/      # 设置页与支持反馈
└── shared/        # 通用组件(ui)、数据与 DI、应用内更新(update)

🧪 测试

./gradlew :app:testDebugUnitTest

覆盖 BLE 吹鱼加密、PTP 协议编解码、PTP/IP 会话状态机、相机文件格式判定等核心逻辑。


🔒 隐私与安全

  • 纯本地通信:不依赖尼康云服务,默认不上传用户照片至第三方服务器
  • 本地照片遵循 Android Scoped Storage 规范
  • BLE 配对 Just Works + 应用层校验,WiFi 通道 WPA2/WPA3 加密
  • local.properties、签名文件(*.jks / .signing/)、.tmp_bili/ 素材、构建产物均不入库

📋 更新日志

从新到旧保留全部版本记录;应用内「检查更新」仅提示正式版。最新版下载见 GitHub Releases 或上方夸克网盘。

v3.4.5 — 2026-10-25

本版新增向相机写入手机位置、独立分享页与相机详情页,并补齐连接流程的取消能力。

  • 位置:新增「向相机发送位置信息」,连接相机后把手机坐标写入机身,此后拍摄的照片可记录地点;仅在 App 前台且相机在线时同步
  • 位置:设置页新增「位置与隐私」分组,明确「写入相机」与「分享副本保留 GPS」互不影响;关闭写入开关时会清除机内旧位置
  • 分享:选中照片后进入独立分享页,支持缩略图预览、预览 / 原图两种画质与目标应用直达;相机未连接时也可分享已下载到手机的照片
  • 分享:分享文件统一通过多 URI 授权交给目标应用,修复部分情况下点分享无响应的问题
  • 详情:新增相机详情页,展示固件、序列号(隐藏后四位)、镜头、快门、电量、存储与连接状态,并按相机上报能力标注可用功能
  • 详情:支持检查固件版本(内置机型快照比对,提供下载入口,不提供刷机)、立即同步位置与复制相机信息
  • 连接:最近连接设备支持折叠;新增「取消连接」可停止扫描 / 配对 / 重试与主机注册,并抑制后台自动重连直到用户重新发起连接
  • 测试:新增位置载荷编码、data-out 收发与固件版本比对单元测试

v3.4.4 — 2026-10-25

本版修复同一路由器 WiFi 下的连接保持与掉线感知,并让对焦框持续跟随相机真实对焦区域。

  • 连接:同一路由器 WiFi 改用普通 WiFi 网络请求,修复连接成功后网络持有匹配不到、掉线与断网不感知的问题
  • 连接:相机为当前 WiFi 新建配置后若持续拒绝本机,提示重新完成主机注册,并给出相机端操作路径
  • 连接:主机注册状态按网段校验,换了网段会重新提示注册,不再一直显示「已注册」
  • 连接:自动发现按当前连接方式选择扫描网络,减少同一 WiFi 下发现不到相机
  • 对焦:相机在 AF 驱动帧中上报的最终区域也会被读取,对焦框持续跟随相机真实位置,不再只停在点击处
  • 对焦:越界或不可信的 AF 区域不再参与绘制,避免错误位置的对焦框
  • 测试:新增同一路由器连接分诊单测与 AF 帧头 / 回退域用例

v3.4.3 — 2026-10-24

本版收口相册交互与设备信息展示,并修复快门瞬间的监看布局问题。

  • 相册:多选状态按返回键直接退出,不再偶发触发「再按一次退出」;「已标记」相册返回时回到进入前的相册
  • 相册:缩略图优先加载更高清的大预览,全屏预览在可接受等待内优先显示更清晰的大图
  • 镜头:规格表未覆盖的镜头,自动读取最近一张照片的 EXIF,显示完整品牌与型号
  • 监看:修复按快门瞬间闪白层把取景框撑到整页的问题,画面与取景框高度保持稳定
  • 对焦:按相机帧头上报的显示区域换算对焦坐标,减少画面裁切时的位置偏差
  • 对焦:相机回显位置优先展示,旧点击框的定时收起不再提前隐藏新位置
  • 测试:镜头规格匹配、帧头解析与坐标换算均补充单元测试

v3.4.2 — 2026-10-23

本版合并相册多选、下载队列与传输修复,并补齐后台运行授权。

  • 相册:多选照片显示选择圈与已选张数;下载 / 删除 / 分享发起后退出多选,返回键可直接退出
  • 下载:新增队列入口与面板,支持暂停继续、重试失败、清除已结束、全部取消与单项移除
  • 下载:修复全屏预览页按「RAW+JPEG 下载方式」成对下载时只下 NEF 的问题
  • 传输:5GHz 链路使用更大分块,相机热点下优先整文件流式下载,高速链路吞吐提升
  • STA:相机热点下文件名编号统一为 4 位,AdobeRGB 使用 _DSCnnnn 命名
  • 保存:MediaStore 插入后写入失败会清理半成品,不再残留 0 字节条目
  • 相册:分页加载与刷新时保持排序稳定,顶部照片不再跳动
  • 权限:首次启动询问是否允许后台运行,之后可在设置页随时开关

v3.4.1 — 2026-10-22

本版收口 STA 相册的保护筛选与传输稳定性,并把相册快速滑动的渲染链路重做一遍。

  • 连接:STA「连接到电脑」下按需补读机内保护位,首次点「已保护」时读取,读不到明确提示并退回「全部」;「已筛选」仍同时覆盖保护与评级,两个入口语义互不吞并
  • 传输:整段下载期间放宽命令通道超时并豁免心跳 / 事件静默判死,视频与大文件不再在分块间隙被误判断链;断线后续传先等待重连,最长 30 秒
  • 传输:保存按视频 / 图片 / 下载目录分流写入 MediaStore,修复视频或 Download/N-Link 下照片保存失败;失败时给出剩余空间、权限或写入中断等可核对原因
  • 预览:删除最后一张或连续删除时夹紧下标并精确移除页面,修复 ViewPager2 越界闪退与停在已不存在尾页的问题
  • 相册:重做滚动链路——滚动态停止背景采集与透镜重算、缩略图按单格 payload 刷新、后台状态延迟到停稳后提交,快速上下滑不再被整树绘制和整段重绑挤占帧预算
  • 相册:滚动停止后统一补发可见项缩略图并就地恢复占位,停稳即出图;格子布局压平、固定尺寸、扩大回收池并关闭 change 动画,降低新行绑定成本
  • 设备页 / 设置页:滚动回调接入冻结采集,快速滑动时的周期性卡顿同步收敛
  • 测试:新增滚动采集契约与格子布局回归用例,覆盖「滚动中零采集 / 停稳补采」和正方形格子的几何约定

v3.4.0 — 2026-10-20

STA 链路补上相册直读;AP 侧收口存储卡读数与实时取景的数据面。

  • 连接:相机以「连接到电脑」方式接入路由器或手机热点(STA)时,机身对常规对象命令加了访问锁,相册此前完全读不出;本版改用机身私有命令直读,列表、缩略图、预览与原图下载恢复可用
  • 连接:直读也不可用的机型不再逐条重试空转,直接提示改用热点直连或 USB
  • 相册:机身不提供文件名时按卡内编号生成(前缀可能与机身设定不同)
  • 设备页:AP 模式下「存储卡」格显示容量、剩余空间与占用比例,此前恒为占位符
  • 监看:AP 取景期间保持 Wi-Fi 高性能、取帧改为连续拉取,相机忙碌(0x2019 / 0xA004)时退避而不是按固定节奏猛敲
  • 监看:取帧搬运去掉扩容与二次裁剪;AP 开播不再并发执行诊断性属性探测,首帧窗口不被抢通道
  • 拍摄页:取景框高度跟随画面比例,去掉画面下方那条多余黑带
  • 提示:机身拒绝操作时的文案由「相机端未确认连接」改为「相机端未放行该操作」

v3.3.2 — 2026-10-18

界面改版一轮:把设备页的信息密度提上来、把连接与监看的纵向空间还回去,并修掉热点接法下的一处连接前置误判。

  • 设备页:底部四格由快捷入口改为机身读数——快门次数 / 镜头 / 电池电量 / 存储卡(含剩余可拍张数),快门读数随附来源与可信度,缺值摆「—」不编默认
  • 设备页:撤掉常驻的相机示意图与两处空态插图,同一信息不再出现两遍;原快捷入口回落到底部导航,不减少可达性
  • 连接页:「连接相机 Wi-Fi」「手动输入相机 IP」与「连接相机」并排成一行,三个页签各省下一颗按钮的高度
  • 连接页:STA 候选两栏移到操作行下方(先给入口再列结果),显隐按页签与架构门控;教程框删去与弹窗重复的末行提示
  • 连接:修复「连接手机热点」子模式下手机 WLAN 关闭被预检判为硬阻断——该接法手机自身即热点,isWifiEnabled 在多台 ROM 开热点时仍读 false;「同一 WiFi」路径逐位不变,模拟器 A/B 实测漏斗阶段由 PREFLIGHT 变为 DISCOVER
  • 监看:横屏底簇三行按配置档收紧(实测 587px→442px),画面遮挡 67%→53%;状态卡避让改为按顶栏下沿与底簇上沿取空带居中,不再压住「模式」芯片
  • 拍摄页:取景窗改按画面真实比例定高(原为 2/3 屏高空框,横向画面上下各留一条黑),省出的空间给到工具行、参数行与快门区三段
  • 拍摄页:新增四颗取景辅助键(全屏 / 直方图 / 网格 / 刷新参数),其中构图网格线这层覆盖物此前在布局里但没有任何入口
  • 设置:「检查更新」不再显示写死的旧版本号;关于应用 / 使用教程 / 常见问题文案与当前界面对齐,并修正「STA 主机注册」被写到 AP 页签的错指

v3.3.1 — 2026-10-16

修复全屏监看页「拍摄模式」远程切换:此前点击后弹窗虽然弹出,但中间列表区完全空白,模式无法选择,功能等同于不存在。

  • 修复:弹窗内同时放置说明文字与模式列表会导致列表被压缩为零高度,改为把当前模式并入标题、让列表独占空间
  • 候选列表:改为读取相机 0x500E 属性描述符里的枚举表,只展示这台相机真正支持的模式;读取失败时静默回退既有兜底列表
  • 交互:读取期间先给出「正在读取」提示,消除点击到弹窗出现之间的空档;切换中按钮显示「切换中」并吞掉重复点击,失败后按钮变为「重试」可一键重试
  • 可用性:未开启监看或已判定机身不支持远程切换时,入口置灰并说明原因,点击不再触发任何请求

v3.3.0 — 2026-10-16

界面语言统一与交互动效落地,同时收口 AP / STA / USB 三条连接链路的代码级缺陷。

  • 连接:STA 链路时序重做 —— 命令 ACK 后稳定等待、注册与日常连接分开、注册先开会话再读设备能力、命令与事件走同一出口、主机身份持续保持、注册后补应用配置窗口
  • USB:数据容器补齐原操作码与事务号并按容器长度消费数据、OpenSession 事务号归零后续递增,修复直连读取失败与中途卡住
  • 连接诊断:新增 STA / USB 全链路排查文档,明确「单测通过不等于尼康真机连通」的边界与硬件验收矩阵
  • 界面:中性色整体改挂带暖色相的灰阶,消除纯白纯黑表面;浅色卡片浮起、页面退后,深色改靠明度阶梯分层而非阴影
  • 可读性:辅助小字对比度 3.36 → 6.54:1、底部导航未选中图标 2.68 → 4.19:1,强光下状态可辨
  • 监看:快门分段反馈(按下收缩 → 过冲回弹 → 落定才白闪),出片时机不变;参数刻度尺支持惯性甩动、逐格减速吸附、两端阻力回弹
  • 监看:参数面板从被点的工具位置圆形扩散展开,内容逐行错峰到场,去程与回程使用不同缓动
  • 参数显示:曝光五格读数改等宽数字,档位切换时竖线不再左右跳动
  • 规范与测试:落地 ADR-001 与两份设计记忆;补齐上一版遗漏的测试依赖,67 个测试文件恢复可编译,全量 388 用例通过

v3.2.0 — 2026-10-15

连接方式整体升级,相机连接更快、更稳定,参数调节与相册全面可用。

  • 连接:连接方式整体升级,相机连接更快、更稳定
  • 连接:修复了反复连接失败的问题,现在几乎一次就连上
  • 参数:参数调节终于可以用了:光圈、快门、ISO、曝光补偿都能远程改
  • 拍摄模式:相机模式远程切换更可靠,切换后有明确确认提示
  • 相册:相册浏览、下载、删除全面提速,大图查看更流畅
  • 遥控:遥控拍摄(快门、对焦、录像)响应更快
  • 细节:修掉了一批影响使用的细节问题

v3.1.2 — 2026-10-14

这一版是连接诊断可追溯:热点连接全过程落盘、失败带完整异常链,真机报障有现场可查

  • 日志:热点(AP)连接全程记入全链路日志 —— 连接工具的每一步输出(握手各阶段、重试、恢复)落盘为 ap_kit 事件,设置页可直接导出;此前 AP 过程只进 logcat,真机出问题没有现场可查
  • 日志:连接失败记录完整异常链 —— 失败另记 link_error 并附异常链(最多 5 层,格式 类型:信息 <- 类型:信息),不再只留一句「AP connect failed」,报障时能看清卡在哪一步、什么原因
  • 日志:样本独立可回溯 —— ap_kit 列入永不合并清单,每轮握手都保留独立样本,不会被日志合并压缩掉
  • 工程:独立测试工程(连接库 demo 与本地假相机工具)STA 链路增强 —— 发现增加网段探测兜底与上次地址快速重连、主机注册独立成按钮并持久化注册态、保活判死前先做往返事务探测;仅用于开发验证,本版 App 连接行为与 v3.1.0/v3.1.1 一致,未随本次改动变化

v3.1.1 — 2026-10-13

这一版是监看工具补齐与连接页瘦身:全屏监看新增斑马纹 / 峰值对焦 / 安全框,渲染链按显示尺寸收口,连接页去掉恒为空的候选栏

  • 监看:新增三个辅助工具 —— 斑马纹看曝光溢出、峰值对焦看合焦、安全框看构图;三者共用一次降采样分析,不改动既有监看链路
  • 监看:帧渲染链收口 —— 宿主登记表统一管理、单线程保序解码、过期帧丢弃、按显示尺寸与缩放计算降采样比例,长时间监看更跟手且不再发烫卡顿
  • 监看:挖孔屏与横屏适配 —— 画面上的信息不再被挖孔或系统栏遮挡
  • 拍摄:修复遥控拍摄页横屏时按不到快门 —— 该页固定竖屏,全屏监看仍可横屏
  • 连接:连接页精简 —— 热点(AP)页签撤掉恒为空的「已发现相机」候选栏(AP 链路上只有一台相机、地址由 App 自行学习),操作只保留必要按钮
  • 连接:修复 Wi-Fi 连接引导弹窗文字不显示 —— 此前打开只有标题与按钮,三步引导从未真正显示过
  • 连接:手动输入相机 IP 收敛到局域网(STA)模式 —— 热点模式无需手填;Wi-Fi 面板拉不起时改为指路系统「设置 → WLAN」,不再形成配网死胡同
  • 协议:相机返回的厂商未定义错误码(0xA002)登记为「未释义」,未知码统一给出中文兜底说明

v3.1.0 — 2026-10-13

这一版是连接方案重构与界面体系升级:AP 连接整体换新、单按钮自动流、断连自处理、视觉规范全量落地

  • 连接:热点(AP)连接整体重做 —— 改走与连接库同款的客户端实现(重入防护 + IO 线程 + 读取验证),AP 状态反馈接入 UI,相册与监看打通 AP 通道,连接后相机基本信息改走 AP 会话加载
  • 连接:新增「连接相机 Wi-Fi」独立入口 —— 不再由「连接相机」弹系统 WLAN 面板触发;弹窗内三步引导 + 面板入口 + 「已连上,继续连接」手动兜底,打开期间每秒轮询在网状态、命中即自动续连
  • 连接:单按钮自动流 —— STA 页签点「连接相机」无候选时自动扫描(mDNS + 网段 + ARP 约 8 秒)并接续首个候选;空态新增「手动输入相机 IP」兜底;三个页签的扫描按钮全部退役
  • 连接:断连自动处理 + 三处缺陷修复 —— 会话丢失自动走指数退避重连(诚实显示「连接中断,正在重试…」)、预算耗尽自动收敛为未连接;连点不再拆掉已建立的连接;所在网络无相机子网立即收口不再空烧蜂窝超时;发现相机后一次性自动重发现并接续
  • 连接:FR-35/36/37/38 收口 —— AP 一键连接四条失分修复、设备页显示相机官方名、STA 架构真正决定连接方式
  • 监看:触摸对焦校准 —— 相机 AF 坐标域实为 live view 图像像素空间,对焦点换算由「固定 4:3 箱」假设改为按帧宽高比线性映射,不再偏移
  • 相册:存储卡不可用(0x2013)单独成档不再混进「元数据不可读」+ 下拉重试;元数据拒读加熔断与自动重拉;日志同键去重不再冲掉现场;缩略图 HD 升级给首屏小图让路
  • 界面:前端优化 T1–T9 与视觉 S1/S2/S4 全量落地 —— 字号/动效/颜色三族 token、骨架屏/空态/触达三态组件、首页拆分(fragment_dashboard 1237→561 行)、拍摄页失败内联状态条(NlStateBar 首次接线)、间距归位与按压反馈、动效无障碍收尾;四个模式面板的连接教程默认收起
  • 兼容:型号显示修正(罗马数字不再被吞、Z50_2 折回 Nikon Z 50II、Z 50Ⅱ 与 Z 50II 收敛同名);移除未使用的 Coil 图片加载依赖

v3.0.0 — 2026-10-03

这一版是连接体验大改版:热点一键连接、热点被系统回收的修复、监看界面重做、路由器直收照片

  • 连接:热点模式一键连接 —— 点「连接相机」自动弹出系统 Wi-Fi 选择面板,选中相机热点后自动完成连接,不再需要先进系统设置、也不再需要手动扫描
  • 连接:修复「连上相机热点几秒后被手机悄悄断开」—— 相机热点没有互联网,会被部分品牌系统按「无网网络」回收;现在网络请求改为会话级持续持有
  • 连接:失败等待大幅收敛 —— 明显不通的线路不再空烧 30 秒长超时(降到 8 秒),刚掉线的场景自动等待最多 8 秒让系统回连后再试
  • 连接:会话保活收紧(空闲 10 秒即刷新机身计时器)+ 掉线原因自动写入日志,报障时能区分手机侧断开还是相机侧关闭
  • 相册:路由器模式支持相机推送直收照片,相册与监看同步修复
  • 监看:全屏监看界面重做 —— 去玻璃化的清晰层级、强调色收窄到当前值、横屏专属布局,并修复工具面板遮挡快门行
  • 兼容:vivo / OPPO / 三星 新增热点保活指引文案;重复掉线时自动给出对应机型的设置入口
  • 回退闸门:v34_ap_one_tap、v34_ap_gw_fastpath、v34_lane_timeout、v34_session_hold、v34_wlan_wait、v34_fast_idle_refresh、v34_drop_reason 与 v33_local_only_request,关任一即回到旧行为
  • 本版已真机验证(vivo V2509A + Z 50II)

v2.6.1 — 2026-09-30

这一版修的是数据线(USB 有线)连不上相机

  • USB:claimInterface 的返回值被丢弃 —— 该 API 返回布尔、不抛异常,旧写法结构上接不住 false,于是接口没占用成功也照样发会话命令,表现就是「插上后一直说相机无响应」;现在返回值当判据,失败会明确告诉你是接口被占
  • USB:命令写入只判「负值算失败」,返回 0(没写进去)和部分写入被当成成功,接着空等 5 秒 —— 真机日志里 575 条 USB 事件统计出两类失败形态(27 次 1~26 毫秒即刻失败、约 30 次等满 5 秒),后者由此而来;现按写满长度判成败
  • USB:会话命令原来只发一次,而清端点 stall 的恢复动作在第二次尝试里,失败路径永远走不到;现在允许补一次,避免管道失步自锁
  • USB:拆数据线时原来只做接口释放和连接关闭,一个字节都不告诉相机,机身会认为会话还占着、下一次不再应答;现在拆链路前先礼貌关一次会话(四款同类软件都这么做)
  • 报障:导出日志新增接口是否真正占用、设备有几个配置与接口、失败发生在哪一层,便于定位
  • 回退闸门:v28_usb_claim_check、v28_usb_write_strict、v28_usb_opensession_retry、v28_usb_close_session,关任一位即回到 v2.6.0 行为
  • 本版已真机验证:数据线连接成功(vivo V2509A + Z 50II)

v2.6.0 — 2026-09-29

这一版收口连接:连不上会说是哪一步,要等多久看得见

  • 连接:放弃预算从约 20 秒提到最长约 2 分钟,并把剩余等待秒数实时显示在界面上 —— 依据是自家真机日志里成功连上最短也要 26 秒,一半以上的成功发生在 20 秒之后
  • 连接:绑网前强制校验相机地址是否落在所选网卡子网内,绑错网卡造成的失败改由独立原因码 bind_failed 报出,与「没有可用网络」分开陈述
  • 连接:新增阶段分界卡,把「选网/绑网」耗时从 TCP 段里切出来;一轮里被反复重访的脏样本不再进入 p50/p95 统计,设置页与导出日志的耗时数字第一次可信
  • 有线 USB:重连退避真正生效 —— 此前退避数组永远走不出第 0 项,实测 273 秒内重连 45 次,而现在每次重连都会抢占一次相机;改为跨调用单调递增并设 8 轮上限,到上限后停手并提示重插
  • 有线 USB:机身对会话命令一个字都不回时不再走「残留会话恢复」的额外一轮,单次失败等待从 16 秒降到 5 秒
  • 相册:同一次拍摄的 RAW 与 JPG 合成一条显示,本版默认开启;下载可选只下 RAW / 只下 JPG / 两个都要
  • 报障:导出日志新增手机型号与 ROM 家族、系统与-app 版本、每轮连接的触发来源、端口探测次数与结论档位、阶段重访次数
  • 回退闸门:v26_conn_serialize、v26_bind_subnet_check、v26_probe_budget、v26_giveup_floor、v26_iface_classify、v26_preflight_soft、v26_ip_promote、v26_usb_skip_recovery、v26_usb_reconnect_ramp;逐位关掉即回到 v2.3.2 的连接行为

v2.3.2 — 2026-09-24

这一版把「连得上、看得清、说得明白」三件事往前推了一步(M1 地基收敛)

  • 连接:STA 侧一条永久阻塞的读取被拔掉 —— 相机接了 TCP 却不回事件通道时,原来会一直转圈,现在 15 秒内失败并给出专属原因码 event_ack_timeout;requestNetwork 改用带系统超时的重载,ARP 扫描真正使用自己的时间预算
  • 相册:千张级卡库首屏不再等全量 —— 逐页发射的是「累积 + 按当前排序排好」的前缀,只往尾部补,解决了 v1.0.2 就存在的「刷新跳到别的照片上」问题;旧列表起积,刷新第一帧仍是完整列表
  • 主机注册:相机回过 InitFail 就撤销「已注册」,界面上的三态从此由机身证据决定,不再是一次写入的永久布尔
  • 争抢引导:机身只有一个 PTP/IP 客户端槽位,被占用时给出去断开谁的可执行指引(此前与「相机在忙」混成一句)
  • 快门次数:最新几张样张互验,数值不一致时报区间并标「未校验」;解析失败时保留一份样张在应用私有目录,反馈问题能一起给出
  • 可信性:设置页「关于」可查版本 / versionCode / 包大小 / 本机包 SHA-256 前 8 位 / 安装时间与三渠道说明;导出日志开头新增连接分阶段耗时、逐对象 MB/s、监看超轮率三项基线(纯本地,不上传)
  • 回退闸门:v25_sta_timeouts、v25_album_incr、v25_hostreg_verify、v25_shutter_crosscheck,关掉逐位等于上一版行为

v2.3.1 — 2026-09-21

快门次数从「查不到」做到可交付:修掉两处会让所有真机一律失败的结构错误,并把云端兜底收进授权门。

  • 根因:MakerNote 0x927C 实际位于 Exif 子 IFD(0x8769 指向),旧实现只在 IFD0 找;且 IFD 位置从未试现代 D/Z 的 +18 —— 两处叠加使本机解析从未成功过,云端解析从「兜底」被顶成了主路径
  • 自校验:按形态枚举候选 (IFD 位置 × 字节序),再用固件恒等式 0x00A5 + 0x00A6 == 0x00A7 反选真正对齐的那一个;只过数值合理性、未过恒等式的读数标「未校验」,不假装成功
  • 字节序:MakerNote 的字节序可以与主 TIFF 头相反(真机 D2Hs / D70 即大端笔记 + 小端机身),因此不做「尼康一律小端」的假设
  • 样张挑选:由「文件最小」改为「拍摄时间最新 + NEF 优先」——旧选法会挑到卡上留存的旧照片,而 0x00A7 记的是拍摄那一刻的计数,于是报出一个偏低的假数字
  • 传输:只读文件头 1MB(GetPartialObject 0x101B),45MB 的 NEF 不再整块下载;机身不支持局读时退回整文件下载一张,不再逐样本拖大包
  • 隐私:云端解析改为需用户明确授权,弹框说明上传什么、给谁、原片含序列号与可能的 GPS;未授权时既不下载也不上传
  • 无障碍:大字档下相册分段胶囊按 fontScale 长高、系统高对比度自动降级、顶栏触点补足 48dp
  • 界面收口:42 处 Toast 统一进 NlFeedback 单入口;覆盖式顶栏全部移除;传输大文件期间玻璃特效自动降级

v2.3.0 — 2026-09-20

液态玻璃视觉改版收口:dock 真悬浮与自动隐藏、弹窗模糊同步渐入、监看/预览玻璃面折射;同时把快门次数查询与逐机型兼容引导做扎实。

  • 视觉:底部导航真正压进内容区(上滑收起、点一下回弹、3.8s 无操作自动收起),dock / 多选操作坞 / 监看 HUD / 预览上下工具栏共用一套 backdrop 采集器
  • 材质:模糊 + 边缘折射在 1/8 降采样纹理上算,Android 10 与 Android 16 同一条代码路径;顶栏随内容滚动渐显,分段切换改成带表面张力的液态滑动胶囊
  • 可读性:玻璃面按背景亮度自适应加浓 tint,WCAG AA 4.5:1 不达标即退回不透明白底;列表项零实时模糊
  • 可回退:设置页新增「经典外观」「降低透明度」两个开关,关闭后几何与材质逐项还原,与 v2.2 观感一致
  • 快门次数:修好「永远查不到」——MakerNote 位于 Exif 子 IFD,IFD 位置改按真机形态枚举
  • 机型引导:连接诊断按手机品牌给出自启动 / 后台策略 / OTG / WLAN+ 的具体设置路径,兼容矩阵落为 assets/compat/rom_rules.json 数据资产,新增机型不必发版
  • 构建:兼容矩阵的 Gson 模型补 R8 keep 规则,避免 release 包读表为空

v2.2.0 — 2026-09-20

三通道连接稳定性专项 + 照片传输体验修复;界面换装液态玻璃风格。

  • AP 连接:自动从已连热点学习相机地址,关闭蓝牙也能直连;换网段不再依赖内置默认地址空转
  • AP 首连成功率:连接前的可达性探测不再抢占机身唯一的 PTP/IP 客户端位,修掉「前两次连接失败、第三次才成功」
  • 连接诊断:统一连接漏斗与 40 个稳定原因码,设置页「连接诊断」可看到每次连接卡在哪一步、为什么,并一键复制
  • 环境预检:连接前检查 WLAN 开关、附近设备与定位权限、电池优化、VPN、「避开不良网络」与 OTG,硬阻断直接给出设置入口
  • 重试预算:单轮自动重试上限 8 次并在超限时说明原因,避免反复失败的相机热点被系统拉黑
  • 监看:USB 有线监看不再周期性掉线——按失败类型分级容错,机身正常无帧期间原地重启码流而不拆会话
  • 相册下载:批量下载单张不再变慢(缩略图与原图分块不再互相插队),全屏页下载的切页 / 退后台中断修复
  • 大文件传输:>2GB 视频与长 MOV 的断点续传不再写坏文件,批量传输期间心跳不再误判链路死亡
  • 界面:设备页、监看、远程拍摄、设置与弹窗统一为液态玻璃质感(可在设置中关闭)

v2.1.1 — 2026-09-18

无线连接的诊断与效率优化;连接功能保持 v2.1.0 已验证的稳定状态。

  • 连接目标地址优化:自动优先使用蓝牙配对凭证与本轮发现的相机地址,消除此前长时间在默认地址上空转重试的问题
  • 连接失败提示分级:区分「未找到相机」「相机未认可本机(需完成主机注册)」「连接后中断」等情形,提示更具体可操作
  • 小米 / 红米设备识别:自动识别 MIUI / HyperOS 设备,连接失败时附加针对性引导(附近设备与定位权限、智能网络切换等)
  • 连接稳定性保持:AP 直连、WiFi STA、USB 有线三种连接方式,保持 v2.1.0 已验证的表现

v2.1.0 — 2026-09-18

预览、监看与更新通道优化;连接功能保持 v2.0.1 已验证的稳定状态。

  • 预览下载进度保持:在预览界面发起下载后,退出预览并重新进入同一文件,仍持续显示该文件的实时下载进度与完成状态
  • 触摸对焦坐标校正:远程监看的对焦坐标改为按实时画面的实际宽高比换算,修正此前固定比例假设造成的画面边缘对焦位置偏移
  • 新增百度网盘通道:检查更新弹窗与设置页新增「百度网盘下载」入口,与夸克网盘并列,提供更多国内下载途径
  • 连接稳定性:AP 直连、WiFi STA(手机热点 / 同路由器)、USB 有线三种连接方式,保持 v2.0.1 已验证的表现

v2.0.1 — 2026-09-17

WiFi STA 链路打通:相机以 STA 方式接入网络,从「搜得到却连不上」变为可稳定连接。

  • STA 主机注册:新增 PrepareHost(0x952B) / ConfirmHost(0x935A) 厂商命令流程,首次使用在 AP 模式注册一次,相机记住本机后 STA 会话才被放行
  • 热点网段识别修复:手机自身热点接口属 TETHERING、不经 ConnectivityService,改用内核网卡枚举判定可用网络,消除「有热点却判定无 WiFi」的误判
  • 默认路由回落:热点拓扑下系统不派发 Network 句柄,改以默认路由继续发起 PTP/IP,不再空转重试
  • 局域网发现修复:mDNS 组播改为逐网卡两参 joinGroup,避免热点网卡不支持组播导致整段发现失效
  • 连接耗时与失败可见化:网络解析由串行改并行(16.2s → 4s 上限);解析 InitFail 原因码并回传界面
  • 注册入口与教程:STA 页签常驻「STA 主机注册」按钮,内置三步连接教程与失败提示对照

v1.3.1 — 2026-09-10

设备页连接文案修复:WiFi 场景不再出现 USB 专属提示,USB 提示不再被截断。

  • WiFi 场景误显示修复:WiFi AP / STA 连接时设备页不再出现「未检测到 USB 相机」;USB 探测改为只在用户主动点连接时提示,开机自动探测保持静默
  • 提示不再截断:状态行只显示短文案(未检测到 USB 相机 / USB 连接失败 / USB 权限被拒绝),完整操作指引移入可换行的 USB 卡片
  • 状态行收敛:状态行渲染统一到单一出口,USB 文案仅在 USB 场景出现,切回 WiFi 页签立即恢复无线状态文案,杜绝文案残留

v1.3.0 — 2026-09-10

七项体验优化:镜头信息显示、相册「已下载」状态可信化、拍摄后逐张即时刷新、USB 连接与状态、录像中的监看稳定性,以及拍摄模式远程切换。

  • 镜头显示:第三方镜头(适马 / 腾龙 / 蔡司等)不再被显示成 NIKKOR 前缀,只显示客观可得的规格(如 18-50mm f/2.8);读不到规格时显示「未知镜头」,不再暴露内部镜头 ID
  • 相册「已下载」角标:相机照片页右下角为已下载照片显示「✓ 已下载」,一眼可辨
  • 删除后状态自愈:删除手机本地照片后,该张立即恢复为「未下载」——角标消失、在「未下载」筛选中重新出现、剩余进度计数回升;App 内删除与系统相册删除均成立
  • 状态不再随时间丢失:废弃按 30 天清理传输记录的旧策略,改为只以本地文件是否存在为准
  • 拍摄后逐张即时入册:启用尼康私有事件 ObjectAddedInSDRAM,相机拍完即抓取该张插入列表,单张与连拍都逐张即时出现
  • USB 状态与连接:状态行改由 USB 连接状态驱动,修复「连上后一直显示正在建立 USB 通道...」;连接前清理上次残留的接口占用、失败后重试,减少反复插拔
  • 录像监看:修复视频模式 + 联动画面下开始录像后画面断开,停止录像自动恢复
  • 拍摄模式远程切换:写入后主动回读相机确认,分「切换成功 / 机型不支持(请用机身拨盘)/ 读取失败」三种结果明确提示

v1.2.2 — 2026-09-09

稳定性专项:远端监看偶发断连修复 + WiFi STA 链路重构 + 相册快速翻页修复 + 对齐相机固件连接语义。

  • 监看心跳校验:心跳此前「只发不验」,相机侧已断开而 App 仍在等待;现在校验响应,超时即判定断连并走重连
  • 事件通道不再阻塞:event 通道加入读超时(45s)与心跳探测超时(1.5s),异常统一计为 event_read_timeout / event_read_error 并可恢复
  • WiFi STA 链路重构:网络申请与绑网生命周期收敛到统一的 StaNetworkRequester,会话级持锁避免并发抢网,连接结束正确释放网络绑定
  • 握手语义对齐:连接失败自动重试(最多 5 次、间隔 300ms)、连接超时 30s、event 通道开启 TCP_NODELAY 降低指令延迟
  • 相册翻页修复:滑出屏幕的项立即取消残留动画并复位,快速翻页不再出现对勾错位与缩放残留;快速滚动期间暂停缩略图请求、停止后按可见区间补齐

v1.2.1 — 2026-09-09

群友反馈专项修复 + WiFi STA 连接增强(原计划以 v1.3.0 发布,按用户决定改为小版本号)。

  • 「不重复下载已下载照片」开关:相机照片页标题右侧,开启后已下载照片立即隐藏,关闭后按原顺序恢复并回到原位置
  • 剩余下载进度:筛选行下方常驻「已下载 M/N · 剩余 K 张」,下载中实时显示整体百分比
  • 导入即时可见:照片下载完成后主动通知系统媒体库扫描,系统相册 / Google 相册无需手动刷新
  • 缩略图合批刷新:快速翻页不再卡住 / 花屏 / 堆叠
  • 筛选兜底:「未下载」筛选下全部下载完成时自动关闭筛选并提示,不再出现空列表
  • STA 扫描失败可见化:显示已探测地址数、ARP 条目数、mDNS/NSD 响应情况;双无响应时提示「路由器可能过滤组播或开启了客户端隔离」
  • 扫描增强:总时长 12s → 18s,mDNS 每 4 秒重发、单次读超时 1s → 2.5s;新增手动输入相机 IP 直连

v1.2.0 — 2026-09-07

USB 有线连接全链路优化 + 相册体验升级。

  • USB 相机识别修复:机身自报 DeviceInfo Model 优先、PID 表兜底,不再出现「已连接但只识别一次」或型号错乱
  • 相册加载提速:元数据改用 MTP 批量接口(0x9805)一次往返拉取,数千张照片从分钟级降到秒级
  • USB 实时监看打通:事务层容器重组重建,监看画面在 USB 通道下稳定出流
  • 缩略图渐进加载:小图先出、高清图后台静默升级;首次进入直接落在顶部,排序切换后回到第 1 页
  • 预览左右滑动:点开照片后可滑动切换上一张 / 下一张;「跳过已下载」开关迁移至刷新键左侧
  • 拍摄模式下拉切换:快门旁按钮改为「主体执行 + 右侧箭头弹菜单」,视频档自动隐藏间隔 / B 门按钮
  • 远程模式切换校验:0x500E 切换带读回确认,失败时按钮置灰并明确提示
  • 遥控拍照不再断连:快门期间监看帧错误宽限处理;全屏监看进出画面连续
  • 状态栏修正:通知状态与实际连接状态严格一致;本地相册二次打开缩略图秒出

v1.1.0 — 2026-09-06

六大模块专项修复 + 长曝光与快门次数增强。

  • B 门全链路重构:自动切 Bulb 档 → 多级触发指令(0x9207 / 0x100E / 0x100F 逐级兜底)→ 可靠收门,全程响应码可见
  • 定时长曝光:15 秒 ~ 5 分钟可选、剩余时长倒计时、随时提前收门;入口迁移至「间隔拍摄」按钮(点击执行 / 长按切换)
  • 相册 Tab 修复:三 Tab 收敛为单一数据源,点击后选中态与列表原子切换;下拉刷新后自动回顶部
  • 长按滑动多选:滑过即选、回滑即取消、到列表边缘自动滚动续选
  • 双指缩放重构:双指中点锚点、单指平移、边界回弹、双击复位;构图网格与画面像素级同步
  • 拍摄模式双向同步:机身拨盘切换 ≤500ms 跟随手机端
  • 录像修复:0xA004 语义修正、0x90C2 时序对齐、录像不再强制依赖监看
  • USB 连接加固:失败原因分类提示(权限 / 接口占用 / 会话失败 / 链路超时)、1s/2s/4s 退避重连、连接成功即预置取流管线
  • 快门次数查询:本地 MakerNotes 解析优先(离线私密),云端解析兜底,结果标注来源

v1.0.2 — 2026-09-04

  • 视频录制:遥控页可直接录制,录制前自动开启监看;遇 NotLiveView / 相机忙时自动重试,失败原因中文化
  • 拍摄模式远程切换:遥控页「模式」栏可远程切换 P / S / A / M / Auto,全屏监看页模式标签同样可点
  • 高清缩略图:缩略图改用相机大图通道获取,照片下载完成后以原图重生成高清缩略图(长边 1024)
  • 快门显示修正:快门读取新增相机专有属性双源校验并按机身标称档位归一;设置快门时同步双写保证生效
  • 对焦点位置修正:点击对焦坐标统一处理取景黑边与双指缩放;对焦指令间增加生效等待
  • 缓存升级:缩略图解码上限 512 → 1024,旧小图缓存自动作废

v1.0.1 — 2026-09-04

  • 参数手动输入:快门 / 光圈 / ISO 滚轮均支持直接键入(如 1/250、f/2.8、ISO 800),无此档位时自动切换到最接近的有效档并提示实际生效值
  • 相册自动同步:遥控拍摄完成后照片自动出现在相册;连拍 / 间隔拍摄合并为一次刷新
  • 亮度直方图:遥控拍摄页与全屏监看页均可开启,与取景画面同步刷新
  • 快门上限扩展:1/1000 → 1/4000
  • 档位显示修正:不再出现 1/167 等相机实际不存在的档位名
  • 支持入口:设置页顶部新增「支持开发 · 请喝杯咖啡」

v1.0.0 — 2026-09-03

N-Link 第一个正式版:通过 WiFi / USB 以 PTP 协议控制尼康相机,实现遥控拍摄、全屏监看、照片浏览与批量传输。

  • 相册与传输:已标记分区(连机后一键筛选、批量下载)、未下载筛选、EXIF 面板、分享副本、传输完成通知、应用内更新日志
  • 体验优化:照片按拍摄日期分组(组内全选 / 取消全选)、意见反馈直达 QQ 交流群、双击返回退出、监看横竖屏图标重绘
  • 项目清理:移除无引用的废弃资源与代码

v0.1.4 — 2026-09-02

聚焦 WiFi STA 连接重构与有线实时监看启用修复,基于 392 行真机连接日志的 13 条根因逐一对症修复。

  • WiFi 连接重构:连接入口收敛为单一连接循环(WifiDirectConnector),根治并发配对风暴;配对 / 会话恢复 / 状态机重连三条循环合一
  • 重试节奏:指数退避 1s → 15s 共 10 次(总窗口约 90s);新增 WifiEndpoint 地址校验与归一化
  • 网络监听:连接期持有 WifiLock(息屏不被回收),每次尝试重新解析网络句柄;NSD 系统级 mDNS 与裸 Socket 并行互备
  • 监看启动闭环重写:重发 StartLiveView + 300ms 静默期 + 探帧确认(最多 6 轮),修复 USB 直连时监看必然失败自动停止
  • 禁止条件可读:启动前读取 LiveViewProhibitCondition,回放 / 菜单 / 大容量存储 / 电量不足时给出明确提示
  • 停止校验:EndLiveView 结果校验 + 曝光模式恢复;USB 判活收敛为通道优先级单点判定,僵死自动回落 WiFi

v0.1.3 — 2026-08-31

  • 修复:全选下载重复下载、连接后相册不刷新、快门方向反转、光圈限位越界、检查更新(只提示正式版,预发布不推送)
  • 相册排序模块:支持最新优先 / 最旧优先 / 按文件类型排序,切换保持浏览位置
  • 快门 1 秒分界显示:<1s 显示分数(1/250、1/2.5),≥1s 显示秒数(1s、1.3s、30s)
  • 长曝光档位:快门档位表补齐 0.5s → 30s 标准档(共 46 档)

v0.1.2 — 2026-08-22

  • WiFi STA 稳定性:路由器断网恢复后自动重建 PTP 会话;PTP 断链恢复不再要求相机端重复确认
  • 预览性能:缩略图内存 LRU + 磁盘两级缓存,按需并发加载,解码移出主线程
  • 下载速度:分块 1MB → 4MB(失败自动降级);流式写盘内存峰值降低约 50%;5GHz 优先 + 2.4GHz 回退
  • 设置项落地:下载画质、保存路径、连接偏好、自动下载新照片、5GHz 优先均实际生效
  • 全链路日志:链路级结构化打点、崩溃日志落盘、设置页可导出日志,PTP 错误码中文化

v0.1.1 — 2026-08-16

  • 项目更名为 N-Link:应用名、通知、归档目录(DCIM/N-Link)、数据库统一更新
  • 修复 STA 模式连接失败:WiFi 扫描 / 历史 IP 探测 / PTP/IP 会话 socket 显式绑定当前 WiFi 网络,避免蜂窝数据抢占默认路由
  • mDNS 组播扫描显式绑定 WiFi 网络,提升同网段相机发现成功率

v0.1.0 — 2026-08-08

首个正式发布版本。

  • 支持 WiFi AP / WiFi STA / USB 有线三种连接方式
  • 实时监看、遥控拍摄、相机参数同步
  • 相机照片与本地照片传输管理
  • 白平衡、测光、对焦模式与尼康机身一一对应

🛣️ Roadmap

  • Phase 1:三通道连接 + 照片传输(MVP)
  • Phase 2:远程快门 / B 门 / 定时 / 间隔拍摄 + 参数读写
  • Phase 3:Live View 实时取景
  • v1.1.0:八项真机反馈修复 + 画面模式顶部下拉 + 教程气泡
  • v1.2.0:USB 连接与照片管理全链路优化(7 项)+ 三处断连修复 + 相册体验
  • v1.2.1:群友反馈优化(不重复下载开关 / 剩余下载进度 / 媒体库即时扫描 / STA 扫描增强)
  • v1.2.2:稳定性专项(远端监看断连修复 + WiFi STA 链路重构 + 相册翻页修复 + 握手语义对齐)
  • v1.3.0:七项体验优化(镜头显示 / 已下载角标 / 状态自愈 / USB 状态 / 逐张即时刷新 / 录像监看 / 模式回读)
  • v1.3.1:设备页连接文案修复(WiFi 场景误显示 USB 提示 / 提示文案截断)
  • v2.0.1:WiFi STA 链路打通(主机注册 / 热点网段识别 / 默认路由回落 / 组播发现修复 / 注册入口与教程)
  • v2.1.0:预览下载进度保持 / 触摸对焦坐标校正 / 新增百度网盘下载通道
  • v2.1.1:连接地址分级与失败提示分级 / 小米(MIUI/HyperOS)识别引导
  • v2.2.0:AP 地址学习与首连成功率 / 环境预检与连接诊断 / 重试预算 / USB 监看容错 / 批量下载提速与不中断 / 液态玻璃界面
  • v2.3.0:液态玻璃改版收口(dock 真悬浮与自动隐藏 / 弹窗模糊同步渐入 / 折射与对比度自适应 / 两个回退开关)/ 快门次数查询重构 / 逐机型兼容矩阵数据化
  • v2.3.1:快门次数结构修复(Exif 子 IFD + IFD 位置枚举 + 恒等式自校验)/ 云端解析改授权门 / 只读文件头不再整包下载 / 液态玻璃与无障碍收尾 / 系统提示统一收口
  • v2.3.2:STA 永久阻塞修复与专属原因码 / 大库相册首屏不再等全量 / 主机注册状态由机身证据决定 / 连接位被占用给出腾挪指引 / 快门次数多样本互验 / 关于页自证版本与包校验值 / 日志附带连接与传输基线
  • v2.6.0:连接可靠性收口 —— 放弃预算与实测成功耗时对齐并上屏剩余秒数 / 绑网子网强制校验与 bind_failed 独立原因码 / 阶段耗时去污与 ROUTE 分界卡 / USB 重连退避首次真正生效并设轮次上限 / RAW+JPEG 成对默认开 / 导出日志补全机型、触发来源、探测档位与重访次数
  • v2.6.1:USB 有线连接收口 —— claimInterface 返回值当判据 / 命令写入按满长度判成败 / 会话命令允许补一次以走到清 stall / 拆链路前先发 CloseSession 不再把会话留在机身 / 导出日志补接口占用与设备结构线索
  • v3.0.0:连接体验大改版 —— AP 一键连接与系统 Wi-Fi 面板拉起 / 无互联网热点被系统回收的会话级持有修复 / 分线路超时收敛与掉线回连等待 / 空闲保活快档与掉线原因日志 / 监看 HUD 去玻璃化重做与横屏布局 / 路由器模式相机推送直收照片
  • v3.1.0:连接方案重构与界面体系升级 —— AP 连接整体换新(同款连接库客户端 + 状态反馈入 UI + 相册监看打通 + 基本信息走 AP 会话)/「连接相机 Wi-Fi」独立入口与面板续连 / STA 单按钮自动流(自动扫描接续 + 手动 IP 兜底 + 扫描退役)/ 断连自处理(指数退避重连 + 预算耗尽收敛 + 连点不拆活会话 + 无相机子网快收口 + 发现自动接续)/ FR-35~38 收口 / 触摸对焦按帧宽高比校准 / 相册 0x2013 成档与元数据熔断 / T1-T9 与视觉 S1/S2/S4 全量落地 / 型号显示修正与 Coil 移除
  • v3.1.1:监看工具补齐与连接页瘦身 —— 斑马纹 / 峰值对焦 / 安全框三件套(共用一次降采样分析)/ 帧渲染链收口(宿主登记表 + 单线程保序解码 + 过期帧丢弃 + 按显示尺寸降采样)/ 挖孔屏与横屏适配 / 遥控拍摄页横屏按不到快门修复 / 连接页撤掉恒为空的 AP 候选栏 / Wi-Fi 连接引导弹窗文案不显示修复 / 手动 IP 收归 STA / 厂商未定义错误码中文化
  • v3.1.2:连接诊断可追溯 —— AP 连接全程打点落盘(ap_kit 事件,握手/重试/恢复逐步可查)/ 失败记 link_error 并附最多 5 层异常链 / ap_kit 列入永不合并清单保证每轮样本独立 / 独立测试工程 STA 链路增强(网段探测兜底、上次地址快速重连、主机注册按钮与注册态持久化、保活判死前先探测),App 侧连接行为不变
  • v3.2.0:AP 链路整体重做 —— 整体引入开源 PTP/IP 引擎(握手/事件循环/事务/相册分页/监看/快门/录像/参数描述符)/ 每次握手新会话身份、失败自动重试 / 参数调节与拍摄模式远程切换真正可用 / data-out 线格式与数据完整性校验修复 / 相册传输接缝切换 / STA 与 USB 链路零改动
  • v3.3.2:界面改版一轮 —— 设备页四格改机身读数(快门/镜头/电池/存储卡含剩余可拍)/ 撤相机示意图与空态插图 / 连接页按钮合行 / STA 候选栏下移 / 修「连接手机热点」下 WLAN 关闭被预检误拦 / 横屏监看底簇压缩(遮挡 67%→53%)与状态卡避让重做 / 拍摄页取景窗按画面比例定高 + 四颗取景辅助键(网格线补首个开关)
  • v3.3.1:修复监看页拍摄模式远程切换(弹窗列表被挤压至零高度)/ 候选模式改读机身 0x500E 描述符枚举、只列本机支持项 / 入口三态(切换中防重、失败可重试、不可用置灰并说明原因)
  • v3.3.0:界面语言统一与交互动效 + 三链路缺陷收口 —— STA 时序重做与 USB 数据容器事务号修复 / 中性色改挂带暖色相灰阶、消除纯白纯黑表面、边框转 alpha hairline / 圆角三套体系收敛为单一阶梯 / 修两项既有对比度缺陷(小字 3.36→6.54:1、导航图标 2.68→4.19:1)/ 四拍动效(快门分段反馈、刻度尺惯性吸附、面板触点扩散、内容错峰)/ 曝光参数等宽数字 / 补齐测试依赖解锁 67 个测试文件
  • v3.4.0:STA 相册直读(私有命令绕开 0x200F 访问锁:列表 / 缩略图 / 预览 / 原图下载)/ 直读不可用直接指引改走热点直连或 USB / AP 设备页存储卡容量与剩余空间 / AP 监看数据面优化(会话持锁、建链前套接字调优、取帧零拷贝、连续取帧与忙碌退避、开播不再并发探测)/ 拍摄页取景框下限跟随画面
  • v3.4.1:STA 相册「已保护」筛选与保护位按需读取 / 断线续传等待重连与整段传输保活 / 视频与下载目录落盘分流 / 预览删尾页越界修复 / 相册滚动链路重做(滚动期零采集、单格缩略图刷新、复用与布局优化)
  • v3.4.2:多选选择圈与已选标题 / 下载、删除、分享后退出多选与返回键退出 / 下载队列入口与面板 / 预览页 RAW+JPG 成对下载 / 相册分页与刷新排序稳定 / 5GHz 分块与热点整文件下载 / STA 文件名 4 位与 AdobeRGB 命名 / 保存失败清理半成品 / 首次启动后台运行授权
  • v3.4.3:相册多选返回稳定退出 / 镜头品牌型号按规格表与最近照片 EXIF 补齐 / 缩略图与大图预览清晰度提升 / 快门瞬间取景框拉伸修复 / 对焦回显按相机显示区域换算
  • v3.4.4:同一路由器 WiFi 连接保持与掉线感知 / 主机注册分诊与网段提示 / 自动发现按当前拓扑扫描 / 对焦框逐帧跟随相机真实区域
  • v3.4.5:向相机写入手机位置(0x9523)并与「分享副本保留 GPS」分界 / 选中照片后进入独立分享页(预览 / 原图 / 目标直达,本地照片可分享)/ 相机详情页(固件、序列号、镜头、快门、电量、存储、能力)与固件版本检查 / 最近设备折叠 + 取消连接
  • Phase 4:AI 修图(PRD 已完成,未动工)
  • 监看色彩与 LUT(PRD 已完成,待开发)
  • 更多机型适配与兼容性验证、iOS 规划

🤝 贡献

欢迎参与共建:

  1. 遵循现有代码风格(Kotlin 官方风格、中文注释、统一 Timber 日志 Tag)
  2. 核心协议改动请附带单元测试,真机行为变更请补充说明
  3. 提交前确保 :app:testDebugUnitTest 通过

📄 许可与声明

本项目为个人开源研究项目,与尼康公司无任何关联,非尼康官方应用;Nikon 商标归其各自所有者所有。

⚠️ 仓库当前尚未附带开源许可证文件。在明确授权之前,请勿用于商业分发或二次发布,如需授权请联系作者。

如果这个项目对你有帮助,欢迎反馈连接稳定性问题,帮助我们一起改进。

Mirror dokumentasi diarsipkan dari repositori resmi GitHub · Kunjungi di GitHub
Tanggal snapshot: 2026-11-09