OpenHarmony 作为面向全场景、全连接、全智能时代的分布式操作系统,通过将各类不同终端设备的能力进行整合,实现硬件互助、资源共享,为用户提供流畅的全场景体验。
本期,我们通过介绍 OpenHarmony 的硬件资源池化框架,为大家揭晓 OpenHarmony 是如何实现多设备协同的。
一、硬件资源访问的演进
硬件资源访问是多设备进行协同的关键。OpenHarmony 发展至今,硬件资源访问经历了从“一对一”到“一对多”的演进过程。
1.1 一对一
在设计初期,为解决两台设备间的协同问题,我们通过系统提供的分布式设备虚拟化平台将两台设备的硬件资源进行融合,实现了“一对一”的硬件资源访问。
图 1 “一对一”的硬件资源访问模型
应用通过集成多设备虚拟化 Kit,对设备虚拟化平台进行访问。设备虚拟化平台提供设备 A 和设备 B 之间的数据交互以及设备的虚拟化能力,进而完成设备 A 的应用访问设备 B 的硬件能力,实现“一对一”的硬件资源访问。这种访问模型可以基本满足两个设备之间的资源访问,但是同时也存在一定的掣肘:
第一点是应用需要集成多设备虚拟化 Kit 包才能完成硬件资源的访问,增加了开发工作量。
第二点是该访问模型限制了设备 A 的应用在同一时刻只能访问设备 B 的硬件能力,即只能完成“一对一”的硬件资源访问。
1.2 一对多
随着全场景智慧生活的不断深入,“一对一”的设备硬件资源访问方式已不能满足某些复杂场景的业务需求。
OpenHarmony 对分布式技术不断探索与创新,通过增强原来的分布式设备虚拟化能力,将多台设备的各种硬件资源,如屏幕、相机、扩音器、键盘、传感器及存储器等予以抽象,形成“超级虚拟终端”内的统一硬件资源池,并支持硬件资源的按需分配和重新组合,真正实现了硬件资源的全局调用。应用需要使用哪种分布式的硬件能力,只需要访问对应的服务,不再需要集成 Kit;并且由硬件资源池提供的多种硬件资源可以同时被不同的应用访问,实现“一对多”的硬件资源访问。
图 2 “一对多”的硬件资源访问模型
基于“硬件资源池化”,开发者可以根据不同的业务场景,在硬件资源池内选择并匹配合适的能力模块,充分发挥不同设备的能力优势,从而构建全新的用户体验。
二、硬件资源池化框架
基于“硬件资源池化”的创新理念,OpenHarmony 融合硬件虚拟化、硬件资源管理及硬件数据管理等能力,构建了硬件资源池化框架,对外提供了统一的硬件能力开放接口,让开发者轻松实现应用开发。如图 3 所示,硬件资源池化框架将各类设备的硬件资源进行抽象,为北向应用提供各种分布式服务,比如分布式相机、分布式屏幕、分布式音频和分布式输入等,同时提供统一的设备管理和分布式硬件框架对硬件资源进行管理。
图 3 硬件资源池化框架
下面为大家介绍硬件资源池化框架的各个组成部分。
2.1 设备管理(DeviceManager)
该组件在 OpenHarmony 系统中提供与帐号无关的分布式设备的认证组网能力,并为开发者提供了一套用于分布式设备发现和认证的接口,如图 4 所示。当前支持同时管理的设备数量最大规格为 20 个设备。
图 4 设备管理组件
详细信息请参考设备管理的代码仓:
https://gitee.com/openharmony/device_manager
2.2 分布式硬件框架(DistributedHardwareFwk)
该组件为硬件资源池化提供信息管理能力,其主要能力包括接入管理、能力查询、状态管理、权限管理以及版本管理等。
详细信息请参考分布式硬件框架的代码仓:https://gitee.com/openharmony/distributed_hardware_fwk
2.3 分布式相机(Distributed Camera)
该组件提供跨设备相机访问的能力,将其他终端的设备的相机硬件能力进行抽象,作为硬件资源池中的相机能力提供给其他设备调用。
详细信息请参考分布式相机的代码仓:https://gitee.com/openharmony/distributed_camera
2.4 分布式屏幕(Distributed Screen)
该组件提供跨设备屏幕能力调用,为 OpenHarmony 系统框架提供系统投屏、屏幕镜像、屏幕分割等能力的实现。
详细信息请参考分布式屏幕的代码仓:https://gitee.com/openharmony/distributed_screen
三、后续规划
除了分布式相机和分布式屏幕外,硬件资源池化框架在后续版本还将提供分布式音频和分布式输入能力。分布式音频将提供对麦克风、喇叭、听筒等音频设备的硬件资源池化能力,通过音频服务提供给应用开发者,使得开发者能够自由选择、切换、组合音频设备,提升用户的使用体验。分布式输入将提供对键盘、鼠标等输入设备的硬件资源池化能力,通过输入服务让应用开发者能跨设备调用输入能力,实现多设备协同。
硬件资源池化框架仍在建设中,期待广大开发者共同加入我们,共同见证万物互联时代的无限可能!