HarmonyOS 鸿蒙Next应用如何打开摄像头拍照,并异步回调拍照图片地址

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next应用如何打开摄像头拍照,并异步回调拍照图片地址

  1. 鸿蒙应用如何打开摄像头拍照,并异步回调拍照图片地址?

  2. 鸿蒙应用如何打开系统相册,并异步回调选择的相册图片地址?

8 回复

Q1: 打开相机, 并获取图片:

async handleOpenCamera() {
  try {
    let pickerProfile: picker.PickerProfile = {
      cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
    };
    let pickerResult: picker.PickerResult = await picker.pick(mContext,
      [picker.PickerMediaType.PHOTO], pickerProfile);
    // 拍照异步获得的照片信息  结果: {"resultCode":0,"resultUri":"file://media/Photo/135/IMG_1729742305_125/IMG_20241024_115645.jpg","mediaType":"photo"}
    Logger.info(TAG, "the pick pickerResult is:" + JSON.stringify(pickerResult));
  } catch (error) {
    let err = error as BusinessError;
    console.error(`the pick call failed. error code: ${err.code}`);
  }
}

Q2: 打开相册:

async getPictureFromAlbum() {
  // 拉起相册,选择图片
  let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
  PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
  PhotoSelectOptions.maxSelectNumber = 1;
  let photoPicker = new photoAccessHelper.PhotoViewPicker();
  let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(PhotoSelectOptions);
  const albumPath = photoSelectResult.photoUris[0];
  // 选取图片的结果: albumPath实际为: "file://media/Photo/123/IMG_1728721187_114/screenshot_20241012_161807.jpg"
  Logger.info(TAG, "PictureFromAlbum:" + JSON.stringify(albumPath));
}

ps: 使用cameraPicker 可以不授权. 参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-camerapicker-V5

更多关于HarmonyOS 鸿蒙Next应用如何打开摄像头拍照,并异步回调拍照图片地址的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


好的,感谢~,

基本信息

  • 姓名:张三
  • 年龄:28
  • 职业:软件工程师

技能

  • 熟练掌握Java
  • 熟悉Python
  • 了解C++

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

有办法监听,跳转到相机或者相册,没有拍照就返回嘛,

判断返回值是有值应该就可以. 这个我倒是没有试验. 可以试一下~,

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

可以在回调函数中操作拍照的那个图片吗?需要权限吗?

在HarmonyOS(鸿蒙)系统中,应用打开摄像头拍照并异步回调拍照图片地址,可以通过以下步骤实现:

  1. 申请权限:首先,你需要在config.json文件中声明使用摄像头的权限。例如:

    "module": {
        "package": "com.example.yourapp",
        "abilities": [
            {
                "name": "com.example.yourapp.MainAbility",
                "visible": true,
                "requiredPermissions": [
                    "ohos.permission.CAMERA"
                ]
            }
        ]
    }
    
  2. 使用CameraKit:鸿蒙系统提供了CameraKit用于摄像头操作。你可以通过CameraKit启动拍照界面,并设置拍照完成的回调。

  3. 启动拍照并设置回调:在代码中,使用CameraKit的API启动拍照功能,并设置一个回调接口来处理拍照完成后的图片地址。

示例代码(伪代码,具体实现需根据鸿蒙API文档调整):

CameraKit.getInstance().startCapture(context, new CameraKit.CaptureCallback() {
    @Override
    public void onSuccess(String imagePath) {
        // 拍照成功,imagePath为图片地址
    }

    @Override
    public void onError(int errorCode, String errorMessage) {
        // 拍照失败,处理错误
    }
});

注意:上述代码仅为示例,具体实现需参考鸿蒙系统的CameraKit API文档。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部