日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          "); //-->

          博客專欄

          EEPW首頁(yè) > 博客 > OpenHarmony新增兩個(gè)分布式能力!快來(lái)了解~

          OpenHarmony新增兩個(gè)分布式能力!快來(lái)了解~

          發(fā)布人:開(kāi)發(fā)者頭條 時(shí)間:2022-04-28 來(lái)源:工程師 發(fā)布文章

          分布式能力作為OpenHarmony操作系統(tǒng)的關(guān)鍵能力,一直備受關(guān)注,同時(shí)它也是開(kāi)源社區(qū)能力構(gòu)建的重點(diǎn)。在3月底發(fā)布的OpenHarmony v3.1 Release版本中,媒體子系統(tǒng)新增了兩個(gè)分布式能力:分布式媒體庫(kù)分布式相機(jī)。本期就帶大家一起來(lái)了解這兩個(gè)新增的分布式能力~

          一、萬(wàn)物互聯(lián)帶給多媒體框架的挑戰(zhàn)

          如今我們?cè)谏钪幸呀?jīng)被越來(lái)越多的電子設(shè)備所包圍。這些設(shè)備有不同的功能(音箱、大屏、攝像頭、冰箱等)、不同的交互界面(語(yǔ)音、觸屏、紅外遙控等),給人們提供了足夠便利的同時(shí),卻給開(kāi)發(fā)者帶來(lái)了巨大的挑戰(zhàn):

          1. 設(shè)備的硬件和功能差異巨大。

          這就導(dǎo)致了各產(chǎn)品應(yīng)用間存在天然的隔離,要實(shí)現(xiàn)設(shè)備之間的多媒體互通互助也困難重重。如何屏蔽設(shè)備間的差異,提供相對(duì)一致的多媒體能力接口?

          2. 隨著各種外圍電子設(shè)備的增加,各設(shè)備間的連接網(wǎng)絡(luò)也變得更加復(fù)雜。

          試想一下:當(dāng)你需要在藍(lán)牙音箱上播放電視的音頻時(shí),你不得不用遙控器在電視的菜單中進(jìn)行繁瑣的設(shè)置;當(dāng)你想將聲音切換到藍(lán)牙耳機(jī)時(shí),又不得不重新完成繁瑣的設(shè)置操作。這樣感覺(jué)是人在服務(wù)于這些設(shè)備,而不是設(shè)備服務(wù)于人。隨著更多的電子設(shè)備進(jìn)入人們的生活,復(fù)雜的硬件環(huán)境帶給人們的復(fù)雜操作會(huì)越來(lái)越多。如何在人們需要的時(shí)候給出最佳的組網(wǎng)方式,并且能夠?qū)崿F(xiàn)媒體數(shù)據(jù)傳輸?shù)淖罴崖酚桑?/span>

          3. 在全屋智能化的今天,“豐富的應(yīng)用場(chǎng)景”層出不窮。

          每個(gè)單一設(shè)備可能只有一個(gè)功能,比如:體脂秤、攝像頭、投影儀等,但是用戶的應(yīng)用場(chǎng)景卻大多集合了多種功能。如何讓不同的設(shè)備組織起來(lái),共同給用戶提供一個(gè)完整的媒體功能?

          如何解決上面這些問(wèn)題呢?這就需要構(gòu)建一個(gè)天然支持分布式的操作系統(tǒng)。OpenHarmony在初始設(shè)計(jì)階段就將焦點(diǎn)放在如何實(shí)現(xiàn)分布式能力上面,這使它天然具備分布式特性,能夠輕松實(shí)現(xiàn)設(shè)備間的硬件互助、數(shù)據(jù)共享、服務(wù)遷移,同時(shí)使應(yīng)用輕松接入分布式能力,給用戶提供順暢的跨設(shè)備交互體驗(yàn)。

          下面我們要介紹的兩個(gè)分布式能力——分布式媒體庫(kù)和分布式相機(jī),分別用于支撐媒體庫(kù)和相機(jī)的分布式場(chǎng)景,為用戶提供跨設(shè)備的多媒體交互體驗(yàn)。

          二、分布式媒體庫(kù)

          下面從框架圖和API接口的使用兩個(gè)方面,為大家介紹分布式媒體庫(kù)。

          1. 框架圖

          分布式媒體庫(kù)的框架圖如下:

          圖1 分布式媒體庫(kù)框架圖

          分布式媒體庫(kù)主要由以下兩部分組成:

          ● MediaLibrary JS API:通過(guò)JS API接口向應(yīng)用層提供媒體文件的管理和操作的能力。

          ● MediaLibraryDataAbility:通過(guò)SyncTable、RDB Utils、File Utils功能模塊,與媒體子系統(tǒng)外部的分布式數(shù)據(jù)庫(kù)和分布式文件系統(tǒng)交互,從而獲得對(duì)分布式數(shù)據(jù)的增刪改查能力。

          2. API接口的使用

          開(kāi)發(fā)者主要通過(guò)JS API接口來(lái)使用分布式媒體庫(kù)能力。下面通過(guò)兩個(gè)典型操作來(lái)講解如何使用分布式媒體庫(kù)的JS API接口:

          (1)獲取設(shè)備的networkId

          通過(guò)getActivePeers()接口可以獲取當(dāng)前組網(wǎng)中所有可訪問(wèn)的設(shè)備。獲取到的PeerInfo信息中包含一個(gè)networkId參數(shù),以此作為分布式數(shù)據(jù)庫(kù)訪問(wèn)的關(guān)鍵參數(shù),來(lái)區(qū)分要訪問(wèn)的設(shè)備。

          (2)使用networkId進(jìn)行數(shù)據(jù)操作

          MediaFetchOptions提供對(duì)媒體庫(kù)進(jìn)行訪問(wèn)操作的參數(shù)集合,其中的networkId參數(shù)會(huì)跟隨MediaFetchOptions一起通過(guò)getFileAssets()接口下發(fā)給媒體庫(kù)服務(wù)接口,并且依此來(lái)訪問(wèn)對(duì)應(yīng)設(shè)備上的數(shù)據(jù)。

          更多的接口詳情,請(qǐng)從碼云OpenHarmony項(xiàng)目的媒體庫(kù)JS API聲明文件中獲取。

          https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.multimedia.mediaLibrary.d.ts

          下面我們從系統(tǒng)相冊(cè)應(yīng)用的實(shí)現(xiàn)代碼中抽取幾個(gè)關(guān)鍵的代碼段,看看應(yīng)用訪問(wèn)分布式媒體庫(kù)的操作流程:

          系統(tǒng)相冊(cè)應(yīng)用的完整代碼及開(kāi)發(fā)說(shuō)明,從碼云OpenHarmony項(xiàng)目中獲取。

          https://gitee.com/openharmony/applications_photos

          三、分布式相機(jī)

          下面從框架圖和API接口的說(shuō)明兩個(gè)方面,為大家介紹分布式相機(jī)。

          1. 框架圖

          分布式相機(jī)的框架圖如下:

          圖2 分布式相機(jī)框架圖

          從圖2中可以看出,分布式相機(jī)框架(Distributed Hardware)分為主控端和被控端。設(shè)備B擁有本地相機(jī)設(shè)備,分布式組網(wǎng)中的設(shè)備A可以分布式調(diào)用設(shè)備B的相機(jī)設(shè)備。這種場(chǎng)景下,設(shè)備A是主控端,設(shè)備B是被控端,兩個(gè)設(shè)備通過(guò)軟總線進(jìn)行交互。VirtualCameraHAL作為硬件適配層(HAL)的一部分,負(fù)責(zé)和分布式相機(jī)框架中的主控端交互,將主控端CameraFramwork下發(fā)的指令傳輸給分布式相機(jī)框架的SourceMgr處理。SourceMgr則通過(guò)軟總線將控制信息傳遞給被控端的CameraClient,CameraClient直接通過(guò)調(diào)用被控端CameraFramwork的接口來(lái)完成對(duì)設(shè)備B相機(jī)的控制。從設(shè)備B反饋的預(yù)覽圖像數(shù)據(jù)會(huì)通過(guò)分布式相機(jī)框架的ChannelSink回傳到設(shè)備A的HAL層,進(jìn)而反饋給應(yīng)用。通過(guò)這種方式,設(shè)備A的應(yīng)用就可以像使用本地設(shè)備一樣使用設(shè)備B的相機(jī)。

          2. API接口的使用

          開(kāi)發(fā)者主要通過(guò)JS API接口來(lái)使用分布式相機(jī)能力。下面通過(guò)兩個(gè)典型操作來(lái)講解如何使用分布式相機(jī)的JS API接口:

          (1)獲取可用的相機(jī)設(shè)備

          通過(guò)getCameras()接口可以獲得當(dāng)前組網(wǎng)中所有可用的相機(jī)設(shè)備(包括分布式相機(jī)設(shè)備)。在獲取到的Camera信息中,有兩個(gè)參數(shù)需要關(guān)注:

          ● cameraId:相機(jī)設(shè)備的唯一標(biāo)識(shí)。

          ● connectionType:相機(jī)設(shè)備的連接類型。當(dāng)參數(shù)值為CAMERA_CONNECTION_REMOTE時(shí),表示此相機(jī)設(shè)備為分布式相機(jī)設(shè)備。

          (說(shuō)明:在分布式相機(jī)的 JS API中,所有的接口都是本地相機(jī)設(shè)備和分布式相機(jī)設(shè)備共用的,接口通過(guò)參數(shù)cameraId來(lái)指定執(zhí)行操作的相機(jī)設(shè)備。)

          (2)創(chuàng)建相機(jī)設(shè)備輸入流

          createCameraInput()接口為創(chuàng)建相機(jī)設(shè)備輸入流的接口,其中cameraId參數(shù)用于區(qū)分打開(kāi)哪個(gè)相機(jī)設(shè)備。如果傳入的是一個(gè)有效的分布式相機(jī)的cameraId,則自動(dòng)會(huì)觸發(fā)分布式相機(jī)特性。

          更多的接口詳情,請(qǐng)從碼云OpenHarmony項(xiàng)目Camera JS API聲明文件中獲取。

          https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.multimedia.camera.d.ts

          下面我們從系統(tǒng)相機(jī)應(yīng)用的實(shí)現(xiàn)代碼中抽取幾個(gè)關(guān)鍵的代碼段,看看應(yīng)用訪問(wèn)分布式相機(jī)的操作流程:

          系統(tǒng)相機(jī)應(yīng)用的完整代碼,請(qǐng)從從碼云OpenHarmony項(xiàng)目中獲取。

          https://gitee.com/openharmony/applications_camera

          四、結(jié)束語(yǔ)

          從開(kāi)放的代碼可以看出,當(dāng)前構(gòu)建的多媒體分布式能力還比較基礎(chǔ),部分分布式能力接口也還沒(méi)有向三方應(yīng)用開(kāi)放。我們會(huì)繼續(xù)努力,希望在下個(gè)版本上,分布式能力能擴(kuò)展到音頻、播控等更多特性,為大家提供更加豐富的分布式多媒體體驗(yàn)。

          OpenHarmony,加油吧!


          *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



          關(guān)鍵詞: 分布式

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉