鸿蒙通过系统相机拍照和录像(ArkTS)
温馨提示:本文最后更新于2024年10月14日 08:00,若内容或图片失效,请在下方留言或联系博主。
应用可调用CameraPicker拍摄照片或录制视频,无需申请相机权限。
CameraPicker的相机交互界面由系统提供,在用户点击拍摄和确认按钮后,调用CameraPicker的应用获取对应的照片或者视频。
应用开发者如果只是需要获取即时拍摄的照片或者视频,则可以使用CameraPicker能力来轻松实现。
由于照片的拍摄和确认都是由用户进行主动确认,因此应用开发者可以不用申请操作相机的相关权限。
1. 调用相机拍照后保存到本地路径:
// cameraPicker.pick() 调用相机拍照
const pickerResult = await cameraPicker.pick(
getContext(), // 上下文对象
[cameraPicker.PickerMediaType.PHOTO], // 选择 PHOTO拍照 / VIDEO录视频
{
// CAMERA_POSITION_BACK 调用后置摄像头
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
})
// 返回是否成功 0为成功 -1失败 // 默认返回保存本地目录uri
AlertDialog.show({ message: JSON.stringify({ pickerResult }, null, 2) })
2. 调用相机拍照后保存到沙箱目录:
// 创建沙箱路径
const path = getContext().filesDir + '/' + Date.now() + '.jpg'
// 打开文件 用于写入 设置模式为可读可写
fileIo.openSync(path, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE)
// 在我们本地渲染的话 沙箱路径是渲染不出来的 只有uri路径可以渲染出来
// cameraPicker.pick() 调用相机拍照
const pickerResult = await cameraPicker.pick(
getContext(), // 上下文对象
[cameraPicker.PickerMediaType.PHOTO], // 选择 PHOTO拍照 / VIDEO录视频
{
// CAMERA_POSITION_BACK 调用后置摄像头
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
// 把path沙箱路径转成uri路径 (想存入沙箱 必须是uri 不能是path路径)
saveUri: fileUri.getUriFromPath(path)
})
// 返回是否成功 0为成功 -1失败 // 默认返回保存本地目录uri
AlertDialog.show({ message: JSON.stringify({ pickerResult, path }, null, 2) })