侵权投诉

基于HarmonyOS的分镜头App开发技术详解

HarmonyOS开发者 2021-08-26 17:59 次阅读

《分镜头App》的创作灵感来源于殷冬的日常观察,他发现平常人们在自拍时,往往会用前置摄像头,由于像素、取景景别等因素的限制,前摄拍出来的效果往往不是很理想;此外,当我们帮别人拍照时,对方也无法实时看到照片的取景角度和构图,拍出来的照片也很难让对方满意;对于照片的分享和美化,更是众口难调。为了解决这些痛点,提升用户的拍照体验,经过不断摸索,殷冬发现HarmonyOS的分布式技术有着很大的应用潜力。于是他基于HarmonyOS从0到1完成了《分镜头App》的开发。

以下将为大家分享该款应用的开发者殷冬的开发心得。

一,HarmonyOS技术使用

《分镜头App》主要用到了分布式文件服务、分布式硬件虚拟化、以及分布式数据服务。

分布式文件服务

利用分布式文件服务,可以自动同步其他设备拍摄的照片和视频,实现分布式相册功能。

起初殷冬以为分布式文件服务使用起来会很复杂,例如是否需要自己控制同步、初始化功能等等。而真正接触后他发现,在底层上,分布式文件服务已经将复杂的工作都处理好了,只需用一行代码,就可以使用分布式文件服务,就相当于调用本地文件系统一样,只不过再继续向下,底层会帮助开发者处理很多业务。

c86e7baa-f3a8-11eb-9bcf-12bb97331649.png

分布式硬件虚拟化

分布式硬件虚拟化的特性,可以调用其他设备的硬件,实现相关的功能。在《分镜头App》中,调用其他设备的相机画面,就用到了分布式硬件虚拟化。并且可以控制拍摄画面的比例,实现不一样的拍摄效果。

殷冬最初接触硬件虚拟化这个概念的时候,只是知道是基于分布式软总线实现的虚拟化,至于怎么使用,并不是很清楚,后来通过深入的学习发现,主动调用其他设备的接口,可以使用分布式任务调度或者IDL接口两种方法实现。而分布式任务调度和IDL接口,都可以传递实现Sequenceable接口的实现类对象。

而硬件功能关键类都实现了Sequenceable接口,比如:相机预览画面的关键类Surface,就实现了Sequenceable接口。因此可以通过IDL将设备A的Surface对象,以参数的形式,传递到设备B。设备B的Service Ability执行相机初始化操作,就可以拿到设备B相机的拍摄画面。

由此,就在代码编辑层面实现了硬件虚拟化。

分布式数据服务

在《分镜头App》中,有很多的协同操作。协同操作的核心逻辑,利用了分布式数据服务的数据变更通知功能。当一个设备触发协同操作时,通过变更通知,从设备触发UI和效果的变化,实现分布式协同功能。

分布式数据服务有两个功能,可以为开发者带来很大的便捷。第一个是多端数据同步功能,当通过一个设备修改了数据库中的数据,其他设备也会做同步。第二个是在添加、修改、删除数据库数据时,其他设备如果创建了数据库的链接,并绑定了数据变更监听时,就会触发该监听。开发者可以利用这两个功能特性,做多端的协同功能。

数据库初始化:

c8ac37d8-f3a8-11eb-9bcf-12bb97331649.png

数据库变更监听:

c8df0d3e-f3a8-11eb-9bcf-12bb97331649.png

分布式相册实现

相册主要存储图片、视频文件,可以使用分布式文件服务进行存储。此项功能殷冬还需要实现动态添加的效果,即:其他设备拍摄时,本机的相册列表动态显示刚刚拍摄的照片缩略图。这种效果可以在确定使用分布式文件服务存储照片和视频后,使用HarmonyOS的公共事件与通知功能,从而实现动态加载的效果。

在拍摄完成时,通过公共事件功能发送一条广播。

同时,在相册模块,注册公共事件,用于处理接收到通知后的动态添加缩略图逻辑。

分布式文件服务负责同步拍摄的照片、视频等信息,公共事件通知则主动进行页面的刷新,二者合用,实现动态添加的效果。

二、多设备协同实现

目标设备未打开协同页面问题处理

多设备协同实际上有个隐藏的前提,那就是所有设备都处于同一个协同页面中。这需要处理目标设备不在协同页面的问题。

此时可以创建一个单版本分布式数据库,key值为设备id,value值为协同页面是否启动true/false。当进入到协同页面时,在onStart方法中设置值为true。当退出页面时,在onInactive方法中设置值为false。

在发起协同前,可以通过单版本分布式数据库,获取到目标设备是否启动了协同页面。

如果没有启动,可以先通过abilitySlice.startAbility()将目标设备拉起,进入到协同页面,然后再进入协同状态。

如果目标设备已经处于协同页面,就可以直接进入到协同状态。

统一管理分布式操作

由于分布式数据服务每个应用最多同时打开16个KvStore,所以不能每一个协同操作都使用一个数据库。这里可以在value值上做文章,以实现通过一个分布式数据库,就可以实现一个页面中的多个操作的协同。

首先,可以使用一个常量作为分布式协同数据库的key。每次put时,都使用这个常量作为key,以替换之前的数据。

其次,需要创建一个实体类。成员变量中,需要有两个基础变量:

operationType:int型,当前协同操作的类型;

targetDeviceId:List《String》,需要协同的设备id数组;

operationType字段主要是用来区分当前的操作类型,这样方便调用相同的功能进行协同操作。targetDeviceId主要是存储向哪些设备发起协同操作,可以通过判断本设备id是否在数组当中,如果不存在,就不做任何操作。

此时需要将实体类转换成字符串,再存储到分布式协同数据库中。因此,可以通过JSONObject.toJSONString(),将实体类转换成字符串并进行存储。

被调用方需要为分布式数据库,绑定数据变更监听。这样,其他设备添加或修改数据的时候,就会触发监听。监听类型要设备其他设备触发的变化,这样可以避免本地修改也会触发本地的监听的问题。

在监听中就可以处理协同的功能。首先要判断变更的数据是否为空,避免后续出错。然后可以将key的json值取出,并做非空判断。

接下来需要将json字符串转换成实体类,便于后续操作。这里可以使用JSONArray.parseObject(json, class)进行转换。

然后进行判断,是否需要本设备进行协同。

当本设备需要协同时,可以通过switch根据操作类型,调用不同的方法进行协同即可。

总结

殷冬通过官方文档、论坛、HarmonyOS技术社区等途径,系统的学习和了解HarmonyOS的特性,最终开发了本次大赛的《分镜头App》作品。未来,他还将持续深入了解HarmonyOS,尝试开发更为有趣的HarmonyOS分布式应用,也期待更多开发者加入到HarmonyOS生态,一起创造无限可能!

责任编辑:haq

原文标题:开发者说: 分镜头App分布式开发技术详解

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

收藏 人收藏
分享:

评论

相关推荐

开源大师兄 青少年OpenHarmony开发板硬件特性介绍

继OpenHarmony 3.0  LTS版本于 2021 年 9 月 30 日上线以来,在包括教育....
发表于 10-27 12:14 92次 阅读
开源大师兄 青少年OpenHarmony开发板硬件特性介绍

《道德经》原子化服务UX历程和后续升级计划

发表于 10-27 11:36 0次 阅读
《道德经》原子化服务UX历程和后续升级计划

网易云和腾讯互掐起来了?鸿蒙“后院”起火了

今天打开手机老王看到了一条有意思的新闻:“网易云和腾讯QQ音乐都说自己是第一家接入鸿蒙的流媒体音乐,要互掐了吗?” 发...
发表于 10-27 10:08 0次 阅读

HDC技术分论坛:HarmonyOS新一代UI框架的全面解读

作者:yuzhiqiang,UI编程框架首席技术专家在Harmony 3.0.0开发者预览版中,包含了新一代的声明式UI框架ArkUI 3.0、多语...
发表于 10-26 18:48 101次 阅读
HDC技术分论坛:HarmonyOS新一代UI框架的全面解读

HarmonyOS IDE工具DevEco 新版本3.0 Beta1发布

2021年10月22日的华为开发者大会HDC.Together 2021主题演讲会上,我们发布了HarmonyOS 3.0.0开发者预览版。预览版本中包含...
发表于 10-26 18:16 202次 阅读
HarmonyOS IDE工具DevEco 新版本3.0 Beta1发布

鸿蒙3.0给业内带来了哪些惊喜

据海外调研机构数据预测,2021年全球移动操作系统市场,Android占据73%的市场份额,苹果iO....
的头像 电子发烧友网 发表于 10-26 17:35 326次 阅读

第二届HarmonyOS开发者创新大赛正式启动 梦想再度启航

在10月22日举办的 华为 开发者大会(Together)上,第二届“ HarmonyOS 开发者创....
发表于 10-26 17:09 75次 阅读
第二届HarmonyOS开发者创新大赛正式启动 梦想再度启航

华为开发者大会有什么亮点

华为开发者大会2021于10月22至24在广东松山湖举行,开发者大会HDC 2021主题演讲嘉宾阵容....
的头像 lhl545545 发表于 10-26 17:03 272次 阅读

什么人会叁加华为开发者大会

华为开发者大会2021在广东东莞盛大召开,2021华为开发者大会参会者有华为专家、全球开发者等受邀参....
的头像 lhl545545 发表于 10-26 16:42 299次 阅读

华为开发者大会2021 10月官网

华为开发者大会2021近日正式在广东举行,本次大会聚焦HarmonyOS、智能家居、智慧办公、HMS....
的头像 lhl545545 发表于 10-26 16:26 345次 阅读

“饭圈女孩”: 拥有这款APP,你离爱豆更进一步!

Ins,是越来越多国内、国外明星们日亦喜爱的东西,如同许多国外名人开通微博一样。开通ins账号,也是....
发表于 10-26 15:20 24次 阅读
“饭圈女孩”: 拥有这款APP,你离爱豆更进一步!

HDC2021HarmonyOS学生公开课:校园布道未来可循

为了让学生了解HarmonyOS最新技术、商业价值、生态价值,以及学生开发者如何成长等信息,10月2....
的头像 话说科技 发表于 10-26 15:06 161次 阅读
HDC2021HarmonyOS学生公开课:校园布道未来可循

HarmonyOS原子化服务新赛道:系统级入口服务中心

10月22日-24日,为期三天的华为开发者大会2021(Together)在东莞举行。本次大会《Ha....
的头像 话说科技 发表于 10-26 15:05 172次 阅读
HarmonyOS原子化服务新赛道:系统级入口服务中心

华为开发者大会2021上市股票

华为开发者大会2021上市股票有哪些?华为开发者大会2021上市股票有中国长城、中国软件、金山办公、....
的头像 lhl545545 发表于 10-26 14:37 205次 阅读

华为2021开发者大会最新消息

华为开发者大会2021在中国松山湖举行,会上,华为公司基于OpenHarmony提供了Harmony....
的头像 lhl545545 发表于 10-26 14:20 189次 阅读

2021华为开发者大会介绍

华为开发者大会2021精彩纷呈,大会上主要聚焦了HarmonyOS、智慧办公、HMS Core等热门....
的头像 lhl545545 发表于 10-26 11:45 236次 阅读

Harmony应用开发--自定义标题栏实战

在Harmony开发过程中,如果对系统标题栏感到不满意,可以进行自行修改设计。配置文件(config.json)修改,在module下添加下面内...
发表于 10-26 11:37 101次 阅读
Harmony应用开发--自定义标题栏实战

华为开发者大会全程回顾

华为开发者大会2021(Together)在东莞松山湖已经完美落幕,下面我们一起来看看2021华为开....
的头像 lhl545545 发表于 10-26 11:16 213次 阅读

华为开发者大会2021鸿蒙系统升级

2021华为开发者大会10月22日至24日如期在松山湖举行,会上,华为正式发布了HarmonyOS3....
的头像 lhl545545 发表于 10-26 10:08 251次 阅读

分析 | 顶象iOS应用加固,如何助力App上架苹果商城

当前,中国经济正在转入高质量发展阶段,基于新一代信息技术飞速发展带来的引领性基础,以及创新驱动、高质....
的头像 话说科技 发表于 10-26 09:58 145次 阅读
分析 | 顶象iOS应用加固,如何助力App上架苹果商城

华为开发者大会在哪里看

2021年华为开发者大会近日正式在东莞松山湖举行,会上华为发布了HarmonyOS 3开发者预览版、....
的头像 lhl545545 发表于 10-26 09:56 171次 阅读

万物智联与烟火人间 HDC 2021华为开发者大会 一场跨越20年的双向奔赴

自从2011年,Gartner在著名的“新兴技术炒作周期”上,增加了一个新技术名词:物联网。IoT从....
的头像 脑极体 发表于 10-26 09:00 812次 阅读
万物智联与烟火人间 HDC 2021华为开发者大会 一场跨越20年的双向奔赴

华为开发者大会2021在哪

华为开发者大会2021在广东东莞松山湖举行,时间为三天,10月22至24天,华为官方已经公布了开发者....
的头像 lhl545545 发表于 10-25 17:53 448次 阅读

太强了!华为自研鸿蒙编程语言,行业大佬都已经偷偷学起来了

华为开发者大会 2021(Together)上,Harmony OS 3 开发者预览版正式发布,华为鸿蒙又是一个历史性的进步啊,而且,华为还表...
发表于 10-25 16:53 270次 阅读

华为开发者大会2021概念股

  华为开发者大会2021在10月22至24日在东莞松山湖如期举行,中国软件万兴科技等鸿蒙概念股有望....
的头像 lhl545545 发表于 10-25 16:44 323次 阅读

华为开发者大会值得参加吗

2021华为开发者大会值得参加。10月22至24日,2021华为开发者大会聚焦行业技术大咖发表了技术....
的头像 lhl545545 发表于 10-25 16:15 143次 阅读

2021华为开发者大会分论坛

华为开发者大会2021近日在广东如期举行,本次大会HarmonyOS鸿蒙生态成为重要参与者,华为除了....
的头像 lhl545545 发表于 10-25 15:56 320次 阅读

HarmonyOS 3.0.0开发者预览版全新发布

2021年10月22日在华为开发者大会HDC.Together 2021 主题演讲上,我们发布了HarmonyOS 3.0.0开发者预览版,主要内容包括:...
发表于 10-25 15:49 402次 阅读
HarmonyOS 3.0.0开发者预览版全新发布

2021华为开发者大会心得体会

10月22至24日华为正式举行了2021华为HDC开发者大会,华为通过展示软硬件协同的全场景多终端教....
的头像 lhl545545 发表于 10-25 15:25 182次 阅读

华为开发者大会是干嘛的

2021华为HDC开发者大会堪称“开发者嘉年华”,华为开发者大会是面向ICT等领域全球开发者的年度旗....
的头像 lhl545545 发表于 10-25 15:12 184次 阅读

不容错过!鸿蒙开发必备神器,老王月薪过万的秘诀都在这了

大家应该都知道在华为开发者大会HDC.Together 2021主题演讲会上,华为发布了HarmonyOS3.0.0开发者预览版。 预览版本中...
发表于 10-25 14:47 44次 阅读

HarmonyOS原子化服务卡片开发-快照实战说明

1.快照作用在服务中心显示卡片的过程中,因为页面加载需要一定时间,所以在服务中心中会先显示快照,后续再显示加载的小卡页面,...
发表于 10-25 13:42 0次 阅读
HarmonyOS原子化服务卡片开发-快照实战说明

华为开发者大会2021视频

华为开发者大会2021(Together)在东莞如期举行,华为消费总裁CEO余承恩在以“未来 有迹可....
的头像 lhl545545 发表于 10-25 11:23 285次 阅读

2020华为开发者大会直播入口

2020 年华为开发者大会与9 月10 日至9 月12 日在东莞松山湖举行。会上,华为揭开 了关于H....
的头像 lhl545545 发表于 10-25 11:09 215次 阅读

华为开发者大会2021举办时间

华为开发者大会HDC 2021在10月22至24日如期召开,地点在中国松山湖举行。华为与全球开发者汇....
的头像 lhl545545 发表于 10-25 10:50 198次 阅读

华为开发者大会2021官网

华为开发者大会2021近日已经正式开幕,华为公司在会上宣布HMS全球开发者已达510万,通过Harm....
的头像 lhl545545 发表于 10-25 10:36 226次 阅读

HarmonyOS驱动华为全屋智能再升级让智能家体验更近一步

(中国,东莞,2021年10月23日)华为开发者大会2021(Together)如期在东莞松山湖举行....
的头像 话说科技 发表于 10-25 10:31 260次 阅读
HarmonyOS驱动华为全屋智能再升级让智能家体验更近一步

梦想再度启航,第二届HarmonyOS开发者创新大赛正式启动

在10月22日举办的华为开发者大会(Together)上,第二届“HarmonyOS开发者创新大赛”....
的头像 话说科技 发表于 10-25 10:18 5557次 阅读
梦想再度启航,第二届HarmonyOS开发者创新大赛正式启动

华为开发者大会发布HarmonyOS 3预览版等全新开发技术,搭载HarmonyOS的设备超过1.5亿台

HarmonyOS已在超过1.5亿智能手机、平板、手表、智慧屏等设备上应用,成为万物智联时代的数字底....
的头像 西西 发表于 10-25 09:55 704次 阅读

华为何刚:网络安全和隐私保护是华为践行全场景生态战略的原点

华为提出消费者业务安全与隐私保护的“四大主张”,即自上而下的组织与流程保障、制定严苛的隐私安全原则、....
发表于 10-25 09:50 238次 阅读

鸿蒙3开发者预览版发布 华为鸿蒙编程语言正在研发中

2021华为开发者大会近日在广东东莞正式举行,随后华为消费总裁余承恩宣布将带来全新HarmonyOS....
的头像 lhl545545 发表于 10-25 09:13 310次 阅读

2021华为开发者大会分论坛HarmonyOS学生公开课布道师从零开始从现在开始

2021华为开发者大会分论坛HarmonyOS学生公开课布道师从零开始从现在开始 在正在直播的202....
的头像 inr999 发表于 10-24 11:47 601次 阅读
2021华为开发者大会分论坛HarmonyOS学生公开课布道师从零开始从现在开始

华为开发者分论坛HarmonyOS学生公开课-HarmonyOS开发者三大成长阶段与学习资源

2021华为开发者分论坛HarmonyOS学生公开课-HarmonyOS开发者三大成长阶段与学习资源
的头像 lhl545545 发表于 10-24 11:43 518次 阅读
华为开发者分论坛HarmonyOS学生公开课-HarmonyOS开发者三大成长阶段与学习资源

2021华为开发者大会分论坛HarmonyOS学生公开课解读HarmonyOS布道师

在今天的2021华为开发者大会分论坛HarmonyOS学生公开课上华为HarmonyOS开发者运营高....
的头像 inr999 发表于 10-24 11:35 536次 阅读
2021华为开发者大会分论坛HarmonyOS学生公开课解读HarmonyOS布道师

华为开发者分论坛HarmonyOS学生公开课-如何成为HarmonyOS校园布道师

2021华为开发者分论坛HarmonyOS学生公开课-如何成为HarmonyOS校园布道师
的头像 lhl545545 发表于 10-24 11:33 488次 阅读
华为开发者分论坛HarmonyOS学生公开课-如何成为HarmonyOS校园布道师

华为开发者分论坛HarmonyOS学生公开课-开发者成长图谱

2021华为开发者分论坛HarmonyOS学生公开课-开发者成长图谱
的头像 lhl545545 发表于 10-24 11:25 391次 阅读
华为开发者分论坛HarmonyOS学生公开课-开发者成长图谱

华为开发者分论坛HarmonyOS学生公开课-OpenHarmony Codelabs开发案例

2021华为开发者分论坛HarmonyOS学生公开课-OpenHarmony Codelabs开发案....
的头像 lhl545545 发表于 10-24 11:25 383次 阅读
华为开发者分论坛HarmonyOS学生公开课-OpenHarmony Codelabs开发案例

华为开发者分论坛HarmonyOS学生公开课-10分钟玩转codeLabs应用案例

2021华为开发者分论坛HarmonyOS学生公开课-10分钟玩转codeLabs应用案例
的头像 lhl545545 发表于 10-24 11:17 383次 阅读
华为开发者分论坛HarmonyOS学生公开课-10分钟玩转codeLabs应用案例

2021华为开发者大会HarmonyOS学生公开课上分享精彩样例

在今天的2021华为开发者大会分论坛HarmonyOS学生公开课上分享了很多的精彩样例;比如分布式任....
的头像 inr999 发表于 10-24 11:17 468次 阅读
2021华为开发者大会HarmonyOS学生公开课上分享精彩样例

华为开发者分论坛HarmonyOS学生公开课-如何学习HarmonyOS应用开发?

2021华为开发者分论坛HarmonyOS学生公开课-如何学习HarmonyOS应用开发?
的头像 lhl545545 发表于 10-24 11:09 310次 阅读
华为开发者分论坛HarmonyOS学生公开课-如何学习HarmonyOS应用开发?

2021华为开发者大会HarmonyOS学生公开课上教你10分钟成为HarmonyOS开发者

2021华为开发者大会HarmonyOS学生公开课上教你10分钟成为HarmonyOS开发者 学习H....
的头像 inr999 发表于 10-24 11:03 361次 阅读
2021华为开发者大会HarmonyOS学生公开课上教你10分钟成为HarmonyOS开发者