uniapp 调相机
uniapp 调用相机的方法
在uniapp中调用相机功能可以通过以下方式实现,适用于拍照或拍摄视频:
使用uni.chooseImage方法 该方法允许从相机或相册中选择图片,适用于拍照场景。
uni.chooseImage({
count: 1, // 最多可选择图片数量
sourceType: ['camera'], // 仅使用相机
success: function(res) {
const tempFilePaths = res.tempFilePaths; // 获取图片临时路径
console.log('拍照成功:', tempFilePaths);
},
fail: function(err) {
console.error('调用相机失败:', err);
}
});
使用uni.chooseVideo方法 适用于拍摄视频的场景。

uni.chooseVideo({
sourceType: ['camera'], // 仅使用相机
maxDuration: 60, // 视频最长时长(秒)
camera: 'back', // 默认后置摄像头
success: function(res) {
console.log('视频临时路径:', res.tempFilePath);
console.log('视频时长:', res.duration);
}
});
使用plus.camera直接调用原生相机 需要真机运行,适用于需要更多控制权的场景。
const camera = plus.camera.getCamera();
camera.captureImage(function(path) {
console.log('拍照成功:' + path);
}, function(error) {
console.error('拍照失败:' + error.message);
}, {
filename: '_doc/camera/' // 自定义存储路径
});
注意事项

- 需要先在manifest.json中配置相机权限
- iOS可能需要描述使用相机的用途
- 安卓6.0+需要动态申请权限
- 使用H5端时部分功能受限
权限配置示例
在manifest.json中添加以下配置:
"app-plus": {
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.CAMERA\"/>"
]
}
}
}
错误处理建议
对于权限被拒绝的情况,可以添加以下处理逻辑:
uni.authorize({
scope: 'scope.camera',
success() {
// 用户已经同意授权
},
fail() {
// 用户拒绝了授权
uni.showModal({
title: '提示',
content: '需要相机权限才能使用该功能',
success(res) {
if (res.confirm) {
uni.openSetting(); // 引导用户打开设置
}
}
});
}
});






