易倍体育  
重庆 | 北京 | 深圳 | 上海 | 成都 | 宁波
全国服务热线: 400-023-8112 15111998399
易倍体育
易倍体育
公司新闻
常见问题
 

地址:重庆市石桥铺一城精英国际大厦12-2室
电话:023-61170788  
手机:15111998399(24小时)
全国免费热线:400-023-8112
QQ:53755635

公司新闻
   

易倍体育:OpenHarmony新增两个分布式能力!快来了解

发布时间:2022-07-22 08:13:25 来源:易倍体育网址 作者:易倍体育网址入口

  分布式能力作为OpenHarmony操作系统的关键能力,一直备受关注,同时它也是开源社区能力构建的重点。在3月底发布的OpenHarmony v3.1 Release版本中,媒体子系统新增了两个分布式能力:

  如今我们在生活中已经被越来越多的电子设备所包围。这些设备有不同的功能(音箱、大屏、摄像头、冰箱等)、不同的交互界面(语音、触屏、红外遥控等),给人们提供了足够便利的同时,却给开发者带来了巨大的挑战:

  这就导致了各产品应用间存在天然的隔离,要实现设备之间的多媒体互通互助也困难重重。如何屏蔽设备间的差异,提供相对一致的多媒体能力接口?

  试想一下:当你需要在蓝牙音箱上播放电视的音频时,你不得不用遥控器在电视的菜单中进行繁琐的设置;当你想将声音切换到蓝牙耳机时,又不得不重新完成繁琐的设置操作。这样感觉是人在服务于这些设备,而不是设备服务于人。随着更多的电子设备进入人们的生活,复杂的硬件环境带给人们的复杂操作会越来越多。如何在人们需要的时候给出最佳的组网方式,并且能够实现媒体数据传输的最佳路由?

  每个单一设备可能只有一个功能,比如:体脂秤、摄像头、投影仪等,但是用户的应用场景却大多集合了多种功能。如何让不同的设备组织起来,共同给用户提供一个完整的媒体功能?

  如何解决上面这些问题呢?这就需要构建一个天然支持分布式的操作系统。OpenHarmony在初始设计阶段就将焦点放在如何实现分布式能力上面,这使它天然具备分布式特性,能够轻松实现设备间的硬件互助、数据共享、服务迁移,同时使应用轻松接入分布式能力,给用户提供顺畅的跨设备交互体验。

  下面我们要介绍的两个分布式能力——分布式媒体库和分布式相机,分别用于支撑媒体库和相机的分布式场景,为用户提供跨设备的多媒体交互体验。

  ● MediaLibraryDataAbility:通过SyncTable、RDB Utils、File Utils功能模块,与媒体子系统外部的分布式数据库和分布式文件系统交互,从而获得对分布式数据的增删改查能力。

  开发者主要通过JS API接口来使用分布式媒体库能力。下面通过两个典型操作来讲解如何使用分布式媒体库的JS API接口:

  通过getActivePeers()接口可以获取当前组网中所有可访问的设备。获取到的PeerInfo信息中包含一个networkId参数,以此作为分布式数据库访问的关键参数,来区分要访问的设备。

  MediaFetchOptions提供对媒体库进行访问操作的参数集合,其中的networkId参数会跟随MediaFetchOptions一起通过getFileAssets()接口下发给媒体库服务接口,并且依此来访问对应设备上的数据。

  更多的接口详情,请从码云OpenHarmony项目的媒体库JS API声明文件中获取。

  下面我们从系统相册应用的实现代码中抽取几个关键的代码段,看看应用访问分布式媒体库的操作流程:

  系统相册应用的完整代码及开发说明,从码云OpenHarmony项目中获取。

  从图2中可以看出,分布式相机框架(Distributed Hardware)分为主控端和被控端。设备B拥有本地相机设备,分布式组网中的设备A可以分布式调用设备B的相机设备。这种场景下,设备A是主控端,设备B是被控端,两个设备通过软总线进行交互。VirtualCameraHAL作为硬件适配层(HAL)的一部分,负责和分布式相机框架中的主控端交互,将主控端CameraFramwork下发的指令传输给分布式相机框架的SourceMgr处理。SourceMgr则通过软总线将控制信息传递给被控端的CameraClient,CameraClient直接通过调用被控端CameraFramwork的接口来完成对设备B相机的控制。从设备B反馈的预览图像数据会通过分布式相机框架的ChannelSink回传到设备A的HAL层,进而反馈给应用。通过这种方式,设备A的应用就可以像使用本地设备一样使用设备B的相机。

  开发者主要通过JS API接口来使用分布式相机能力。下面通过两个典型操作来讲解如何使用分布式相机的JS API接口:

  通过getCameras()接口可以获得当前组网中所有可用的相机设备(包括分布式相机设备)。在获取到的Camera信息中,有两个参数需要关注:

  (说明:在分布式相机的 JS API中,所有的接口都是本地相机设备和分布式相机设备共用的,接口通过参数cameraId来指定执行操作的相机设备。)

  createCameraInput()接口为创建相机设备输入流的接口,其中cameraId参数用于区分打开哪个相机设备。如果传入的是一个有效的分布式相机的cameraId,则自动会触发分布式相机特性。

  下面我们从系统相机应用的实现代码中抽取几个关键的代码段,看看应用访问分布式相机的操作流程:

  从开放的代码可以看出,当前构建的多媒体分布式能力还比较基础,部分分布式能力接口也还没有向三方应用开放。我们会继续努力,希望在下个版本上,分布式能力能扩展到音频、播控等更多特性,为大家提供更加丰富的分布式多媒体体验。

 
 
友情链接:

XML地图|版权所有:{易倍体育 地址:重庆市石桥铺一城精英国际大厦12-2室 电话:023-61170788 手机:15111998399(24小时)
《中华人民共和国电信与信息服务业务经营许可证》编号:黑ICP备68488341号-1
重庆网站建设|易倍体育提供技术支持|网站地图

易倍体育

公网安备 50010702500980号