HarmonyOS PickerProfile相机选择器的配置信息,配置应用沙盒目录后,拍照返回失败?

let saveDir = '/data/storage/el2/base/cache'
let pickerProfile: picker.PickerProfile = {
  cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
  saveUri: saveDir
};
let pickerResult: picker.PickerResult = await picker.pick(mContext,
  [picker.PickerMediaType.PHOTO], pickerProfile);
阅读 589
1 个回答

参考代码如下:

async takePhotoOrVideo() {
  try {
    const context = getContext() as common.Context
    const path = getContext(this).filesDir + '/' + PRIVACY_PHOTO_FOLDER_NAME + '/' + Date.now() + '.jpg';
    let uri=fileUri.getUriFromPath(path)
    const file: fs.File = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    // 调用相机拍照
    const pickerResult = await cameraPicker.pick(
      context,
      // 拍照+录像
      [ cameraPicker.PickerMediaType.PHOTO, cameraPicker.PickerMediaType.VIDEO],
      // 相机选择器的配置信息
      {
        cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK, // 默认后摄像头
        // 若saveUri为空,resultUri为公共媒体路径。若saveUri不为空且具备写权限,resultUri与saveUri相同。
        // 若saveUri不为空且不具备写权限,则无法获取到resultUri。
        saveUri: uri,
        videoDuration:2
      },
    )
    // 拍照成功返回地址
    if (pickerResult.resultUri) {
      AlertDialog.show({ message: JSON.stringify(pickerResult, null, 2) })
    }
  } catch (error) {
    AlertDialog.show({ message: JSON.stringify(error, null, 2) })
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进