更新记录

0.1.0(2026-08-30)

  • 建立 uni-app x 示例工程与 UTS API 插件骨架。
  • 定义拍摄、能力查询、取消和本地一致性校验接口。
  • 定义版本化清单、稳定错误对象和 Android/iOS 平台边界。
  • 实现 Android CameraX 与 iOS AVFoundation 原生全屏拍摄页。
  • 实现照片方向处理、五档像素水印、原片策略、缩略图、SHA-256 清单与本地校验。
  • 实现短视频限时录制、可选录音及 Android Media3/iOS AVVideoComposition 像素水印转码。
  • 实现显式设备定位、取消、超时、单会话状态机和失败清理。
  • 通过 HBuilderX 5.24 双端插件模块与示例工程编译,待自定义基座真机验证。
  • 示例页改为全中文,并统一为浅灰页面、白色卡片和绿色状态反馈。
  • 增加照片/短视频原生查看和系统文件面板导出,能力直接内置且无其他插件依赖。
  • 移除 Android/iOS 原生拍摄页顶部的英文副标题,仅显示工单号或“现场记录”。
  • 修复 Android 相机页销毁后 CameraX Preview 继续持有 PreviewView 与页面上下文的内存泄漏,并拦截页面销毁后的异步相机初始化。

平台兼容性

uni-app x(4.0)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序
× × 8.0 0.1.0 13 0.1.0 × ×

xs-proof-camera

面向 uni-app x App 的工程取证水印相机 UTS API 插件。插件通过 Android、iOS 原生相机完成现场拍摄,把业务字段写入最终媒体像素,并生成可独立校验的 JSON 清单。

当前开发状态

0.1.0 已实现 Android/iOS 原生照片和短视频链路:前后摄像头、闪光灯/手电筒、点击对焦、双指缩放、显式定位、可选录音、像素水印、原片策略、缩略图、SHA-256 清单、本地一致性校验、原生文件预览和系统另存为。HBuilderX 5.24 插件模块和双端整项目编译均已通过。

当前缺少自定义基座真机验证,仍不可用于生产或作为已完成能力上架。标准基座不会加载本插件的原生配置和三方 SDK,调试时必须制作自定义基座。

目标平台

  • Android 8.0(API 26)及以上。
  • iOS 13.0 及以上。
  • Web、小程序和 HarmonyOS 不支持。

API

import {
  getProofCameraCapabilities,
  openProofCamera,
  cancelProofCamera,
  verifyProofAsset,
  previewProofAsset,
  exportProofAsset
} from '@/uni_modules/xs-proof-camera'
  • getProofCameraCapabilities():同步读取当前设备和当前插件版本的实际能力。
  • openProofCamera(options, success, fail):打开一次原生拍摄会话并返回会话 ID。
  • cancelProofCamera(sessionId):取消仍在运行的会话。
  • verifyProofAsset(options, success, fail):重新计算媒体摘要并与清单比对。
  • previewProofAsset(options, success, fail):使用插件内置原生页面查看照片或短视频。
  • exportProofAsset(options, success, fail):通过系统文件面板把成品复制到用户选择的位置。

短视频在 Android 使用 CameraX 录制并由 Media3 Transformer 写入最终像素;iOS 使用 AVFoundation 录制并由 AVVideoCompositionCoreAnimationTool 生成水印成片。keep-original 会额外保留转码前的原始录制文件。

文件查看和导出代码直接包含在本插件中,不依赖其他 uni_modules。导出只处理本插件已经生成的本地文件,不包含网络下载能力。

完整字段、默认策略和错误码见示例工程的 docs/API.md

隐私边界

  • 插件不联网、不内置统计、不上传媒体和位置。
  • 仅在对应功能启用时申请相机、麦克风或位置权限。
  • 位置权限被拒绝后仍允许无位置拍摄,除非调用方明确设置 requireLocation: true
  • 文件哈希只用于发现输出媒体是否与清单一致,不代表司法效力,也不能证明拍摄场景本身真实。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 按功能申请相机、麦克风和位置权限;iOS 按功能显示对应系统授权说明

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

仅处理调用方明确传入的业务字段、可选位置信息和用户主动拍摄的媒体文件;插件不联网、不上传、不内置统计

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。