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