自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)

系統(tǒng)
媒體子系統(tǒng)為開發(fā)者提供一套接口,方便開發(fā)者使用系統(tǒng)的媒體資源,本文主要介紹多媒體下的Camera模塊。大致了解Camera的初始化流程,明白Camera的創(chuàng)建過程,并且對(duì)Camera的拍照,錄像等功能有詳細(xì)的了解。

[[423587]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

介紹

媒體子系統(tǒng)為開發(fā)者提供一套接口,方便開發(fā)者使用系統(tǒng)的媒體資源,本文主要介紹多媒體下的Camera模塊。

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

camera子系統(tǒng)提供以下功能相關(guān)接口 :

  1. 相機(jī)拍照
  2. 相機(jī)預(yù)覽
  3. 相機(jī)錄像

架構(gòu)

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

原理圖

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

搭建HarmonyOS環(huán)境

我們首先需要完成HarmonyOS開發(fā)環(huán)境搭建,可參照如下步驟進(jìn)行。

安裝DevEco Studio,詳情請(qǐng)參考下載和安裝軟件

設(shè)置DevEco Studio開發(fā)環(huán)境,DevEco Studio開發(fā)環(huán)境需要依賴于網(wǎng)絡(luò)環(huán)境,需要連接上網(wǎng)絡(luò)才能確保工具的正常使用,可以根據(jù)如下兩種情況來配置開發(fā)環(huán)境:

1.如果可以直接訪問Internet,只需進(jìn)行下載HarmonyOS SDK操作。

2.如果網(wǎng)絡(luò)不能直接訪問Internet,需要通過代理服務(wù)器才可以訪問,請(qǐng)參考配置開發(fā)環(huán)境。

開發(fā)者可以參考以下鏈接,完成設(shè)備調(diào)試的相關(guān)配置:

1.使用真機(jī)進(jìn)行調(diào)試

2.使用模擬器進(jìn)行調(diào)試

代碼結(jié)構(gòu)解讀

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

相機(jī)模塊

核心類

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

上層初始化示例

該文件的main方法執(zhí)行了創(chuàng)建camera的整個(gè)流程,并且在創(chuàng)建初始化好了camera后,根據(jù)用戶輸入的字符,對(duì)camera進(jìn)行拍照,錄像,預(yù)覽功能的執(zhí)行。

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

Camkit 是CameraKit類的全局的變量,這個(gè)主要提供上層的調(diào)用,這個(gè)類里面實(shí)際是通過cameraManager_對(duì)象進(jìn)行調(diào)用相關(guān)的方法。圖中主要的流程分為以下幾個(gè)步驟:

  1. 獲取CameraKit實(shí)例
  2. 調(diào)用camKit的GetCameraIds方法獲取攝像頭的id列表,根據(jù)id列表找到1080P分辨率的攝像頭id,如果沒有找到提示錯(cuò)誤信息,直接return。
  3. 調(diào)用camKit的CreateCamera方法,這個(gè)方法是camera初始化的核心

根據(jù)這三個(gè)步驟,分析每一個(gè)步驟的流程,獲取CameraKit實(shí)例這一步,其實(shí)一層層調(diào)用,實(shí)現(xiàn)camera初始化的操作,以下是相關(guān)的調(diào)用流程

(1)獲取CameraKit流程

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

(2)GetCameraIds流程

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

CameraKit調(diào)用實(shí)際上是通過cameraManager_進(jìn)行調(diào)用

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

CameraService初始化完成后,通過device和ability創(chuàng)建的CameraImpl實(shí)例存入cameraMapCache_變量中, GetCameraIds方法通過遍歷cameraMapCache_來獲取可用的cameraId列表。

(3)CreateCamera流程

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

CameraKit實(shí)際調(diào)用了CameraManagerImpl的CreateCamera方法

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

首先根據(jù)cameraId在cameraMapCache_中找到CameraImpl的位置,將CameraStateCallback回調(diào)注冊(cè)到CamerImpl中,CameraStateCallback是從應(yīng)用層通過參數(shù)傳入進(jìn)來,所以后續(xù)CameraImpl中的Configure,Release,OnCreate,OnCreateFailed等方法會(huì)通過回調(diào),調(diào)用應(yīng)用層的接口。最后調(diào)用CameraService的CreateCamera方法進(jìn)行創(chuàng)建camera。

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

CameraService中主要通過回調(diào)OnCameraStatusChange方法,這個(gè)是在CameraManagerImpl類中實(shí)現(xiàn)的,CameraManagerImpl通過調(diào)用CameraService的Initialize(*this)實(shí)現(xiàn)回調(diào)接口注冊(cè)。

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

接下來看一下CameraManagerImpl類中的回調(diào)實(shí)現(xiàn)

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

調(diào)用cameraMapCache_中對(duì)應(yīng)cameraId的OnCreate方法,其中device參數(shù)是CameraService中創(chuàng)建并傳給CameraImpl的,接下來看一下CameraImpl的OnCreate方法

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

首先在CameraImpl中保存一份device_, 其次在EventHandler中通過之前注冊(cè)的CameraStateCallback回調(diào)OnCreate方法,該回調(diào)是上層應(yīng)用實(shí)現(xiàn)的,具體如下圖所示

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

主要配置了FrameStateCallback回調(diào),以及設(shè)置了EventHandler,然后保存CameraImpl,應(yīng)用層拿到了CameraImpl的對(duì)象,并且賦值給cam_對(duì)象,后續(xù)的camera操作都是通過cam_進(jìn)行的。

上層調(diào)用相機(jī)功能

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

應(yīng)用層根據(jù)用戶輸入的字符進(jìn)行拍照,開始錄像,開始預(yù)覽以及停止的操作,以下是拍照,錄像和預(yù)覽的時(shí)序圖

拍照流程

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

錄像流程

OpenHarmony 源碼解析之多媒體子系統(tǒng)(camera)-鴻蒙HarmonyOS技術(shù)社區(qū)

總結(jié)

通過本文的學(xué)習(xí)可以大致了解Camera的初始化流程,明白Camera的創(chuàng)建過程,并且對(duì)Camera的拍照,錄像等功能有詳細(xì)的了解。

OpenHarmony代碼中提供了使用camera的

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2023-04-06 09:14:11

多模輸入子系統(tǒng)鴻蒙

2021-09-17 14:38:58

鴻蒙HarmonyOS應(yīng)用

2022-01-06 16:17:58

鴻蒙HarmonyOS應(yīng)用

2022-02-17 20:57:07

OpenHarmon操作系統(tǒng)鴻蒙

2021-09-18 14:40:37

鴻蒙HarmonyOS應(yīng)用

2021-11-08 15:04:47

鴻蒙HarmonyOS應(yīng)用

2021-12-17 16:42:09

鴻蒙HarmonyOS應(yīng)用

2023-04-12 15:31:11

系統(tǒng)服務(wù)管理鴻蒙

2013-12-17 11:18:53

iOS開發(fā)多媒體API

2022-01-10 15:30:11

鴻蒙HarmonyOS應(yīng)用

2013-12-17 13:29:04

iOS開發(fā)多媒體

2022-05-10 11:17:27

電話子系統(tǒng)數(shù)據(jù)服務(wù)模塊

2021-11-18 10:28:03

鴻蒙HarmonyOS應(yīng)用

2023-06-28 15:00:02

開源鴻蒙輸入系統(tǒng)架構(gòu)

2011-08-02 10:36:02

iOS開發(fā) SDK 多媒體

2022-05-24 15:46:51

Wi-FiSTA模式

2022-06-07 10:33:29

Camera組件鴻蒙

2022-01-13 10:11:59

鴻蒙HarmonyOS應(yīng)用

2022-05-20 10:32:49

事件循環(huán)器事件隊(duì)列鴻蒙

2010-01-27 13:52:15

Android多媒體框
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)