更新记录

4.04(2026-04-18)

启动加入摄像头 id 能力,方便调用

4.03(2026-04-14)

修复权限不足的问题

4.02(2026-04-13)

统一 android 和 ios 的方法实现

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 16.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:11 - 18

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


自定义相机组件 FY-CameraPreview

nvue 原生相机组件,支持拍照、录像、帧回调、双指缩放、手动对焦、曝光调节等。Android + iOS 双端。


快速开始

注意导入插件请真机调试

<CameraPreview ref="CameraPreview"></CameraPreview>
// 设置后置摄像头
this.$refs.CameraPreview.setIsbackCamera(true);

// 启动预览
// scale: 成像比例,支持 '16:9' / '4:3'(Android额外支持 '1:1')
// hd: 是否高清模式
// cameraId: 0=后摄(默认),1=前摄;启动时直接使用指定摄像头,无需二次切换
// noRecordPermissions: 是否不申请录像权限,默认 true
// showSetting: 没有权限是否提示去设置,默认 true
this.$refs.CameraPreview.start({
  scale: '16:9',
  hd: false,
  cameraId: 0,
  noRecordPermissions: true,
  showSetting: true,
}, res => {});

// 停止预览(建议放到 onHide)
this.$refs.CameraPreview.stop();

// 销毁相机(建议放到 onUnload)
this.$refs.CameraPreview.destroy();

拍照

this.$refs.CameraPreview.takePhoto({
  quality: 90,        // 返回图像质量 1-100,默认90
  width: 300,         // 返回图像宽度,默认300,0=原图
  returnFile: false,  // 是否返回文件路径,默认false
  savePath: '',       // 文件保存路径(绝对路径),如 plus.io.convertLocalFileSystemURL('_downloads/xxx/')
  fileName: '',       // 文件名,如 demo.jpg
  crop: [0,0,50,50],  // 成像自动裁剪 [x,y,w,h],xw参考宽度百分比,yh参考高度百分比
}, res => {
  // res.code  200=成功
  // returnFile=true 时:res.url 文件路径
  // returnFile=false 时:res.data base64数据
});

无声拍照(帧回调)

// 1. 开启监听视频帧
this.$refs.CameraPreview.startFrameListen(res => {});

// 2. 获取帧(停止监听前可快速重复调用)
this.$refs.CameraPreview.getFrameData({
  quality: 50,
  width: 300,
  crop: [0,0,50,50],  // 可选裁剪
}, res => {});

// 3. 停止监听
this.$refs.CameraPreview.stopFrameListen(res => {});

录像

Android 录像前准备

  1. start 时需设置 noRecordPermissions: false
  2. 在 HBuilderX 项目模块设置里勾选录像功能
  3. 权限配置增加 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
// 保存路径需转换为绝对路径
const savePath = plus.io.convertLocalFileSystemURL('_doc/video/')

// profile 分辨率:1=High 3=Low 4=480P 5=720P 6=1080P 8=2160P
// orientation 视频旋转,默认270(仅Android),部分后置需传90
this.$refs.CameraPreview.startRecord({
  profile: 5,
  savePath: savePath,
  orientation: 90,
}, res => {});

this.$refs.CameraPreview.stopRecord(res => {
  // res.path 录像文件路径
  // res.coverImage 封面图base64
});

相机控制

// 切换前后摄像头
this.$refs.CameraPreview.switchCamera(res => {});

// 闪光灯(仅支持后摄)
this.$refs.CameraPreview.setFlash(true);   // 开启
this.$refs.CameraPreview.setFlash(false);  // 关闭
this.$refs.CameraPreview.setFlashAuto();   // 自动

// 焦距 (0-99)
this.$refs.CameraPreview.setZoom(50);

// 双指缩放
this.$refs.CameraPreview.startFingerZoom();   // 开启
this.$refs.CameraPreview.cancelFingerZoom();  // 关闭

// 手动点击对焦
this.$refs.CameraPreview.startManualFocus();   // 开启
this.$refs.CameraPreview.cancelManualFocus();  // 关闭

// 曝光调节
this.$refs.CameraPreview.getExposureCompensationVal(res => {
  // res.data.min ~ res.data.max
  this.$refs.CameraPreview.setExposureCompensation(res.data.max);
});

// 旋转画面
this.$refs.CameraPreview.setCameraRotate(1);  // 1-4

// 重置预览角度(屏幕旋转后调用)
this.$refs.CameraPreview.reSetPreviewSize();

// 像素取色(百分比坐标)
this.$refs.CameraPreview.getColor([50, 50], res => {
  // res.color
});

Android 专用

// 获取设备摄像头信息
this.$refs.CameraPreview.getCamerasInfo(res => {});

// 查询支持的预览/拍照/录像分辨率
this.$refs.CameraPreview.getCustomOptSize({ cameraId: 0 }, res => {});
this.$refs.CameraPreview.getCustomPicSize({ cameraId: 0 }, res => {});
this.$refs.CameraPreview.getCustomVideoSize({ cameraId: 0 }, res => {});

// 检查录像配置是否支持
this.$refs.CameraPreview.hasProfile({ profile: 5 }, res => {});

// 设置自定义分辨率并启动
this.$refs.CameraPreview.setCameraConfigAndStart({
  customOptSize: { width: 1920, height: 1080 },
  customPicSize: { width: 1920, height: 1080 },
  customVideoSize: { width: 1920, height: 1080 },
  customBitRate: 5000000,
}, res => {});

联系作者

QQ: 37894663 | 免费试用,满意付款 | 可提供对接指导、远程协助

隐私、权限声明

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

相机

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

插件不采集任何数据

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