日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

假設(shè)設(shè)備A想要邀請(qǐng)另外一個(gè)設(shè)備B加入,AB任何一方都無(wú)需啟動(dòng)特別的廣播服務(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è)備之后,用戶(hù)就可以通過(guò)設(shè)備名選擇想要邀請(qǐng)的設(shè)備了。

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

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

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

3、應(yīng)用通訊

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

4、雙向通訊

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

poYBAGDe11iAYjSKAAC4vSv52A4989.png

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

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

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

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

使用了IDL定義了兩個(gè)通用的接口,分別用來(lái)進(jìn)行異步和同步調(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)用大部分都通過(guò)同步的方式進(jìn)行,用戶(hù)之間的繪畫(huà)數(shù)據(jù)通過(guò)異步接口傳輸,數(shù)據(jù)在用戶(hù)繪制的時(shí)候采集,每50ms左右發(fā)送一次,這個(gè)頻率可以大概保證用戶(hù)視覺(jué)上沒(méi)有卡頓,而又不至于因?yàn)榻涌谶^(guò)度調(diào)用導(dǎo)致卡頓或者耗電量過(guò)大。采集的繪畫(huà)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)大致如下:

enum action //動(dòng)作,表示落筆、移動(dòng)、提筆等動(dòng)作

int tagId //多點(diǎn)觸摸識(shí)別標(biāo)記

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

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

enum brushType //筆刷類(lèi)型

int brushSize //筆刷大小

enum brushColor //筆刷顏色

int layer //圖層

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

三、教程錄制與曲線平滑

1、教程制作

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

pYYBAGDe11iAeRLqAAFZODXCRPk798.png

2、曲線平滑

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

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)用的自我嘗試和突破,大大的增加了用戶(hù)在使用過(guò)程中的樂(lè)趣,為用戶(hù)帶來(lái)了全新的跨設(shè)備親子交互體驗(yàn),“Labo Lado兒童藝術(shù)創(chuàng)想”團(tuán)隊(duì)在未來(lái)將與更多的HarmonyOS開(kāi)發(fā)者一起,為用戶(hù)創(chuàng)作出更多更有趣的兒童創(chuàng)造類(lèi)應(yīng)用。

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

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

    關(guān)注

    2

    文章

    3283

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    AI Ceph 分布式存儲(chǔ)教程資料大模型學(xué)習(xí)資料2026

    的快速擴(kuò)縮容,分布式存儲(chǔ)必須支持模型文件的秒級(jí)分發(fā)。通過(guò)利用分層存儲(chǔ)策略,將冷數(shù)據(jù)歸檔至廉價(jià)的大容量 HDD,將熱數(shù)據(jù)(如活躍的模型權(quán)重)置于高性能 SSD,并結(jié)合全局命名空間的技術(shù),AI 分布式存儲(chǔ)
    發(fā)表于 05-01 17:35

    2022全新版!Java分布式架構(gòu)設(shè)計(jì)與開(kāi)發(fā)實(shí)戰(zhàn)(完結(jié))

    。 分庫(kù)分表帶來(lái)的挑戰(zhàn)遠(yuǎn)不止技術(shù)實(shí)現(xiàn)層面。庫(kù)查詢(xún)需要避免JOIN操作,可通過(guò)應(yīng)用層聚合或數(shù)據(jù)冗余解決;分布式事務(wù)需要采用兩階段提交或柔性事務(wù)補(bǔ)償機(jī)制;數(shù)據(jù)遷移則需要制定詳細(xì)的灰度方案
    發(fā)表于 03-30 15:20

    分布式 IO 選型注意事項(xiàng)

    在工業(yè) 4.0 浪潮推動(dòng)下,分布式 IO 作為工業(yè)互聯(lián)的核心底層設(shè)備,已成為制造業(yè)實(shí)現(xiàn)設(shè)備互聯(lián)、數(shù)據(jù)采集、柔性生產(chǎn)的關(guān)鍵支撐。本文將助力企業(yè)避開(kāi)選型誤區(qū),最大化發(fā)揮
    的頭像 發(fā)表于 12-30 14:14 ?563次閱讀
    <b class='flag-5'>分布式</b> IO 選型注意事項(xiàng)

    SC-3568HA:解鎖鴻蒙全權(quán)限API與分布式能力的工業(yè)控制平臺(tái)

    傳統(tǒng)嵌入式開(kāi)發(fā)面臨硬件碎片化、高權(quán)限功能缺失、分布式協(xié)同復(fù)雜及自動(dòng)化測(cè)試不足等痛點(diǎn)。SC-3568HA開(kāi)發(fā)板基于鴻蒙系統(tǒng),通過(guò)統(tǒng)一內(nèi)核抽象層和硬件驅(qū)動(dòng)框架解決兼容問(wèn)題,開(kāi)放全量系統(tǒng)AP
    的頭像 發(fā)表于 12-18 11:27 ?7648次閱讀
    SC-3568HA:解鎖<b class='flag-5'>鴻蒙</b>全權(quán)限API與<b class='flag-5'>分布式</b>能力的工業(yè)控制平臺(tái)

    PLC遠(yuǎn)程上下載在分布式設(shè)備運(yùn)維系統(tǒng)中的作用

    在工業(yè)4.0與物聯(lián)網(wǎng)技術(shù)深度融合的背景下,分布式設(shè)備運(yùn)維系統(tǒng)正面臨設(shè)備分散、管理復(fù)雜、響應(yīng)滯后等核心挑戰(zhàn)。PLC遠(yuǎn)程上下載技術(shù)作為
    的頭像 發(fā)表于 11-14 16:51 ?1435次閱讀

    工業(yè)數(shù)采網(wǎng)關(guān)在分布式設(shè)備運(yùn)維管理中的作用

    工業(yè)數(shù)采網(wǎng)關(guān)在分布式設(shè)備運(yùn)維管理中扮演著 數(shù)據(jù)樞紐、智能分析核心與遠(yuǎn)程控制中樞 的多重角色,其作用貫穿設(shè)備監(jiān)控、故障預(yù)警、運(yùn)維調(diào)度及能效優(yōu)化全流程,是提升分布式系統(tǒng)運(yùn)維效率、降低運(yùn)營(yíng)成
    的頭像 發(fā)表于 09-19 10:53 ?872次閱讀
    工業(yè)數(shù)采網(wǎng)關(guān)在<b class='flag-5'>分布式</b><b class='flag-5'>設(shè)備</b>運(yùn)維管理中的作用

    【節(jié)能學(xué)院】Acrel-1000DP分布式光伏監(jiān)控系統(tǒng)在奉賢平高食品 4.4MW 分布式光伏中應(yīng)用

    分布式光伏本地和遠(yuǎn)程通信方案,并研究分布式光伏采集模型的構(gòu)建、多源數(shù)據(jù)融合估計(jì)、面向分布式光伏的有功、無(wú)功功率優(yōu)化控制等關(guān)鍵技術(shù),實(shí)現(xiàn)了對(duì)小
    的頭像 發(fā)表于 08-23 08:04 ?3701次閱讀
    【節(jié)能學(xué)院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏監(jiān)控系統(tǒng)在奉賢平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中應(yīng)用

    分布式光伏發(fā)電監(jiān)測(cè)系統(tǒng)技術(shù)方案

    分布式光伏發(fā)電監(jiān)測(cè)系統(tǒng)技術(shù)方案 柏峰【BF-GFQX】一、系統(tǒng)目標(biāo) :分布式光伏發(fā)電監(jiān)測(cè)系統(tǒng)旨在通過(guò)智能化的監(jiān)測(cè)手段,實(shí)現(xiàn)對(duì)分布式光伏電站的
    的頭像 發(fā)表于 08-22 10:51 ?3530次閱讀
    <b class='flag-5'>分布式</b>光伏發(fā)電監(jiān)測(cè)系統(tǒng)<b class='flag-5'>技術(shù)</b>方案

    分布式設(shè)備管理平臺(tái)有哪些功能?哪個(gè)好用?

    在數(shù)字化浪潮中,分布式設(shè)備管理平臺(tái)成為各行業(yè)提升設(shè)備管理效率、優(yōu)化運(yùn)維流程的關(guān)鍵工具。這類(lèi)平臺(tái)不僅能夠?qū)?b class='flag-5'>分布廣泛、類(lèi)型多樣的設(shè)備進(jìn)行集中管控
    的頭像 發(fā)表于 07-07 17:07 ?962次閱讀
    <b class='flag-5'>分布式</b><b class='flag-5'>設(shè)備</b>管理平臺(tái)有哪些功能?哪個(gè)好用?

    開(kāi)鴻開(kāi)發(fā)板深度體驗(yàn):從開(kāi)源鴻蒙開(kāi)發(fā)到AI場(chǎng)景實(shí)踐

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

    ArkUI-X平臺(tái)技術(shù)落地-華為運(yùn)動(dòng)健康(一)

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

    鴻蒙5開(kāi)發(fā)寶藏案例分享---AI輔助圖文內(nèi)容高效編創(chuàng)

    這個(gè)案例完美展示了HarmonyOS在設(shè)備協(xié)同和AI能力上的優(yōu)勢(shì)。通過(guò)自由流轉(zhuǎn)實(shí)現(xiàn)設(shè)備無(wú)感切換,結(jié)合AI智能處理大幅提升創(chuàng)作效率。建議重點(diǎn)研究服務(wù)互通組件和
    發(fā)表于 06-12 11:40

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

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

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

    十年前藏的現(xiàn)金一樣驚喜!)這些藏在文檔深處的\"武功秘籍\",能幫我們輕松實(shí)現(xiàn)分布式游戲、端協(xié)同這些聽(tīng)起來(lái)很酷的功能??焐宪?chē),帶你解鎖鴻蒙開(kāi)發(fā)
    發(fā)表于 06-03 18:22

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(旅行訂票)

    : breakpoint === \'sm\' ? 80 : 20 }) 黑科技功能 : 上滑自動(dòng)隱藏篩選欄(手機(jī)專(zhuān)屬) 設(shè)備訂單同步(通過(guò)分布式能力) 實(shí)時(shí)價(jià)格波動(dòng)可視化圖表 ?**
    發(fā)表于 06-03 16:16
    济阳县| 濉溪县| 宝坻区| 呼玛县| 长垣县| 腾冲县| 嵊泗县| 米易县| 镇原县| 罗定市| 乡城县| 鄂尔多斯市| 瓦房店市| 屯昌县| 雷山县| 大理市| 新兴县| 甘洛县| 东光县| 松江区| 沭阳县| 凌源市| 醴陵市| 普陀区| 原平市| 六盘水市| 化隆| 岗巴县| 岱山县| 华容县| 界首市| 云安县| 乳源| 自贡市| 黄大仙区| 淄博市| 射阳县| 阳高县| 阳东县| 五莲县| 博乐市|