调用与资源
相机以全屏模态呈现。应用准备配置、打开相机并处理结果;取景、拍摄、预览和选择由库完成。
调用入口
useCamera() 返回 [api, holder]。在稳定的组件树中渲染 holder,再调用 api.open(config);缺少宿主时界面不会出现,合法调用会继续等待直至取消。
const [api, holder] = useCamera();
return <View>{holder}</View>;
配置中的 cameraMode 决定可用拍摄模式,dataRetainedMode 决定切换模式时是否保留已拍文件。初始镜头、闪光、质量和水印等字段见类型参考。
调用生命周期
- 校验输入;非法配置返回
500,当前有效会话保持不变。 - 打开相机,等待用户完成选择或取消。
- 通过
CameraResult返回结果。
合法的新 open() 会先以 code: 0 结束旧调用;close() 和 Hook 卸载也按取消处理。同一次调用只完成一次,过期回调不覆盖新结果。
拍摄、录像或照片处理失败时,界面保留当前会话并反馈错误,用户可以重试或取消;未完成的文件不作为成功结果交付。完整行为见 CameraApi。
结果
| code | 含义 |
|---|---|
200 | 用户确认选择,data 包含媒体文件 |
0 | 取消或关闭 |
403 | 相机权限被拒绝 |
404 | 没有可用摄像设备 |
500 | 配置无效 |
503 | 保留码,当前没有触发路径 |
只有 code === 200 才处理媒体;麦克风或拍摄中的局部错误不等同于 403。
水印与文件
文字水印只写入照片,不作用于录像。它是可见像素内容,不提供防篡改能力;用法见水印。
成功结果仍指向临时文件。库交付结果后由应用负责保存或上传;尚未交付的文件由库在删除、重拍、切换、取消或卸载时清理。文件转交不表示已经持久化,也不表示业务提交成功。