0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS折叠屏镜头切换应用实践

HarmonyOS开发者 来源:HarmonyOS开发者技术 2025-08-27 16:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在2025华为开发者大会的图片和相机分论坛上,美颜相机分享了如何通过折叠屏镜头适配,打造多端一致的拍摄体验。随着华为折叠屏产品的不断丰富,相机开发在折叠屏上也面临独特技术难题,镜头选错导致黑屏、角度设置错误导致拉伸或者画面旋转的问题日益凸显。本文通过镜头选取、镜头接续、角度设置三个维度来探讨在HarmonyOS折叠屏设备上更多创新的使用方式和更丰富的布局样式。

统一、简易的镜头选取

HarmonyOS基于折叠状态和镜头位置,精准描述每一颗镜头,并仅上报当前折叠状态下的前后置镜头集合。这种机制确保了应用能够按照直板机镜头的使用习惯,直接通过位置信息打开镜头,而HarmonyOS会自动映射为当前折叠状态下的镜头。这种设计保障了直板机和折叠机在镜头使用上的统一性和兼容性,极大简化了开发者的适配工作。

ae1aa492-7f2f-11f0-a18e-92fbcf53809c.png

import{ camera }from'@kit.CameraKit';
import{BusinessError}from'@kit.BasicServicesKit';
import{ common }from'@kit.AbilityKit';
functiongetCameraManager(context: common.BaseContext): camera.CameraManager{
letcameraManager: camera.CameraManager= camera.getCameraManager(context);
returncameraManager;
}
functiongetCameraDevices(cameraManager: camera.CameraManager):Array {
letcameraArray:Array = cameraManager.getSupportedCameras();
if(cameraArray !=undefined&& cameraArray.length>0) {
 for(letindex =0; index < cameraArray.length; index++) {
      console.info('cameraId : ' + cameraArray[index].cameraId); // 相机ID
      console.info('cameraPosition : ' + cameraArray[index].cameraPosition); // 相机位置
      console.info('cameraType : ' + cameraArray[index].cameraType); // 相机类型
      console.info('connectionType : ' + cameraArray[index].connectionType); // 相机连接类型
    }
    return cameraArray;
  } else {
    console.error("cameraManager.getSupportedCameras error");
    return [];
  }
}

快捷的镜头切换方式

折叠设备形态各异,在相机应用的开发过程中需要统一的摄像头切换方案,以确保用户在拍照、录像过程中获得更好的体验。为了应对折叠屏设备的动态变化,HarmonyOS提供了两种镜头切换方式,以满足不同场景的需求:

方式1:应用自主切换镜头

适用场景:适用于需要精致拍照体验的场景,如美颜相机。

实现方式:应用需监听折叠状态的变化,自主完成镜头的启停、切换,重新配置会话(涉及修改分辨率),重新查询镜头能力范围,并调整UX布局。

优势:提供高度定制化的拍摄体验,满足复杂场景的需求。

import{ camera }from'@kit.CameraKit';
import{BusinessError}from'@kit.BasicServicesKit';
functionregisterFoldStatusChanged(err: BusinessError, foldStatusInfo: camera.FoldStatusInfo) {
console.info('foldStatusChanged foldStatus: '+ foldStatusInfo.foldStatus);
 for(leti =0; i < foldStatusInfo.supportedCameras.length; i++) {
      // 选取当前折叠状态的前置镜头,进行重新配流和UX布局调整
      console.info(`foldStatusChanged camera[${i}]: ${foldStatusInfo.supportedCameras[i].cameraId}`);
    }
}
function onFoldStatusChange(cameraManager: camera.CameraManager) {
  cameraManager.on('foldStatusChange', registerFoldStatusChanged);
}
function offFoldStatusChange(cameraManager: camera.CameraManager) {
  cameraManager.off('foldStatusChange', registerFoldStatusChanged);
}

方式2:系统自动切换镜头

适用场景:适用于简单场景,如人脸识别。

实现方式:HarmonyOS自动完成镜头切换、会话配置,应用使能自动切换镜头的能力时,在有多个前置镜头的折叠设备上,不同的折叠状态下可自动切换到当前可使用的前置镜头,避免前置镜头被折入内部导致黑屏。

优势:简化开发流程,提升用户体验的一致性和便捷性。

import{ camera }from'@kit.CameraKit';
functionenableAutoDeviceSwitchFn(session: camera.PhotoSession) {
if(session.isAutoDeviceSwitchSupported()) {
  session.enableAutoDeviceSwitch(true);
 }
}

简单易用的角度查询设置能力

为了确保在不同折叠状态下拍摄的照片和视频保持正确的方向和角度,HarmonyOS相机采用了以下角度计算公式:

预览:屏幕跟随镜头一起旋转,因此预览角度需考虑屏幕旋转角度。

公式:旋转角度 = 镜头安装角度 + 屏幕旋转角度

拍照/录像:要保证照片/视频正向存储,因此与设备旋转角度相关。

公式:旋转角度 = 前置:镜头安装角度 – 设备旋转角度

后置:镜头安装角度 + 设备旋转角度

通过这些角度计算,美颜相机确保了在不同折叠状态下,用户能够获得一致且高质量的拍摄体验。

import{ camera }from'@kit.CameraKit';
import{BusinessError}from'@kit.BasicServicesKit';
import{ display }from'@kit.ArkUI';
// 以预览举例,previewOutput是创建的预览输出
letinitDisplayRotation = display.getDefaultDisplaySync().rotation;
letinitPreviewRotation = previewOutput.getPreviewRotation(initDisplayRotation * camera.ImageRotation.ROTATION_90);
previewOutput.setPreviewRotation(initPreviewRotation,false);
display.off('change');
display.on('change',() =>{
// 在折叠状态变化时,重新查询旋转角度并下发
 initDisplayRotation = display.getDefaultDisplaySync().rotation;
letimageRotation = initDisplayRotation * camera.ImageRotation.ROTATION_90;
letpreviewRotation = previewOutput.getPreviewRotation(imageRotation);
 previewOutput.setPreviewRotation(previewRotation,false);
});

开发者可通过HarmonyOS开发者官网查询相关资料进行开发实践,通过以下官网链路进行体验参考(指南→媒体→相机服务→开发相机应用),助力开发更高效便捷。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为
    +关注

    关注

    217

    文章

    35782

    浏览量

    260659
  • 相机
    +关注

    关注

    5

    文章

    1535

    浏览量

    55404
  • 折叠屏
    +关注

    关注

    3

    文章

    540

    浏览量

    16763
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35537

原文标题:【HarmonyOS相机开发系列】折叠屏镜头切换优秀实践

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Pura X****阔折叠适配:解锁超视觉与高效交互的全新体验

    3月20日,华为发布业界首款阔折叠手机Pura X,其独特的16:10阔型设计,为用户带来焕然一新的体验。为了帮助开发者更好的适配阔折叠设备,华为在HarmonyOS开发者官网上线了
    发表于 04-14 15:30

    鸿蒙5开发宝藏案例分享---折叠悬停态开发实践

    HarmonyOS早就准备好了超多实用案例,今天必须带大家解锁\"悬停态\"开发的正确姿势,手慢无哦~ ?** 先来点干货:什么是悬停态?** 就是把折叠像笔记本电脑那样半折立在桌上
    发表于 06-03 12:04

    鸿蒙5开发宝藏案例分享---折叠开发实践

    ?** 最佳实践案例大揭秘!开发者的隐藏宝藏手册** 大家好呀! 今天在翻鸿蒙文档时突然发现了一个惊天大宝藏——官方其实早就默默放出了 几十个超实用开发案例 ,覆盖折叠适配、性能优化、UI框架、跨
    发表于 06-12 11:44

    和宽浪费了?HarmonyOS折叠设计规范教你用起来

    这几年折叠手机很火,我们针对使用HarmonyOS折叠手机提供了应用设计指导——HarmonyOS
    发表于 02-22 14:52

    一文带你详细了解HarmonyOS折叠设计规范!

    随着新一代折叠手机HUAWEI Mate Xs 2发布,HarmonyOS折叠设计规范(后文简称:设计规范)也马不停蹄地更新啦!这次更新
    发表于 05-20 10:22

    harmonyos程序开发如何暂时屏蔽折叠

    harmonyos程序开发如何暂时屏蔽折叠,没有折叠设备,没法进行正常的适配,所以想暂时关闭屏蔽折叠
    发表于 06-16 10:48

    HarmonyOS原子化服务案例分享-马仕健专辑

    代码,兼容了手机、平板、折叠。本服务已经上架,在HarmonyOS系统手机中,可以直接体验。二、搜索 鸿蒙码 服务中心效果三、手机折叠
    发表于 07-18 16:05

    不止于大,如何打造优秀的折叠应用体验

    HarmonyOS 折叠设计规范中提供了六种动态布局规则,通过这些布局规则的使用或组合,就可以做到在展开态下显示更多的内容。 动态布局规则 (左图为自适应动态布局、右图为响应式动态布局) 通常一个页面上有多种
    发表于 12-23 11:16

    折叠原理

    我们今天介绍的主角就是折叠折叠是使用可以很好的扩展屏幕的尺寸,让我们的手机屏幕不在受限手机自身的体积。或许你已经看了华为折叠
    的头像 发表于 03-10 09:31 2.2w次阅读

    HarmonyOS 测试技术与实践-HarmonyOS 软件测试技术栈

    2021华为开发者大会HarmonyOS 测试技术与实践-HarmonyOS 软件测试技术栈
    的头像 发表于 10-23 14:19 2053次阅读
    <b class='flag-5'>HarmonyOS</b> 测试技术与<b class='flag-5'>实践</b>-<b class='flag-5'>HarmonyOS</b> 软件测试技术栈

    HarmonyOS折叠设计规范的新增亮点内容

    这几年折叠手机很火,我们针对使用HarmonyOS折叠手机提供了应用设计指导——HarmonyOS
    的头像 发表于 02-25 12:08 2567次阅读

    华为发布新版HarmonyOS折叠设计规范 持续引领折叠UI设计创新

    近日,华为发布了最新的HarmonyOS折叠设计规范。本次更新的设计规范围绕折叠适配和双
    的头像 发表于 11-07 13:26 1819次阅读

    华为发布新版HarmonyOS折叠设计规范 持续引领折叠UI设计创新

    近日,华为发布了最新的HarmonyOS折叠设计规范。本次更新的设计规范围绕折叠适配和双
    的头像 发表于 11-09 09:31 1289次阅读

    华为发布新版HarmonyOS折叠设计规范 持续引领折叠UI设计创新

    近日,华为发布了最新的HarmonyOS折叠设计规范。本次更新的设计规范围绕折叠适配和双
    发表于 11-09 11:38 721次阅读
    华为发布新版<b class='flag-5'>HarmonyOS</b><b class='flag-5'>折叠</b><b class='flag-5'>屏</b>设计规范 持续引领<b class='flag-5'>折叠</b><b class='flag-5'>屏</b>UI设计创新

    HarmonyOS联合绿盟发布折叠软件规范,携HUAWEI Mate X3带来创新折叠体验

    HarmonyOS 3.1 全新升级的智慧多窗以及悬停状态下的创意功能玩法,软硬一体为折叠手机带来更加优秀的阅读、观影、办公及游戏体验。 此外,早在2019年,华为便与软件绿色联盟首发了《
    的头像 发表于 03-24 12:32 1232次阅读
    <b class='flag-5'>HarmonyOS</b>联合绿盟发布<b class='flag-5'>折叠</b><b class='flag-5'>屏</b>软件规范,携HUAWEI Mate X3带来创新<b class='flag-5'>折叠</b>体验