0
点赞
收藏
分享

微信扫一扫

Harmonyos5应用开发实战——相机功能实现(part2)

3. 闪光灯控制

可以根据设备是否支持闪光灯,设置不同的闪光灯模式,如关闭、打开、自动等。代码如下:

export async function setPhotoFlashMode(flashMode: number): Promise<void> {
  photoSession.setFlashMode(flashMode);
}

4. 变焦功能

支持普通变焦和平滑变焦,通过 setPhotoZoomsetPhotoSmoothZoom 方法实现。代码如下:

export function setPhotoZoom(zoom: number): void {
  photoSession.setZoomRatio(zoom);
}

export function setPhotoSmoothZoom(zoom: number): void {
  photoSession.setSmoothZoom(zoom);
}

5. 动态照片启用

判断设备是否支持动态照片功能,若支持则可以启用动态照片拍摄。代码如下:

export function enableLivePic(isMovingPhoto: boolean): void {
  let isSupported: boolean = photoOutPut.isMovingPhotoSupported();
  if (isSupported) {
    photoOutPut.enableMovingPhoto(isMovingPhoto);
  }
}

6. 照片保存与预览

在拍摄完成后,通过设置回调函数将照片保存到媒体库,并可以通过 startAbility 跳转到系统相册预览照片。代码如下:

// Sets the callback function after capture
function setPhotoOutputCb(photoOutput: camera.PhotoOutput): void {
  photoOutput.on('photoAssetAvailable',
    async (_err: BusinessError, photoAsset: photoAccessHelper.PhotoAsset): Promise<void> => {
      let accessHelper: photoAccessHelper.PhotoAccessHelper =
        photoAccessHelper.getPhotoAccessHelper(currentContext);
      let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest =
        new photoAccessHelper.MediaAssetChangeRequest(photoAsset);
      assetChangeRequest.saveCameraPhoto();
      await accessHelper.applyChanges(assetChangeRequest);
      uri = photoAsset.uri;
      AppStorage.setOrCreate('photoUri', await photoAsset.getThumbnail());
    });
}
//Use startAbility Jump to System photo
export function previewPhoto(context: Context): void {
  let photoContext = context as common.UIAbilityContext;
  photoContext.startAbility({
    parameters: { uri: uri },
    action: 'ohos.want.action.viewData',
    bundleName: 'com.huawei.hmos.photos',
    abilityName: 'com.huawei.hmos.photos.MainAbility'
  })
}

通过以上代码,开发者可以在HarmonyOS Next应用中实现基本的相机功能,包括初始化、拍摄、闪光灯控制、变焦和动态照片等。

举报

相关推荐

0 条评论