跳到主要内容

类型

@unif/react-native-camera 所有公开类型的完整定义,逐字段(prop · 类型 · 默认 · 说明)列出。类型从 @unif/react-native-camera 直接导出。


引用

import type {
OpenConfig,
CameraMode,
WatermarkType,
CameraResult,
CustomPhotoFile,
CameraApi,
} from '@unif/react-native-camera';

OpenConfig

传入 api.open(config) 的配置对象。

字段类型必填默认说明
cameraModeCameraMode[]拍摄模式数组,至少一项;多项时底部出现模式 tab
dataRetainedMode'clear' | 'retain'切换模式时是否保留已拍照片
watermarkWatermarkType不加水印文字水印配置;传入则取景显示戳记 + 保存时烧入成片
photoQualityPrioritization'speed' | 'balanced' | 'quality'走 SDK 默认 'balanced'照片质量优先级(全局)。缺省不传该字段、由 vision-camera 用默认 'balanced''speed' 在不支持的设备会被安全降级'balanced'(不报错);'quality'/'balanced' 任何设备直传
photoHDRboolean由相机 negotiate 决定是否启用照片 HDR(多帧融合,更宽动态范围)。缺省不下发该约束、不强制开关;传 boolean 才作为约束下发
videoBitRatenumber编码器自适应录像目标码率(bps,全局,作用于 video 模式)。缺省不传、由编码器按分辨率自适应;仅在需要明确控制时传(如 4K 约 20–40 Mbps)

各字段的运行时行为见 CameraApi → OpenConfig

拍摄质量三字段缺省即「不替你做取舍」

photoQualityPrioritization / photoHDR / videoBitRate 都是可选字段,缺省(不传)时库不写入任何偏好,完全交给 vision-camera SDK 的默认协商。只有你显式传值时才会覆盖默认。照片/录像分辨率是另一回事——已固定为 UHD(4:3 ≈12MP、16:9 4K),不可配置、不随这三字段变化。


CameraMode

OpenConfig.cameraMode 数组中每一项的类型,描述一种拍摄模式及其初始参数。

字段类型必填默认说明
mode'single' | 'continuous' | 'video'拍摄模式:单拍 / 连拍 / 视频
type'back' | 'front''back'初始前/后摄。仅数组首项生效(决定相机打开时的初始镜头)
flashMode'auto' | 'on' | 'off''off'初始闪光。仅数组首项生效作初始值;闪光开关之后由相机内 UI 控制
qualitynumber0.9JPEG 压缩率 0~1。质量优先级见 OpenConfig.photoQualityPrioritization(缺省走 SDK 默认 'balanced'
recTimenumber录制时长上限(秒)。已接线 vision-camera maxDuration:到点原生自动停止、视频自动入已拍列表(缺省不设=不自动停)
type / flashMode / recTime 的现状
  • typeflashMode 沿用自原版 4.x 的 API,仅数组首项被读取,作相机打开时的初始镜头 / 初始闪光;其余项的这两个字段被忽略。
  • recTime 已接线到 vision-camera maxDuration(2.21 起):到点原生自动停止,视频与手动停止走同一路径入列。缺省不传则不自动停。

WatermarkType

OpenConfig.watermark 的类型——给取景画面和成片烧入文字水印。用法见 水印指南

字段类型必填默认说明
contentstring[]水印文字,每个字符串一行;数量不限
position'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right''top-right'水印位置(文字对齐随位置自适应)

CameraResult

api.open() 返回的 Promise resolve 值。

字段类型说明
code0 | 200 | 403 | 404 | 500 | 503状态码,见下表
dataCustomPhotoFile[]拍摄的文件列表(仅 code === 200 时非空有效)
messagestring描述信息

状态码(CameraResultCode):

code含义何时返回
200成功用户完成拍摄并确认,data 含文件列表
0取消用户取消、点返回或调用 api.close()data 为空)
403无权限相机权限被拒
404无设备没有可用摄像设备
500配置非法cameraMode 为空数组 / 无效项(拍照运行时失败不再返回此码,见下)
503录像失败保留码,当前不触发(录像失败改走相机内重试,见下)
拍照 / 录像运行时失败:相机内重试,不返回 code

自 2.21 起,快门拍摄失败、录像启动 / 停止失败不再 resolve 关相机,而是在相机内弹顶部错误条提示重试、不丢已拍(对齐 1.x「失败停留」)。故 500 仅余「配置非法」、503 当前无触发路径,二者保留作 API 兼容。

判成功务必 === 200

只有 200 是成功。0 是取消,此时 data 为空——别把取消当成功。


CustomPhotoFile

CameraResult.data 数组中每个文件的类型。

字段类型说明
idstring唯一 id(时间戳-序号,避免同毫秒撞 id)
cameraType'back' | 'front'拍摄时的前/后摄
cameraMode'single' | 'continuous' | 'video'模式(原版 1.x 字段名,= mode
pathstring本地文件路径
uristring文件 uri(file:// 前缀)
widthnumber宽(px)
heightnumber高(px)
mime'image/jpeg' | 'video/mp4'MIME 类型
mode'single' | 'continuous' | 'video'模式(2.x 字段名,= cameraMode
duration?number时长(秒,仅 video 条目有,取录制实际时长)
cameraModemode 的关系

cameraModemode同一值的两个别名,始终相等:cameraMode 是原版(1.x)字段名,mode 是 2.x 引入的字段名。两者同时存在以保证向后兼容,按习惯选用其一即可。


CameraApi

useCamera() 返回的相机控制对象。逐方法说明见 CameraApi

type CameraApi = {
open: (config: OpenConfig) => Promise<CameraResult>;
close: () => void;
};

平台兼容性

类型定义为纯 TypeScript(不含运行时代码),在所有平台均可导入。

平台支持
iOS
Android
Web✅(仅类型)

  • useCamera — 获取 CameraApi 实例的 hook
  • CameraApiopen() / close() 方法与 OpenConfig 行为
  • 拍照 — 拍照场景配置示例
  • 录像 — 录像场景配置示例