鸿蒙开发笔记:Ability Kit 在美颜相机中的基础应用

51 阅读1分钟

在开发"拍摄美颜相机"应用时,Ability Kit作为鸿蒙应用框架的核心能力,承担了界面跳转与生命周期管理的关键角色。笔者在相机启动模块中尝试使用Page Ability作为主界面载体,通过onStart()方法初始化相机预览组件,并在onBackground()中释放非必要资源以优化内存。

技术实践示例(HarmonyOS 4.0 API9):

 

typescript

 `

// 主Ability(EntryAbility.ts)

import UIAbility from '@ohos.app.ability.UIAbility';

import camera from '@ohos.multimedia.camera';

 

export default class EntryAbility extends UIAbility {

   // 相机预览组件实例

  private cameraPreview: camera.PreviewOutput | null = null;

 

  onStart() {

     // 初始化相机预览

    this.initCameraPreview();

  }

 

  async initCameraPreview() {

    try {

      const cameraManager = camera.getCameraManager(this.context);

      const cameras = cameraManager.getSupportedCameras();

      const cameraObj = cameraManager.createCameraInput(cameras[0]);

      await cameraObj.open();

      

       // 创建预览输出流

      this.cameraPreview = await camera.createPreviewOutput();

       // 将预览流绑定至XComponent组件

      const surfaceId = await this.getXComponentSurfaceId(); // 获取UI组件Surface

      this.cameraPreview.start(surfaceId).then(() => {

        console.info('Camera preview started');

      });

    } catch (err) {

      console.error(Camera init failed: ${err.code});

    }

  }

 

  onBackground() {

     // 释放预览资源

    this.cameraPreview?.release();

    this.cameraPreview = null;

  }

}

 

// **关键点说明:

// **通过UIAbility生命周期方法管理相机资源,避免后台耗电

// **使用@ohos.multimedia.camera接口需在module.json5声明权限:

// **json

 

"requestPermissions": [

  { "name": "ohos.permission.CAMERA" }

]

// **预览画面需配合XComponent组件实现(UI部分代码略)`