OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)作為面向全場景、全連接、全智能時代的分布式操作系統,通過將各類不同終端設備的能力進行整合,實現硬件互助、資源共享,為用戶提供流暢的全場景體驗。本期,我們通過介紹 OpenHarmony 的硬件資源池化模型,為大家揭曉 OpenHarmony 是如何實現多設備協同的。
1.硬件資源訪問的演進
硬件資源訪問是多設備進行協同的關鍵。OpenHarmony 發展至今,硬件資源訪問經歷了從“一對一”到“多對多”的演進過程。
1.1 一對一
在設計初期,為解決兩臺設備間的協同問題,我們通過 OpenHarmony 提供的分布式設備虛擬化能力將兩臺設備的硬件資源進行融合,實現了“一對一”的硬件資源訪問。這便是硬件資源池化模型的雛形。
圖1 “一對一”的硬件資源訪問
1.2 多對多
隨著全場景智慧生活的不斷深入,“一對一”的設備硬件資源訪問方式已不能滿足某些復雜場景的業務需求。OpenHarmony 對分布式技術不斷探索與創新,通過增強原來的分布式設備虛擬化能力,將多臺設備的各種硬件資源,如屏幕、相機、擴音器、鍵盤、傳感器及存儲器等予以抽象,形成“超級虛擬終端”內的統一硬件資源池,并支持硬件資源的按需分配和重新組合,真正實現了硬件資源的全局調用。組成“超級虛擬終端”的多個設備,能訪問硬件資源池內的多種硬件資源,這便是“多對多”的硬件資源訪問。
圖2 硬件資源池化(多對多)
基于“硬件資源池化”,開發者可以根據不同的業務場景,在硬件資源池內選擇并匹配合適的能力模塊,充分發揮不同設備的能力優勢,從而構建全新的用戶體驗。
2.硬件資源池化模型
基于“硬件資源池化”的創新理念,OpenHarmony 融合硬件虛擬化、硬件資源管理及硬件數據管理等能力,構建了硬件資源池化模型,對外提供了統一的硬件能力開放接口,讓開發者輕松實現高效開發。
如圖3所示,硬件資源池化模型將各類設備的硬件資源進行抽象,為北向應用提供各種分布式服務,比如分布式相機、分布式屏幕、分布式音頻和分布式輸入等,同時提供統一的設備管理和分布式硬件框架。
圖3 硬件資源池化模型
下面為大家一一介紹硬件資源池化模型的各個組成部分。
2.1 設備管理
設備管理(即 DeviceManager)服務,提供設備發現、認證管理、可信設備管理和設備狀態管理等能力。
圖4 設備管理(DeviceManager)
OpenHarmony 為開發者提供了一套設備管理接口,用于分布式設備間監聽、發現和認證,如圖 5 所示。
圖5 設備管理接口
設備管理接口的使用示例代碼如下:
// 創建DeviceManager實例:
deviceManager.createDeviceManager('com.ohos.xxxx', (err, dm) => {
this.log("createDeviceManager err:" + JSON.stringify(err) + ' --success:' + JSON.stringify(dm))
if (err) return;
dmClass = dm;
dmClass.on('serviceDie', data => this.log("serviceDie on:" + JSON.stringify(data)))
});
// 查詢可信設備列表
var array = dmClass.getTrustedDeviceListSync();
// 獲取本地設備信息
var localDeviceInfo = dmClass.getLocalDeviceInfoSync();
// 開始設備發現(發現周邊不可信設備)
var subscribeId = 0;
dmClass.on('deviceFound', (data) => {
if (data == null) {
this.log("deviceFound error data=null")
return;
}
this.logList.push("deviceFound:" + JSON.stringify(data));
});
dmClass.on('discoverFail', (data) => {
this.log("discoverFail on:" + JSON.stringify(data));
});
subscribeId = Math.floor(Math.random() * 10000 + 1000)
var info = {
"subscribeId": subscribeId,
"mode": 0xAA,
"medium": 0,
"freq": 2,
"isSameAccount": false,
"isWakeRemote": true,
"capability": 0
};
dmClass.startDeviceDiscovery(info);
// 停止設備發現(需要和startDeviceDiscovery接口配對使用)
dmClass.stopDeviceDiscovery(subscribeId);
// 設備認證
var deviceInfo ={
"deviceId": "XXXXXXXX",
"deviceName": "",
deviceType: 0
};
let extraInfo = {
"appIcon": new Uint8Array(), // app圖標,可選參數,可不填
"appThumbnail": new Uint8Array(), // app縮略圖,可選參數,可不填
"appName": "xxxxxxxx", // 對端設備應用名稱
"appDescription": "xxxxxxxx", // app描述
"business": '0',
"displayOwner": 0,
}
// 設備取消認證
dmClass.unAuthenticateDevice(this.deviceInfo);
DeviceManager 的更多詳情,請參考以下代碼倉:
https://gitee.com/openharmony/device_manager
2.2 分布式硬件框架
分布式硬件框架為硬件資源池化模型提供了接入管理、能力查詢、狀態管理、權限管理以及版本管理等硬件資源管理能力,如圖6所示:
圖6 分布式硬件框架
分布式硬件框架的各模塊說明如下:
圖9 分布式相機的模塊說明
分布式相機的更多詳情,請參考分布式相機代碼倉:
https://gitee.com/openharmony/distributed_camera
2.4 分布式屏幕
分布式屏幕提供了屏幕設備的硬件資源軟件抽象能力,為 OpenHarmony 系統框架提供系統投屏、屏幕鏡像、屏幕分割等能力的實現。分布式屏幕的框架圖如下所示:
圖10 分布式屏幕
分布式屏幕的各模塊說明如下:
圖11 分布式屏幕的模塊說明
分布式屏幕的更多詳情,請參考以下代碼倉:
https://gitee.com/openharmony/distributed_screen
3.結束語
除了分布式相機和分布式屏幕外,硬件資源池化模型在后續版本還將提供分布式音頻和分布式輸入能力。分布式音頻將提供對麥克風、喇叭、聽筒等音頻設備的硬件資源池化能力,通過音頻服務提供給應用開發者,使得開發者能夠自由選擇、切換、組合音頻設備,提升用戶的使用體驗。分布式輸入將提供對鍵盤、鼠標等輸入設備的硬件資源池化能力,通過輸入服務讓應用開發者能跨設備調用輸入能力,實現多設備協同。
硬件資源池化模型仍在建設中,期待廣大開發者共同加入我們,共同見證萬物互聯時代的無限可能!
審核編輯 :李倩
-
操作系統
+關注
關注
37文章
6856瀏覽量
123437 -
OpenHarmony
+關注
關注
25文章
3729瀏覽量
16405
原文標題:OpenHarmony 3.1 Release版本關鍵特性解析——OpenHarmony硬件資源池化模型
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論