成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[423587]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

介紹

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

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

camera子系統提供以下功能相關接口 :

  1. 相機拍照
  2. 相機預覽
  3. 相機錄像

架構

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

原理圖

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

搭建HarmonyOS環境

我們首先需要完成HarmonyOS開發環境搭建,可參照如下步驟進行。

安裝DevEco Studio,詳情請參考下載和安裝軟件。

設置DevEco Studio開發環境,DevEco Studio開發環境需要依賴于網絡環境,需要連接上網絡才能確保工具的正常使用,可以根據如下兩種情況來配置開發環境:

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

2.如果網絡不能直接訪問Internet,需要通過代理服務器才可以訪問,請參考配置開發環境。

開發者可以參考以下鏈接,完成設備調試的相關配置:

1.使用真機進行調試

2.使用模擬器進行調試

代碼結構解讀

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

相機模塊

核心類

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

上層初始化示例

該文件的main方法執行了創建camera的整個流程,并且在創建初始化好了camera后,根據用戶輸入的字符,對camera進行拍照,錄像,預覽功能的執行。

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

Camkit 是CameraKit類的全局的變量,這個主要提供上層的調用,這個類里面實際是通過cameraManager_對象進行調用相關的方法。圖中主要的流程分為以下幾個步驟:

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

根據這三個步驟,分析每一個步驟的流程,獲取CameraKit實例這一步,其實一層層調用,實現camera初始化的操作,以下是相關的調用流程

(1)獲取CameraKit流程

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

(2)GetCameraIds流程

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

CameraKit調用實際上是通過cameraManager_進行調用

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

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

(3)CreateCamera流程

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

CameraKit實際調用了CameraManagerImpl的CreateCamera方法

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

首先根據cameraId在cameraMapCache_中找到CameraImpl的位置,將CameraStateCallback回調注冊到CamerImpl中,CameraStateCallback是從應用層通過參數傳入進來,所以后續CameraImpl中的Configure,Release,OnCreate,OnCreateFailed等方法會通過回調,調用應用層的接口。最后調用CameraService的CreateCamera方法進行創建camera。

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

CameraService中主要通過回調OnCameraStatusChange方法,這個是在CameraManagerImpl類中實現的,CameraManagerImpl通過調用CameraService的Initialize(*this)實現回調接口注冊。

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

接下來看一下CameraManagerImpl類中的回調實現

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

調用cameraMapCache_中對應cameraId的OnCreate方法,其中device參數是CameraService中創建并傳給CameraImpl的,接下來看一下CameraImpl的OnCreate方法

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

首先在CameraImpl中保存一份device_, 其次在EventHandler中通過之前注冊的CameraStateCallback回調OnCreate方法,該回調是上層應用實現的,具體如下圖所示

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

主要配置了FrameStateCallback回調,以及設置了EventHandler,然后保存CameraImpl,應用層拿到了CameraImpl的對象,并且賦值給cam_對象,后續的camera操作都是通過cam_進行的。

上層調用相機功能

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

應用層根據用戶輸入的字符進行拍照,開始錄像,開始預覽以及停止的操作,以下是拍照,錄像和預覽的時序圖

拍照流程

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

錄像流程

OpenHarmony 源碼解析之多媒體子系統(camera)-鴻蒙HarmonyOS技術社區

總結

通過本文的學習可以大致了解Camera的初始化流程,明白Camera的創建過程,并且對Camera的拍照,錄像等功能有詳細的了解。

OpenHarmony代碼中提供了使用camera的

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2023-04-06 09:14:11

多模輸入子系統鴻蒙

2021-09-17 14:38:58

鴻蒙HarmonyOS應用

2022-01-06 16:17:58

鴻蒙HarmonyOS應用

2021-11-08 15:04:47

鴻蒙HarmonyOS應用

2022-02-17 20:57:07

OpenHarmon操作系統鴻蒙

2021-12-17 16:42:09

鴻蒙HarmonyOS應用

2021-09-18 14:40:37

鴻蒙HarmonyOS應用

2023-04-12 15:31:11

系統服務管理鴻蒙

2022-01-10 15:30:11

鴻蒙HarmonyOS應用

2013-12-17 13:29:04

iOS開發多媒體

2013-12-17 11:18:53

iOS開發多媒體API

2021-11-18 10:28:03

鴻蒙HarmonyOS應用

2022-05-10 11:17:27

電話子系統數據服務模塊

2011-08-02 10:36:02

iOS開發 SDK 多媒體

2023-06-28 15:00:02

開源鴻蒙輸入系統架構

2022-05-24 15:46:51

Wi-FiSTA模式

2022-01-13 10:11:59

鴻蒙HarmonyOS應用

2022-06-07 10:33:29

Camera組件鴻蒙

2022-05-20 10:32:49

事件循環器事件隊列鴻蒙

2010-01-27 13:52:15

Android多媒體框
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一卡二卡 | 成人在线免费电影 | 亚洲精品欧美 | 嫩草视频网 | 中文字幕日韩在线观看 | 日韩在线中文 | 欧美涩涩网 | 中文精品视频 | 成年女人免费v片 | 一级片av | 一级在线 | 国产精品黄色 | 国产亚洲成av人在线观看导航 | 久久亚洲欧美日韩精品专区 | 成人精品免费视频 | 久久电影一区 | 免费久| 欧美男人天堂 | 亚洲区一区二 | 日韩av电影在线观看 | www国产亚洲精品久久网站 | 福利视频一区二区三区 | 成人影视网址 | 国产免费拔擦拔擦8x高清 | 欧美 中文字幕 | 亚洲第一av| 亚洲国产激情 | 中文字幕人成乱码在线观看 | 日本在线播放 | aaa综合国产 | 欧美一区二区三区电影 | 欧美日韩国产一区 | 福利一区二区 | 国产99热精品 | 久久久久久久99 | 国产精品一区二区不卡 | 欧美在线视频a | jlzzjlzz国产精品久久 | 国产一区二区日韩 | 欧美999 | 婷婷色国产偷v国产偷v小说 |