跳到主要内容

调用与资源

相机以全屏模态呈现。应用准备配置、打开相机并处理结果;取景、拍摄、预览和选择由库完成。

调用入口

useCamera() 返回 [api, holder]。在稳定的组件树中渲染 holder,再调用 api.open(config);缺少宿主时界面不会出现,合法调用会继续等待直至取消。

const [api, holder] = useCamera();

return <View>{holder}</View>;

配置中的 cameraMode 决定可用拍摄模式,dataRetainedMode 决定切换模式时是否保留已拍文件。初始镜头、闪光、质量和水印等字段见类型参考

调用生命周期

  1. 校验输入;非法配置返回 500,当前有效会话保持不变。
  2. 打开相机,等待用户完成选择或取消。
  3. 通过 CameraResult 返回结果。

合法的新 open() 会先以 code: 0 结束旧调用;close() 和 Hook 卸载也按取消处理。同一次调用只完成一次,过期回调不覆盖新结果。

拍摄、录像或照片处理失败时,界面保留当前会话并反馈错误,用户可以重试或取消;未完成的文件不作为成功结果交付。完整行为见 CameraApi

结果

code含义
200用户确认选择,data 包含媒体文件
0取消或关闭
403相机权限被拒绝
404没有可用摄像设备
500配置无效
503保留码,当前没有触发路径

只有 code === 200 才处理媒体;麦克风或拍摄中的局部错误不等同于 403

水印与文件

文字水印只写入照片,不作用于录像。它是可见像素内容,不提供防篡改能力;用法见水印

成功结果仍指向临时文件。库交付结果后由应用负责保存或上传;尚未交付的文件由库在删除、重拍、切换、取消或卸载时清理。文件转交不表示已经持久化,也不表示业务提交成功。