HarmonyOS鸿蒙Next中如何打开系统相册以及如何打开摄像头,获取或拍摄照片跟视频?

HarmonyOS鸿蒙Next中如何打开系统相册以及如何打开摄像头,获取或拍摄照片跟视频? 如题,

有没有类似于微信iOS打开相册或者打开摄像头获取图片或视频的实现?

如果没有的话,没有官方给的实例demo。

6 回复

【背景知识】

应用可调用 CameraPicker 拍摄照片或录制视频,无需申请相机权限。

应用开发者如果只是需要获取即时拍摄的照片或者视频,则可以使用 CameraPicker 能力来轻松实现。

【解决方案】

应用可调用 CameraPicker.pick 拍摄照片或录制视频,无需申请相机权限,其中:

  • PickerProfile 参数可配置前后相机、配置拍摄的照片和视频保存位置(当 saveUri 未配置时,文件默认存入媒体库中)、配置录制视频时长等。
  • mediaTypes 参数可配置 CameraPicker 的媒体类型:
    • picker.PickerMediaType.VIDEO(拍照模式)
    • picker.PickerMediaType.VIDEO(录制模式)
  • PickerResult 拍摄返回结果,可获取 uri 地址等信息。

另外系统相册为系统预置相册,仅提供开发者对收藏夹、视频相册、截屏和录屏相册进行相关操作。使用时可以参考 系统相册资源使用指导

更多关于HarmonyOS鸿蒙Next中如何打开系统相册以及如何打开摄像头,获取或拍摄照片跟视频?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


不是,我不太理解。如果是打开相册选择图片呢?应该调用哪个接口?用户上传图片的时候,不一定是现拍的呀,如果无法打开相册,选择图片上传,那功能岂不是很垃圾!

media library kit不能满足你的需求吗?

在HarmonyOS Next中:

  1. 打开系统相册: 使用@ohos.file.picker模块的photoViewPicker.select()方法,返回选中的照片URI列表。

  2. 使用摄像头:

    • 拍摄照片:调用@ohos.multimedia.cameracapture()方法
    • 录制视频:使用@ohos.multimedia.camerastartRecording() 需要先在module.json5中声明ohos.permission.CAMERA权限。
  3. 获取媒体文件: 通过@ohos.file.fs模块处理返回的URI,调用open()read()方法读取文件内容。

在HarmonyOS Next中,可以通过以下方式实现相册和摄像头功能:

  1. 打开系统相册: 使用PhotoViewPicker组件,示例代码:
import photoViewPicker from '@ohos.file.picker';

let photoSelectOptions = new photoViewPicker.PhotoSelectOptions();
photoSelectOptions.MIMEType = photoViewPicker.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.maxSelectNumber = 1;

let photoPicker = new photoViewPicker.PhotoViewPicker();
photoPicker.select(photoSelectOptions).then((photoSelectResult) => {
  // 处理选择的照片
}).catch((err) => {
  console.error('选择照片失败');
});
  1. 调用摄像头拍照: 使用CameraImageReceiver API:
import camera from '@ohos.multimedia.camera';
import image from '@ohos.multimedia.image';

// 获取相机管理器
let cameraManager = camera.getCameraManager(context);

// 创建拍照会话
let captureSession = cameraManager.createCaptureSession();

// 创建图像接收器
let imageReceiver = image.createImageReceiver(1920, 1080, image.ImageFormat.JPEG, 8);

// 拍照并获取结果
captureSession.capture().then((image) => {
  // 处理拍摄的照片
});
  1. 视频录制:
import camera from '@ohos.multimedia.camera';

// 创建视频录制会话
let videoSession = cameraManager.createVideoSession();

// 开始录制
videoSession.startRecording().then(() => {
  // 录制中...
});

// 停止录制
videoSession.stopRecording().then((recordingResult) => {
  // 处理录制的视频
});

注意:需要先在module.json5中声明相关权限:

"requestPermissions": [
  {
    "name": "ohos.permission.CAMERA"
  },
  {
    "name": "ohos.permission.READ_MEDIA"
  }
]

这些API提供了类似微信的相册和摄像头功能,可以根据实际需求调整参数。

回到顶部