在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實現(xiàn)跨設(shè)備的雙向連接? Labo涂鴉鴻蒙親子版分布式開發(fā)技術(shù)分享

話說科技 ? 2021-07-02 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

近期,首屆HarmonyOS開發(fā)者創(chuàng)新大賽正式落下帷幕。大賽共歷時5個月,超過3000支隊伍的10000多名選手參賽,25000多位開發(fā)者參與了大賽學(xué)習(xí),最終23支參賽隊伍斬獲獎項,產(chǎn)出了多款有創(chuàng)新、有創(chuàng)意、有價值的優(yōu)秀作品。其中由“Labo Lado兒童藝術(shù)創(chuàng)想”團隊打造的《Labo涂鴉鴻蒙親子版》就是其中之一,其創(chuàng)造性地通過HarmonyOS分布式技術(shù),實現(xiàn)了多設(shè)備下的親子互動涂鴉功能,最終摘得大賽一等獎。

在很早以前,“Labo Lado兒童藝術(shù)創(chuàng)想”團隊就做過一款涂鴉游戲的應(yīng)用,該應(yīng)用可以讓孩子和父母在一個平板或者手機上進行繪畫比賽,比賽的方式就是屏幕一分為二,兩人各在設(shè)備的一邊進行涂鴉。這種方式雖然有趣,但是對于繪畫而言,屏幕尺寸限制了用戶的發(fā)揮和操作。因此團隊希望這類玩法能通過多個設(shè)備完成,于是他們研究了ZeroConf、iOS的Multipeer Connectivity、Google Nearby等近距離互聯(lián)的技術(shù), 結(jié)果發(fā)現(xiàn)這些技術(shù)在設(shè)備發(fā)現(xiàn)和應(yīng)用拉起方面實現(xiàn)的都不理想,尤其是當(dāng)目標(biāo)用戶是兒童的情況下,操作起來不夠簡便也不易上手。

HarmonyOS的出現(xiàn)給團隊帶來了希望。他們發(fā)現(xiàn)HarmonyOS的分布式技術(shù)有著很大的應(yīng)用潛力,這項技術(shù)讓設(shè)備的發(fā)現(xiàn)和應(yīng)用拉起變的非常的簡單自然,互聯(lián)的過程也很流暢,很好地解決了單機操作的限制,讓跨設(shè)備聯(lián)機功能能夠非常容易地實現(xiàn)。此外,HarmonyOS的開發(fā)也給團隊留下了很深刻的印象,以往繁瑣的開發(fā)步驟,在 HarmonyOS 中僅需幾個配置、幾行代碼即可完成,無需花費太多精力。在《Labo涂鴉鴻蒙親子版》里面的5個分布式玩法的開發(fā)只用了團隊一名開發(fā)者不到兩個月的時間,其中還包括了學(xué)習(xí)上手、解決文檔不全和各種疑難問題的過程。

以下是“Labo Lado兒童藝術(shù)創(chuàng)想”團隊基于HarmonyOS的分布式開發(fā)關(guān)鍵技術(shù)的簡單分享:

一、分布式技術(shù)實踐

HarmonyOS的分布式能力是在系統(tǒng)層面實現(xiàn)的,在設(shè)備雙方同屬一個局域網(wǎng)的情況下,設(shè)備都可以快速的發(fā)現(xiàn)和進行流暢的通訊。下面將從HarmonyOS設(shè)備的發(fā)現(xiàn)、應(yīng)用的拉起、應(yīng)用通訊和雙向通訊幾個部分來進行分享。

1、設(shè)備的發(fā)現(xiàn)

假設(shè)設(shè)備A想要邀請另外一個設(shè)備B加入,AB任何一方都無需啟動特別的廣播服務(wù),只要發(fā)起方設(shè)備A在應(yīng)用內(nèi)調(diào)用設(shè)備發(fā)現(xiàn)代碼,就可以列出附近符合條件可用的的設(shè)備。

以下是獲取設(shè)備列表的示例代碼:

public static List getRemoteDevice() {

List deviceInfoList = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE);

return deviceInfoList;

}

列出設(shè)備之后,用戶就可以通過設(shè)備名選擇想要邀請的設(shè)備了。

(左側(cè)設(shè)備A發(fā)現(xiàn)右側(cè)名為“ye”的設(shè)備B的界面展示)

2、應(yīng)用的拉起

設(shè)備A邀請了設(shè)備B之后,如果設(shè)備B上應(yīng)用沒啟動,設(shè)備A可直接通過調(diào)用startAbility方法來拉起設(shè)備B上的應(yīng)用。雙方應(yīng)用都啟動了之后,就可以進行RPC通訊了。如果需要事先檢查設(shè)備B上的應(yīng)用是否已經(jīng)啟動或者是否在后臺,可通過在應(yīng)用中增加一個PA來實現(xiàn)。在拉起之前,設(shè)備A先連接設(shè)備B的應(yīng)用中的PA可以實現(xiàn)更復(fù)雜精準(zhǔn)的遠(yuǎn)程應(yīng)用啟動控制。

3、應(yīng)用通訊

在應(yīng)用中啟動一個PA,專門用作通訊的服務(wù)器端。當(dāng)設(shè)備B的應(yīng)用被拉起之后,設(shè)備A就會通過connectAbility與設(shè)備B的PA進行連接,通訊采用RPC方式實現(xiàn),并使用IDL定義通訊接口

4、雙向通訊

RPC的通訊方式使用簡單,但是只能支持單向通訊。為了實現(xiàn)雙向通訊,可在設(shè)備A與設(shè)備B發(fā)起建立連接成功之后,再讓設(shè)備B與設(shè)備A發(fā)起建立一個連接,用兩個連接實現(xiàn)了雙向通訊。下面是這兩個連接建立過程的示意時序圖:

poYBAGDe11iAYjSKAAC4vSv52A4989.png

在設(shè)備A與設(shè)備B建立連接的時候,設(shè)備A必須將自己的DeviceId發(fā)送給設(shè)備B,然后設(shè)備B才可以主動發(fā)起一個與設(shè)備A的連接,獲取當(dāng)前設(shè)備的DeviceId方法如下:

KvManagerFactory.getInstance().createKvManager(new KvManagerConfig(this)).getLocalDeviceInfo().getId()

應(yīng)用中,FA主要實現(xiàn)了界面層邏輯,PA部分用做數(shù)據(jù)通訊的服務(wù)端。為了防止拉起應(yīng)用導(dǎo)致用戶當(dāng)前面的操作被中斷,可通過PA來查詢當(dāng)前FA的狀態(tài),如果FA已經(jīng)啟動了,就跳過拉起,直接進行下一步操作即可。

二、數(shù)據(jù)接口與數(shù)據(jù)結(jié)構(gòu)定義

使用了IDL定義了兩個通用的接口,分別用來進行異步和同步調(diào)用:

int sendSyncCommand([in] int command, [in] String params);

void sendAsyncCommand([in] int command, [in] String params, [in] byte[] content);

大部分情況下,遠(yuǎn)程調(diào)用大部分都通過同步的方式進行,用戶之間的繪畫數(shù)據(jù)通過異步接口傳輸,數(shù)據(jù)在用戶繪制的時候采集,每50ms左右發(fā)送一次,這個頻率可以大概保證用戶視覺上沒有卡頓,而又不至于因為接口過度調(diào)用導(dǎo)致卡頓或者耗電量過大。采集的繪畫數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)大致如下:

enum action //動作,表示落筆、移動、提筆等動作

int tagId //多點觸摸識別標(biāo)記

int x //x坐標(biāo)

int y //y坐標(biāo)

enum brushType //筆刷類型

int brushSize //筆刷大小

enum brushColor //筆刷顏色

int layer //圖層

這款應(yīng)用是支持多點觸摸的,所以每個觸摸點在落筆的的時候,都使用了tagId進行標(biāo)記。這些數(shù)據(jù)除了通訊外,還會完整地保存在文件中,這樣用戶就可以通過應(yīng)用內(nèi)的播放功能播放該數(shù)據(jù),回看繪畫的整個過程。

三、教程錄制與曲線平滑

1、教程制作

這款產(chǎn)品的特色之一是教程是動態(tài)的,用戶可以自己拼裝或者通過游戲生成教程角色。目前應(yīng)用內(nèi)置六種教程。這些教程預(yù)先由設(shè)計師在photoshop中畫好并標(biāo)記各個部位,然后再通過專門的photoshop腳本導(dǎo)出到教程錄制應(yīng)用中,再由設(shè)計師按部位逐個進行臨摹繪制,繪制完成,應(yīng)用會將設(shè)計師的繪制過程數(shù)據(jù)保存為json文件,通過將這些json的文件里的部位互換,我們就實現(xiàn)了用戶自己拼裝教程的功能了。

pYYBAGDe11iAeRLqAAFZODXCRPk798.png

2、曲線平滑

繪制過程,為了讓用戶繪制的曲線更加平滑,采用二次貝塞爾曲線算法進行差值(Quadratic Bezier Curve),該算法簡單效率也非常不錯:

pYYBAGDe11iAGa-rAAA-oIrrwgA459.png

public Point quadraticBezier(Point p0, Point p1, Point p2, float t) {

Point pFinal = new Point();

pFinal.x = (float) (Math.pow(1 - t, 2) * p0.x + (1 - t) * 2 * t * p1.x + t * t * p2.x);

pFinal.y = (float) (Math.pow(1 - t, 2) * p0.y + (1 - t) * 2 * t * p1.y + t * t * p2.y);

return pFinal;

}

基于HarmonyOS的分布式特性,《Labo涂鴉鴻蒙親子版》完成了一次已有應(yīng)用的自我嘗試和突破,大大的增加了用戶在使用過程中的樂趣,為用戶帶來了全新的跨設(shè)備親子交互體驗,“Labo Lado兒童藝術(shù)創(chuàng)想”團隊在未來將與更多的HarmonyOS開發(fā)者一起,為用戶創(chuàng)作出更多更有趣的兒童創(chuàng)造類應(yīng)用。

近一段時間以來,HarmonyOS 2的發(fā)布吸引了廣大開發(fā)者的關(guān)注。作為一款面向萬物互聯(lián)時代的智能終端操作系統(tǒng),HarmonyOS 2帶來了諸多新特性、新功能和新玩法,等待開發(fā)者去探索、去學(xué)習(xí)、去實踐。也歡迎廣大開發(fā)者繼續(xù)發(fā)揮創(chuàng)造力和想象力,基于HarmonyOS開發(fā)出更多有創(chuàng)新、有創(chuàng)意、有價值的作品,打造出專屬于萬物互聯(lián)時代的創(chuàng)新產(chǎn)品。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電子設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    2882

    瀏覽量

    54713
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    開鴻開發(fā)板深度體驗:從開源鴻蒙開發(fā)到AI場景實踐

    的KaihongBoard-3588S-SBC和KaihongBoard-3576-SBC被評為“2025OpenHarmony明星開發(fā)板”,可實現(xiàn)設(shè)備快速開源鴻蒙化升級、
    的頭像 發(fā)表于 07-03 17:03 ?248次閱讀
    開鴻<b class='flag-5'>開發(fā)</b>板深度體驗:從開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>到AI場景實踐

    ArkUI-X平臺技術(shù)落地-華為運動健康(一)

    開”的加載速度,所以目前H5平臺技術(shù)只在運動健康應(yīng)用某些低頻和容易變化的頁面上使用,在一二級頁面仍使用原生native開發(fā)平臺方案選型 隨著運動健康
    發(fā)表于 06-18 22:53

    鴻蒙5開發(fā)寶藏案例分享---應(yīng)用接續(xù)提升內(nèi)容發(fā)布體驗

    ?【開發(fā)經(jīng)驗分享】鴻蒙應(yīng)用接續(xù)功能實戰(zhàn):這些隱藏案例助你實現(xiàn)設(shè)備絲滑流轉(zhuǎn)! 各位開發(fā)者小伙伴們
    發(fā)表于 06-03 18:25

    鴻蒙5開發(fā)寶藏案例分享---一多開發(fā)實例(游戲)

    十年前藏的現(xiàn)金一樣驚喜!)這些藏在文檔深處的\"武功秘籍\",能幫我們輕松實現(xiàn)分布式游戲、端協(xié)同這些聽起來很酷的功能。快上車,帶你解鎖鴻蒙開發(fā)
    發(fā)表于 06-03 18:22

    分布式光伏如何實現(xiàn)防逆流?

    分布式光伏如何實現(xiàn)防逆流
    的頭像 發(fā)表于 03-24 13:31 ?280次閱讀
    <b class='flag-5'>分布式</b>光伏如何<b class='flag-5'>實現(xiàn)</b>防逆流?

    【「鴻蒙操作系統(tǒng)設(shè)計原理與架構(gòu)」閱讀體驗】02-華為鴻蒙設(shè)計理念

    用戶在不同設(shè)備上都能享受到一致、流暢的服務(wù) 。 分布式數(shù)據(jù)管理 :分布式數(shù)據(jù)管理是 HarmonyOS 實現(xiàn)數(shù)據(jù)
    發(fā)表于 02-23 16:16

    #新年新氣象,大家新年快樂!#AIGC入門及鴻蒙入門

    ,基于擴散模型,能夠生成與給定文本描述相符的圖像。 鴻蒙系統(tǒng)入門 1.基礎(chǔ)知識:鴻蒙系統(tǒng)(HarmonyOS)是華為推出的一款分布式操作系統(tǒng),旨在實現(xiàn)
    發(fā)表于 01-13 10:46

    AIGC入門及鴻蒙入門

    模型,能夠生成與給定文本描述相符的圖像。 鴻蒙系統(tǒng)入門 1. 基礎(chǔ)知識: 鴻蒙系統(tǒng)(HarmonyOS)是華為推出的一款分布式操作系統(tǒng),旨在實現(xiàn)
    發(fā)表于 01-13 10:32

    基于ptp的分布式系統(tǒng)設(shè)計

    。 PTP概述 PTP是一種網(wǎng)絡(luò)時間同步協(xié)議,它允許網(wǎng)絡(luò)中的設(shè)備同步它們的時鐘。PTP基于IEEE 1588標(biāo)準(zhǔn),旨在提供亞微秒級別的時間同步精度。PTP通過在網(wǎng)絡(luò)中傳播時間信息,并使用這些信息來校正本地時鐘,從而實現(xiàn)精確的時間同步。 系統(tǒng)架構(gòu) 基于PTP的
    的頭像 發(fā)表于 12-29 10:09 ?554次閱讀

    HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)文件資產(chǎn)遷移

    設(shè)備文件訪問實現(xiàn)文件的遷移,難以獲取文件同步完成的時間。為了保證更高的成功率,文件的遷移不建議繼續(xù)通過該方式實現(xiàn),推薦使用分布式數(shù)據(jù)對象攜帶資產(chǎn)的方式。
    發(fā)表于 12-24 10:11

    HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)權(quán)限與基礎(chǔ)數(shù)據(jù)

    設(shè)備文件訪問實現(xiàn)文件的遷移,難以獲取文件同步完成的時間。為了保證更高的成功率,文件的遷移不建議繼續(xù)通過該方式實現(xiàn),推薦使用分布式數(shù)據(jù)對象攜帶資產(chǎn)的方式。
    發(fā)表于 12-24 09:40

    名單公布!【書籍評測活動NO.53】鴻蒙操作系統(tǒng)設(shè)計原理與架構(gòu)

    的底層設(shè)計邏輯出發(fā),針對不同關(guān)鍵子系統(tǒng)的目標(biāo)功能和實現(xiàn)路徑做實際分析解讀,幫助開發(fā)者理解鴻蒙操作系統(tǒng)的底層邏輯,開發(fā)更適合系統(tǒng)邏輯的架構(gòu)代碼。 以
    發(fā)表于 12-16 15:10

    分布式通信的原理和實現(xiàn)高效分布式通信背后的技術(shù)NVLink的演進

    大型模型的大小已經(jīng)超出了單個 GPU 的范圍。所以就需要實現(xiàn)多個 GPU 的模型訓(xùn)練,這種訓(xùn)練方式就涉及到了分布式通信和 NVLink。 當(dāng)談及分布式通信和 NVLink 時,我們進
    的頭像 發(fā)表于 11-18 09:39 ?1267次閱讀
    <b class='flag-5'>分布式</b>通信的原理和<b class='flag-5'>實現(xiàn)</b>高效<b class='flag-5'>分布式</b>通信背后的<b class='flag-5'>技術(shù)</b>NVLink的演進

    淺談屋頂分布式光伏發(fā)電技術(shù)的設(shè)計與應(yīng)用

    【摘要】為了緩解城市用電緊張袁降低人們的用電成本,可以在工業(yè)園區(qū)、辦公樓屋頂?shù)葓鏊鶓?yīng)用屋頂分布式光伏發(fā)電技術(shù)進行就近轉(zhuǎn)換、并網(wǎng)發(fā)電袁充分利用建筑物屋頂?shù)奶栙Y源。概述屋頂分布式光伏發(fā)電技術(shù)
    的頭像 發(fā)表于 11-11 15:10 ?1833次閱讀
    淺談屋頂<b class='flag-5'>分布式</b>光伏發(fā)電<b class='flag-5'>技術(shù)</b>的設(shè)計與應(yīng)用

    分布式光纖聲波傳感技術(shù)的工作原理

    分布式光纖聲波傳感技術(shù)(Distributed Acoustic Sensing,DAS)是一種利用光纖作為傳感元件,實現(xiàn)對沿光纖路徑上的環(huán)境參數(shù)進行連續(xù)分布式測量的
    的頭像 發(fā)表于 10-18 14:50 ?2870次閱讀
    <b class='flag-5'>分布式</b>光纖聲波傳感<b class='flag-5'>技術(shù)</b>的工作原理
    主站蜘蛛池模板: www.操操操.com | 18美女扒开尿口无遮挡 | 天天插插插 | 美女把尿口扒开让男人桶出水 | 黄色短视频软件 | 欧美成人猛男性色生活 | 亚洲综合精品成人啪啪 | 色噜噜噜噜噜在线观看网站 | 69国产成人综合久久精品 | 亚洲成a人片在线观看www | 久久人人爽爽爽人久久久 | 亚洲成在人线中文字幕 | 末成年一级在线看片 | 深夜视频在线观看免费 | 怡红院精品视频 | 成年1314在线观看 | 亚洲第一网站快活影院 | 日本超黄视频 | 极品美女洗澡后露粉嫩木耳视频 | 一级特黄aaa大片免费看 | 亚洲国产精品久久久久婷婷软件 | 亚洲成年人在线 | 成人精品人成网站 | 色婷婷亚洲综合五月 | 91在线网址 | 色色就色色 | 口述他拿舌头进去我下面好爽 | 四虎最新入口 | videos另类重口tv| 91精品日本久久久久久牛牛 | 操你啦网站| 国产精品视频一区二区三区 | 2022年国产精品久久久久 | 人人人人凹人人爽人人澡 | 亚洲第一视频网 | 中文字幕一区二区精品区 | 91在线激情在线观看 | 美女视频黄a视频美女大全 美女视频一区二区 | 免费爱爱网址 | 色综合视频一区二区三区 | 三级网站在线看 |