更新记录

1.0.0(2026-06-08)

1.0.0:首发,支持静默拍照/录制、媒体列表与删除


平台兼容性

uni-app(4.25)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × × × 9.0 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.25)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 9.0 × × ×

UTS 静默相机插件

Android 端 无预览拍照静默拍照无预览视频录制 UTS 插件。支持历史媒体列表、预览、单条删除与一键清空。

平台支持

平台 支持
Android App
iOS / 鸿蒙 / Web / 小程序

环境要求

  • HBuilderX 4.25+(支持 UTS 原生混编)
  • Android 6.0+(API 21+)
  • Android 真机云打包 运行
  • 首次调试需制作 自定义调试基座(插件含 AndroidManifest 与 Kotlin 混编)

API 列表

API 说明
initSilentCamera 初始化并申请相机权限
getCameraIdList 获取摄像头 ID 列表
setCameraId 设置使用的摄像头
takeSilentPhoto 无预览静默拍照,返回本地文件路径
startSilentRecord 开始无预览录制
stopSilentRecord 停止录制并返回视频路径
releaseSilentCamera 释放相机资源
listMediaFiles 扫描历史照片/视频列表
deleteMediaFile 删除指定图片或视频
clearAllMediaFiles 一键清空全部历史媒体

快速开始(uni-app x)

import {
  initSilentCamera,
  getCameraIdList,
  setCameraId,
  takeSilentPhoto,
  startSilentRecord,
  stopSilentRecord,
  listMediaFiles,
  deleteMediaFile,
  clearAllMediaFiles,
  releaseSilentCamera
} from '@/uni_modules/uts-silent-camera'

import type {
  GetCameraIdListResult,
  TakeSilentPhotoResult,
  StopSilentRecordResult,
  ListMediaFilesResult,
  ClearAllMediaFilesResult,
  SilentCameraFail
} from '@/uni_modules/uts-silent-camera'

// 1. 初始化(建议 App 启动时调用,避免拍照时弹权限框)
initSilentCamera({
  success: () => {
    getCameraIdList({
      success: (res: GetCameraIdListResult) => {
        if (res.cameraIds.length > 0) {
          setCameraId({ cameraId: res.cameraIds[0] })
        }
      }
    })
  },
  fail: (err: SilentCameraFail) => {
    console.log(err.errMsg)
  }
})

// 2. 静默拍照
takeSilentPhoto({
  quality: 90,
  success: (res: TakeSilentPhotoResult) => {
    console.log('照片路径', res.filePath)
  },
  fail: (err: SilentCameraFail) => {
    console.log(err.errMsg)
  }
})

// 3. 无预览录制
startSilentRecord({ maxDuration: 60 })
// ... 稍后
stopSilentRecord({
  success: (res: StopSilentRecordResult) => {
    console.log('视频路径', res.filePath)
  }
})

// 4. 历史列表
listMediaFiles({
  success: (res: ListMediaFilesResult) => {
    console.log('共', res.files.length, '项')
  }
})

// 5. 删除单条
deleteMediaFile({
  filePath: '/path/to/file.jpg',
  success: () => {
    console.log('已删除')
  }
})

// 6. 一键清空
clearAllMediaFiles({
  success: (res: ClearAllMediaFilesResult) => {
    console.log('已删除', res.deletedCount, '项')
  }
})

// 7. 释放资源
releaseSilentCamera({})

uni-app(vue)调用

import {
  initSilentCamera,
  takeSilentPhoto
} from '@/uni_modules/uts-silent-camera'

initSilentCamera({
  success: () => {
    takeSilentPhoto({
      quality: 90,
      success: (res) => {
        console.log(res.filePath)
      }
    })
  }
})

自定义调试基座

本插件包含 AndroidManifest.xml 与 Kotlin 混编,首次运行需:

  1. HBuilderX:运行 → 运行到手机或模拟器 → 制作自定义调试基座
  2. 安装基座到手机
  3. 选择 自定义基座 运行
改动内容 是否重打基座
只改页面 uvue/vue
只改 UTS / Kotlin 否(Android 支持热编译)
改了 AndroidManifest / config.json / 新增 aar

文件存储

媒体保存在应用私有目录:

getExternalFilesDir(null)/silent_camera/

文件名示例:IMG_yyyyMMdd_HHmmss.jpgVID_yyyyMMdd_HHmmss.mp4

错误码

错误码 说明
9020001 Activity 不可用
9020002 缺少相机权限
9020003 缺少录音权限
9020004 相机打开失败
9020005 拍照失败
9020006 正在录制中
9020007 当前未在录制
9020008 录制失败
9020009 读取媒体列表失败
9020010 删除文件失败
9020011 清空媒体失败

注意事项

  1. 权限:插件调用时申请相机、录音权限;静默场景建议启动时先 initSilentCamera
  2. 连续拍照:Camera2 流程约 1–2 秒,建议间隔 2 秒以上
  3. 快门声:多数设备无系统快门声;部分国家/地区法规可能强制快门声,无法完全保证静默。
  4. 录制:需要 RECORD_AUDIO 权限;使用 1x1 隐藏 Surface,不显示预览界面。
  5. 删除安全deleteMediaFile 仅允许删除 silent_camera 目录内文件。
  6. 隐私:插件仅在本机保存照片/视频,不上传任何数据。

隐私、权限声明

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

android.permission.CAMERA(相机权限,用于无预览静默拍照) android.permission.RECORD_AUDIO(录音权限,用于无预览视频录制) android.permission.WRITE_EXTERNAL_STORAGE(写入存储,仅 Android 9 及以下系统需要,用于保存照片/视频;Android 10+ 使用应用私有目录,不依赖此权限)

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

插件不采集任何数据,不向任何服务器发送数据。 插件仅在用户调用拍照/录制 API 时,将照片或视频保存到本机应用私有目录(getExternalFilesDir/silent_camera/),由宿主 App 自行管理。插件未集成任何第三方 SDK,无网络请求。

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

暂无用户评论。