首页 鸿蒙 正文
  • 本文约1167字,阅读需6分钟
  • 128
  • 0

鸿蒙通过系统相机拍照和录像(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) })

 

评论