国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于鴻蒙的分布式創(chuàng)作播報應(yīng)用研究

2022-08-08 15:24:28潘炳征PANBingzheng
價值工程 2022年23期
關(guān)鍵詞:鴻蒙數(shù)據(jù)服務(wù)調(diào)用

潘炳征PAN Bing-zheng

(廣西師范大學(xué)計算機(jī)科學(xué)與工程學(xué)院/軟件學(xué)院,桂林 541004)

0 引言

鴻蒙是基于微內(nèi)核的全場景分布式操作系統(tǒng)[1]。物聯(lián)網(wǎng)設(shè)備的多樣性與現(xiàn)有操作系統(tǒng)特異性阻礙著設(shè)備間的有效協(xié)同,而鴻蒙從操作系統(tǒng)、設(shè)備通信及應(yīng)用程序等方面進(jìn)行了相應(yīng)的統(tǒng)一,有效解決了物聯(lián)網(wǎng)設(shè)備之間互聯(lián)的問題。

鴻蒙響應(yīng)物聯(lián)網(wǎng)時代的召喚,并非對標(biāo)安卓與IOS[2],借助微內(nèi)核、分布式等技術(shù)實(shí)現(xiàn)設(shè)備的全場景化,為用戶帶來一致、高效的體驗(yàn)。

1 相關(guān)概念

1.1 程序包結(jié)構(gòu)

鴻蒙應(yīng)用程序包由一個或若干個HAP 與pack.info 構(gòu)成,pack.info 用來描述每一HAP 的屬性。HAP 分為主HAP(簡稱Entry)與特征HAP(簡稱Feature),Entry 即針對特定設(shè)備的應(yīng)用程序入口,F(xiàn)eature 即應(yīng)用程序的動態(tài)特征模塊[3]。不同設(shè)備可根據(jù)不同的需求下載安裝不同的HAP,如此不必下載安裝整個應(yīng)用程序包,節(jié)省設(shè)備的存儲空間。程序包結(jié)構(gòu)如圖1 所示,該圖來源于鴻蒙開發(fā)者官網(wǎng)[3]。

圖1 鴻蒙應(yīng)用程序包結(jié)構(gòu)

1.2 Ability

Ability 是應(yīng)用能力的抽象,類型分為FA 與PA 兩種。FA 即Page Ability,PA 包括Service Ability 與Data Ability。一個PageAbility 由一個或若干個AbilitySlice 構(gòu)成,AbilitySlice 包含應(yīng)用程序單個頁面及其所有控制邏輯[4]。

1.3 Intent

Intent 用于對象之間傳遞信息,可通過其指定啟動目標(biāo)同時攜帶數(shù)據(jù),由Operation 以及Parameters 構(gòu)成[5]。常用于啟動與導(dǎo)航到Ability。

1.4 UI 框架

鴻蒙提供Java UI 框架與方舟開發(fā)框架。Java UI 提供細(xì)粒度的UI 編程接口,采用命令式編程規(guī)范,擁有最為豐富的API,使開發(fā)者更加靈活地進(jìn)行鴻蒙應(yīng)用開發(fā)。方舟開發(fā)框架提供高層UI 描述,采用聲明式編程規(guī)范,使開發(fā)更簡單,但其API 較為有限。鴻蒙生態(tài)尚屬于發(fā)展初期,組件相對缺乏,筆者認(rèn)為一些簡單功能的實(shí)現(xiàn)較目前主流的框架更繁瑣。

1.5 分布式數(shù)據(jù)服務(wù)

分布式數(shù)據(jù)庫是一種NoSQL 數(shù)據(jù)庫,采用鍵值對的形式組織、索引與存儲數(shù)據(jù)。

單版本分布式數(shù)據(jù)庫,以單個鍵值對為單位的形式將數(shù)據(jù)保存在本地,有且僅有一個鍵,當(dāng)一條數(shù)據(jù)在本地被修改時則會直接進(jìn)行修改,同時將最新的數(shù)據(jù)同步至遠(yuǎn)端設(shè)備。[6]

KvManagerConfig:用于配置KvManager 相關(guān)信息,包括應(yīng)用與網(wǎng)絡(luò)狀態(tài)等。

KvManagerFactory:根據(jù)KvManagerConfig 創(chuàng)建分布式數(shù)據(jù)庫的KvManager。

Options:用于配置KvStore 相關(guān)信息,包括數(shù)據(jù)庫備份、加密與自動同步選項(xiàng)等。

KvManager:負(fù)責(zé)管理分布式數(shù)據(jù)庫,根據(jù)Options 對分布式數(shù)據(jù)庫KvStore 進(jìn)行創(chuàng)建、打開、關(guān)閉與刪除操作。

KvStore:某一具體分布式數(shù)據(jù)庫,可對數(shù)據(jù)進(jìn)行增加、刪除、查詢與修改。

五者之間關(guān)系如圖2。

圖2 分布式數(shù)據(jù)庫對象之間關(guān)系

分布式數(shù)據(jù)服務(wù)包括服務(wù)接口、服務(wù)組件、存儲組件、同步組件以及通信適配層。應(yīng)用調(diào)用分布式數(shù)據(jù)服務(wù)接口進(jìn)行數(shù)據(jù)庫操作,數(shù)據(jù)服務(wù)接口基于數(shù)據(jù)服務(wù)組件所提供的能力將數(shù)據(jù)保存至存儲組件,存儲組件通過調(diào)用同步組件進(jìn)行同步數(shù)據(jù),同步組件將數(shù)據(jù)發(fā)送至通信適配層以此實(shí)現(xiàn)遠(yuǎn)端設(shè)備的數(shù)據(jù)同步;遠(yuǎn)端設(shè)備利用同步組件從通信適配層接受數(shù)據(jù),并同步至本端存儲組件,通過數(shù)據(jù)服務(wù)接口獲取數(shù)據(jù)并提供給本端應(yīng)用使用[7]。數(shù)據(jù)分布式運(yùn)作機(jī)制如圖3 所示,該圖來源于鴻蒙開發(fā)者官網(wǎng)[7]。

圖3 分布式運(yùn)作機(jī)制

2 應(yīng)用研究

應(yīng)用基于Codelabs 中的分布式手寫板以及AI 能力的語音播報系統(tǒng)案例進(jìn)行開發(fā)[7]。

主界面如圖4 所示,點(diǎn)擊不同的按鈕跳轉(zhuǎn)到不同的PageAbility。

圖4 主界面

2.1 頁面跳轉(zhuǎn)

PageAbility 之間的跳轉(zhuǎn)實(shí)現(xiàn)步驟如下:

①為組件設(shè)置點(diǎn)擊事件,后續(xù)操作在事件中編寫。②創(chuàng)建Intent 對象。③創(chuàng)建Operation 對象,設(shè)置與Intent對象相關(guān)的設(shè)備Id、包名以及Ability 名稱參數(shù),調(diào)用build()方法完成創(chuàng)建。④將Operation 對象設(shè)置到步驟②所創(chuàng)建的Intent 對象。⑤MainAbilitySlice 調(diào)用startAbility()方法,參數(shù)為Intent 對象。

2.2 分布式畫板

實(shí)現(xiàn)分布式畫板需要在config.json 文件中配置多設(shè)備協(xié)同所要求的的四個權(quán)限。后續(xù)實(shí)現(xiàn)步驟如下。

2.2.1 初始化分布式數(shù)據(jù)庫

①創(chuàng)建分布式數(shù)據(jù)庫管理對象。首先在當(dāng)前頁面上下文創(chuàng)建KvManagerConfig 對象,最后根據(jù)該對象創(chuàng)建KvManager 分布式數(shù)據(jù)庫管理器實(shí)例。②創(chuàng)建單版本分布式數(shù)據(jù)庫。首先創(chuàng)建Options 對象,其次將Options 對象設(shè)置相關(guān)的信息,最后基于Options 對象以及數(shù)據(jù)庫Id 標(biāo)識符,KvManager 實(shí)例調(diào)用getKvStore()方法獲得與打開單版本分布式數(shù)據(jù)庫實(shí)例。③訂閱分布式數(shù)據(jù)變化。首先在客戶端實(shí)現(xiàn)KvStoreObserver 接口, 本例中即在WriteAbilitySlice 類中定義內(nèi)部類及實(shí)現(xiàn)該接口;其次利用上述內(nèi)部類創(chuàng)建KvStoreObserver 對象;最后基于KvStoreObserver 對象,單版本分布式數(shù)據(jù)庫實(shí)例調(diào)用subscribe()方法完成單版本分布式數(shù)據(jù)庫的數(shù)據(jù)變化訂閱。

2.2.2 初始化畫布

封裝好的DrawPoint 類,存放所有繪制點(diǎn)的基本信息與繪圖[8];drawPoints()方法將數(shù)據(jù)庫中的點(diǎn)數(shù)據(jù)在畫布上繪制。①初始畫布。首先獲取一種畫筆顏色,其次生成DrawPoint 類對象,將該對象添加到布局當(dāng)中,最后調(diào)用drawPoints()方法進(jìn)行繪圖。②設(shè)置DrawPoint 類對象的繪制圖形回調(diào)函數(shù)。首先將點(diǎn)數(shù)據(jù)利用GsonUtil 工具類轉(zhuǎn)換成Json 格式字符串,最后利用單版本分布式數(shù)據(jù)庫實(shí)例調(diào)用putString()方法將Json 字符串寫入數(shù)據(jù)庫。③設(shè)置同步撤回按鈕的點(diǎn)擊事件。首先獲取DrawPoint 類對象中的點(diǎn)數(shù)據(jù);其次先移除點(diǎn)數(shù)據(jù)中的最后一個點(diǎn),再從后往前遍歷所有點(diǎn),將不屬于筆畫中的最后一個點(diǎn)進(jìn)行移除,直到遇到筆畫中的最后一個點(diǎn)結(jié)束循環(huán);最后將點(diǎn)數(shù)據(jù)重新設(shè)置到DrawPoint 類對象,更新單版本分布式數(shù)據(jù)庫實(shí)例。

2.2.3 設(shè)備連接

①在協(xié)同按鈕組件點(diǎn)擊事件中新建在線可同步設(shè)備選擇對話框。②在對話框的點(diǎn)擊事件中,根據(jù)所選設(shè)備Id啟動遠(yuǎn)程界面。首先根據(jù)設(shè)備的數(shù)量生成Intent 對象數(shù)組;其次為每個Intent 對象設(shè)置是否是遠(yuǎn)程、顏色以及數(shù)據(jù)庫標(biāo)識符參數(shù),再創(chuàng)建Operation 對象,同時將設(shè)備Id、包名、Ability 名稱以及多設(shè)備遠(yuǎn)程啟動標(biāo)識與Intent 對象相關(guān)聯(lián);最后啟動遠(yuǎn)程Ability。③在啟動遠(yuǎn)程界面后,單版本數(shù)據(jù)庫實(shí)例調(diào)用sync()方法同步遠(yuǎn)程數(shù)據(jù)庫。

2.3 文字播報

TTS 語音播報引擎由華為官方提供,該引擎基于華為智慧引擎,提供將文本進(jìn)行語音播報的能力[9]。實(shí)現(xiàn)文字播報步驟如下。①創(chuàng)建TTS 客戶端。創(chuàng)建TtsListener 監(jiān)聽器,重寫創(chuàng)建TTS 客戶端成功的回調(diào)函數(shù)。重寫方法如下,首先設(shè)置TtsParams 對象的設(shè)備Id,最后利用TtsParams 對象初始化TTS 客戶端。②轉(zhuǎn)換音頻并播報。在成功創(chuàng)建TTS 客戶端之后,調(diào)用speakText()方法將文本轉(zhuǎn)換成音頻并播放。

3 應(yīng)用分析

3.1 寫一寫

在本地端點(diǎn)擊設(shè)備按鈕彈出設(shè)備選擇對話框,選擇設(shè)備之后將拉起遠(yuǎn)程端。每一設(shè)備的筆跡都將同步,不同設(shè)備的筆跡顏色不盡相同,每一設(shè)備都可撤回筆跡。該功能可應(yīng)用于如下場景。親子之間、伙伴之間協(xié)同學(xué)習(xí)娛樂;學(xué)校課堂上師生教學(xué)互動;公司會議上分享交流等等。

3.2 聽一聽

聽一聽界面如圖5 所示。

圖5 聽一聽

在文本框輸入文本內(nèi)容后,點(diǎn)擊語音播報按鈕即可進(jìn)行文字播報。該功能可應(yīng)用如下場景。想聽某一段從其他應(yīng)用復(fù)制的文本;知識點(diǎn)的溫故復(fù)習(xí);啞人與他人之間的交流;未受過教育者學(xué)習(xí)漢語;視頻制作的簡易配音等等。

4 結(jié)語

本文僅從鴻蒙分布式以及AI 能力的簡單應(yīng)用進(jìn)行研究,而鴻蒙有眾多的能力與特性,其應(yīng)用的場景廣泛,這需要廣大開發(fā)者積極探索。鴻蒙作為國產(chǎn)操作系統(tǒng)的希望,其誕生是突破國外科技封鎖的重要里程碑,其生態(tài)建設(shè)需要每一開發(fā)者的積極努力。

猜你喜歡
鴻蒙數(shù)據(jù)服務(wù)調(diào)用
地理空間大數(shù)據(jù)服務(wù)自然資源調(diào)查監(jiān)測的方向分析
奇思妙想(4)
鴻蒙:打破安卓壟斷 所有權(quán)歸屬國家
鴻蒙來了
金橋(2021年7期)2021-07-22 01:55:34
華為一大批鴻蒙商標(biāo)等待審查
電腦報(2020年27期)2020-08-02 22:02:58
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
如何運(yùn)用稅收大數(shù)據(jù)服務(wù)供給側(cè)結(jié)構(gòu)性改革
中國商論(2016年34期)2017-01-15 14:24:18
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
基于頻繁子圖挖掘的數(shù)據(jù)服務(wù)Mashup推薦
宝鸡市| 乡宁县| 徐汇区| 林甸县| 白银市| 临夏市| 鸡西市| 毕节市| 灵丘县| 宁化县| 清涧县| 民勤县| 台安县| 南漳县| 古蔺县| 黔南| 疏勒县| 黄骅市| 斗六市| 新平| 砀山县| 苏尼特右旗| 永兴县| 中山市| 瑞安市| 山西省| 武隆县| 辉县市| 阜平县| 广安市| 浦东新区| 治多县| 梅州市| 肃宁县| 东明县| 华坪县| 乐清市| 阳山县| 汉寿县| 英德市| 湖北省|