更新记录
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 混编,首次运行需:
- HBuilderX:运行 → 运行到手机或模拟器 → 制作自定义调试基座
- 安装基座到手机
- 选择 自定义基座 运行
| 改动内容 |
是否重打基座 |
| 只改页面 uvue/vue |
否 |
| 只改 UTS / Kotlin |
否(Android 支持热编译) |
| 改了 AndroidManifest / config.json / 新增 aar |
是 |
文件存储
媒体保存在应用私有目录:
getExternalFilesDir(null)/silent_camera/
文件名示例:IMG_yyyyMMdd_HHmmss.jpg、VID_yyyyMMdd_HHmmss.mp4
错误码
| 错误码 |
说明 |
| 9020001 |
Activity 不可用 |
| 9020002 |
缺少相机权限 |
| 9020003 |
缺少录音权限 |
| 9020004 |
相机打开失败 |
| 9020005 |
拍照失败 |
| 9020006 |
正在录制中 |
| 9020007 |
当前未在录制 |
| 9020008 |
录制失败 |
| 9020009 |
读取媒体列表失败 |
| 9020010 |
删除文件失败 |
| 9020011 |
清空媒体失败 |
注意事项
- 权限:插件调用时申请相机、录音权限;静默场景建议启动时先
initSilentCamera。
- 连续拍照:Camera2 流程约 1–2 秒,建议间隔 2 秒以上。
- 快门声:多数设备无系统快门声;部分国家/地区法规可能强制快门声,无法完全保证静默。
- 录制:需要
RECORD_AUDIO 权限;使用 1x1 隐藏 Surface,不显示预览界面。
- 删除安全:
deleteMediaFile 仅允许删除 silent_camera 目录内文件。
- 隐私:插件仅在本机保存照片/视频,不上传任何数据。