龍軍 趙冬冬 茅維





摘要:隨著HarmonyOS4.0的發布,鴻蒙多設備協同應用的需求越來越多。HarmonyOS通過分布式體驗架構實現服務流轉,文章在研究分布式流轉流程的基礎上,分析跨端遷移和多端協同兩種模式的應用場景、流程和接口函數,最后完成了2種模式應用模型的初步建立、測試和運行。
關鍵詞:HarmonyOS;鴻蒙;分布式流轉;跨端遷移;多端協同
中圖分類號:TP311.1? ? 文獻標識碼:A
文章編號:1009-3044(2023)35-0050-03
開放科學(資源服務)標識碼(OSID)
華為1+8+N戰略是其全場景智慧化戰略在產品層面的體現,通過相互感知將設備進行能力整合成一個超級終端,鴻蒙借助微內核、分布式等技術實現設備全場景化,為用戶帶來一致、高效的體驗[1]。2023年8月HarmonyOS4.0正式發布,突顯元服務、分布式萬物互聯、大智慧、安全、個性等特點。
目前鴻蒙生態設備達7億臺,隨著全場景多設備生活方式的延伸,深度融入AI技術,車機系統、多模態交互等領域再次突破,提供了更加高效的交互體驗。
1 鴻蒙多設備協同應用的需求
鴻蒙設備有多種類型和芯片,連接方式有星閃、Wi-Fi、藍牙,交互方式有觸屏、鍵盤、語音、按鈕、手勢,屏幕大小、形狀、分辨率多樣。不同設備有各自應用場景,如手機功能全、交互好,但屏幕小;智慧屏屏幕大、音視頻輸入輸出能力強,但移動性、交互性差;手表有便攜、生理數據檢測、安全認證等能力,但交互差、屏幕小。
隨著越來越多設備的智能化,在實際應用中會遇到要將在PC或平板上進行的應用改到手機上繼續操作、將手機上的文檔發送到智慧屏上操作、在平板上看視頻同時在手機上進行交互、同時用手機和智慧屏操作文檔、將手機作為手柄與智慧屏配合玩游戲等場景。如何實現多設備間的通信、消息收發、錯誤處理和性能優化,保證跨設備應用有正確、流暢的體驗,解決多設備形態和能力差異,實現多設備并發、協作、互補,這些問題都要研究解決。
2 HarmonyOS分布式體驗架構及流轉流程
鴻蒙設備通過分布式操作系統實現取長補短和共同協助,服務流轉打破了設備界限,通過多設備聯動,使元服務可分可合、可流轉。
2.1 HarmonyOS分布式體驗架構
HarmonyOS將分布式體驗稱為分布式流轉,有跨端遷移和多端協同兩種類型。跨端遷移是用戶在設備A上發起操作,切換到設備B時能適時繼續當前操作,A端應用退出。多端協同是多個設備相互協同,作為一個整體為用戶提供比單設備更高效和沉浸的體驗[2]。
2.2 HarmonyOS分布式流轉流程
已授權設備在使用元服務時,若系統檢測到有更優的可流轉設備,可通過自動出現推薦氣泡完成流轉,也可在元服務中內嵌規范的流轉圖標,通過流轉面板手動選擇合適的設備進行流轉。
未授權設備通過流轉圖標調出系統的流轉面板,選擇要流轉的未授權設備,此時對端設備顯示告知被流轉服務信息的卡片,同意后,掃描該設備上顯示的多功能碼完成設備認證和服務流轉。
直接關閉服務或通過流轉面板結束流轉任務。
3 HarmonyOS的跨端遷移模式
在用戶使用設備的過程中,如發生從室內到戶外或周圍有更合適設備等使用情境變化時,之前使用的設備可能已不適合繼續當前的任務,此時,用戶可以選擇新的設備來繼續當前的任務[3],即跨端遷移。遷移后設備要同步原設備任務的狀態,且獨立運行。
系統根據用戶習慣、場景和可用設備,主動推薦最適合設備,用戶通過推薦氣泡選擇完成遷移。應用也可用流轉圖標作為手動遷移入口,流轉面板提供全量可用設備列表,手動選擇設備進行遷移。
4 HarmonyOS的多端協同模式
不同設備的顯示、攝像、音頻輸入輸出、交互和傳感器等能力存在差異,通過多端協同,根據應用場景需要,將多個設備的優劣勢進行匹配,可設計出優秀的多端協同體驗[4]。
顯示協同是應用將界面用多個設備操作同時使用,如把某設備的一個或多個界面的內容分拆到多設備同時顯示,或把一個界面中顯示和功能操作分拆到多設備操作。
當設備攝像頭的拍攝質量、位置、角度不適合當前攝像場景時,通過攝像協同用另一設備攝像頭替代或組合使用。
音頻輸入協同用于間距較遠或吵鬧的場景,用另一設備的音頻輸入能力作為補充或話筒來使用。音頻輸出協同是把某設備上的音頻分拆到其他設備或多個設備同時播放同一或不同音頻。
交互協同是多個設備共同完成某項應用,如用一設備輸入或交互能力幫助另一設備進行操作,以提升效率。
運動、健康類應用常用傳感器協同獲得如手表等有生理數據檢測能力設備的生理或運動數據。
實際設計中,可針對應用所需要的能力進行多設備協同,并將這些能力組合協同,提供更符合場景的整體協同體驗。
5 HarmonyOS跨端遷移的實現
5.1 跨端遷移流程
應用從設備A跨端遷移到設備B時,設備A的應用向流轉任務管理服務注冊一個流轉回調的流轉準備。可由系統感知到可用設備B,主動提供設備信息,用戶確認后回調通知應用開始系統推薦流轉。或通過流轉圖標,系統被動為用戶提供可交互設備信息,確認選擇設備B后回調通知應用開始用戶手動流轉。
設備A的應用通過調用分布式任務調度能力,向設備B的應用發起跨端遷移。流轉中將流轉狀態上報到流轉任務管理服務。
跨端遷移后,設備A的應用自行退出。
5.2 接口說明
流轉任務管理服務提供注冊、解注冊、顯示設備列表、上報業務狀態等接口,通過跨端遷移能力,可實現如文檔跨設備編輯、視頻跨設備續播等場景[5]。
5.3 模型實現
1) 在MainAbility中實現IAbilityContinuation接口,并重寫方法。
2) 1在config.json中聲明跨端遷移訪問權限,在MainAbility的onStart()中申請權限。
[requestPermissionsFromUser(new String[]{"ohos.permission.DISTRIBUTED_DATASYNC"}, 0); ]
3) 在卡片的流轉任務管理服務回調函數的onConnected()中獲得設備ID,更新選擇設備后的流轉狀態。
[DevId = deviceInfo.getDeviceId();
cRMan.updateConnectStatus(aToken, DevId , DeviceConnectState.CONNECTED.getState(), null); ]
在onStart()注冊流轉任務管理服務。
[cRMan= getContinuationRegisterManager(); ]
在onStop()中解注冊流轉任務管理服務并斷開連接。
[cRMan.unregister(aToken, null);
cRMan.disconnect(); ]
4) 功能實現
用參數設置過濾條件,用register(BUNDLE_NAME,params,callback,requestCallback)注冊流轉任務管理服務。
用參數設置過濾設備類型,用showDeviceList(aToken,params,null)顯示設備列表,選擇后在回調中獲得設備ID。
用continueAbility(DevId)將運行的FA不可回遷地遷移到目標設備,實現業務在設備間的無縫遷移。
用continueAbilityReversibly(DevId)遷移可回遷FA,遷移后用reverseContinueAbility()將已遷移FA拉回到本端。
5) 通過IAbilityContinuation接口實現遷移過程中狀態數據的傳遞和管理,發起端完成遷移后在onCompleteContinuation()回調中用terminateAbility()關閉本端FA,接收到遠端遷移傳遞數據后,在onSaveData()回調中用setParam()保存狀態數據。接收到遠端數據時在onRestoreData()回調中用getParam()捕獲。
6 HarmonyOS多端協同的實現
6.1 多端協同流程
設備A的應用和設備B的應用進行多端協同業務流程的第一步流轉準備向跨端遷移。
設備A的應用通過分布式任務調度的能力,向設備B的應用發起多端協同,流轉過程中將流轉狀態上報到流轉任務管理服務。
用戶通過設備A的流轉任務管理界面結束流轉,流轉任務管理服務回調通知應用取消流轉,終止和設備B的多端協同。流轉結束后將流轉狀態上報到流轉任務管理服務,注銷流轉回調。
6.2 接口說明
多端協同的接口多數同跨端遷移,表2列出部分不同接口。
6.3 模型實現
1) ~3) 同跨端遷移。
4) 功能實現。
注冊流轉任務管理服務同上。
在設備列表中選擇設備同上。
將目標設備ID作為Intent參數,用startAbility(intent)跨設備啟動FA/PA,用stopAbility(intent)關閉設備PA。
用IAbilityConnection創建管理連接關系對象mConn,跨設備PA連接完成后,返回序列化IRemoteObject對象mProxy。在本地發起連接側和對端被連接側分別實現代理以提供跨設備連接能力。用RemoteObject類和IRemoteBroker接口創建對應客戶端業務類。創建服務,實例化客戶端,返回給連接方可調用的代理,PA收到連接請求時,將客戶端轉為代理返給發起側。將指定目標設備ID作為Intent參數,用connectAbility(intent,mConn)實現跨設備連接PA,執行對象mProxy的業務邏輯,用disconnectAbility(mConn)斷開與遠程PA連接。
7 結束語
跨端遷移實現應用在設備間流轉,多端協同實現多設備共同完成應用。通過這兩種分布式流轉應用模型的建立與運行,實現了相應的流轉功能。
隨著HarmonyOS 4.0的發布,開發者達到220萬,鴻蒙產品陸續推出,生態更加完善,全場景業務的分布式應用不斷拓寬。在華為持續深入研發和開發者的努力下,會出現更多創造性的產品和應用,用科技推動國產產業持續地發展。
參考文獻:
[1] 潘炳征.基于鴻蒙的分布式創作播報應用研究[J].價值工程,2022,41(23):166-168.
[2] 華為.分布式體驗架構-通用設計基礎-指南-設計-HarmonyOS Developer[EB/OL]. [2022-10-22].https://developer.harmonyos.com / cn / docs / design / des-guides / architecture-000000105 4605984.
[3] 劉小芬.鴻蒙系統架構及應用程序開發研究[J].電腦編程技巧與維護,2021(12):3-5,12.
[4] 華為.流轉-開發-指南-文檔-HarmonyOS Deceloper[EB/OL]. [2023-09-02].https://developer.harmonyos.com/cn/docs/documentation/doc-guides/hop-overview-0000001092995092.
[5] 陳美汝.鴻蒙操作系統應用開發實踐[M].北京:清華大學出版社,2021.
【通聯編輯:梁書】