第15章_HarmonyOs開發(fā)圖解之 相機
第15章 HarmonyOs開發(fā)圖解之 相機HarmonyOS 學習系統(tǒng) | 階段三高級深耕期學習目標序號能力1掌握 HarmonyOS 相機開發(fā)的核心流程獲取設備 - 配置 - 預覽 - 拍照2理解 CameraKit、Camera、FrameConfig 三層架構(gòu)3能夠?qū)崿F(xiàn)預覽、拍照、連拍和錄像功能核心圖解內(nèi)容講解15.1 相機開發(fā)概述HarmonyOS 的相機開發(fā)基于三層架構(gòu)CameraKit選角導演選擇攝像頭 -Camera攝影機實際拍攝設備 -FrameConfig拍攝腳本定義預覽/拍照/連拍。Surface 則是監(jiān)視器屏幕決定了畫面顯示在哪里。生活化類比相機開發(fā)就像指揮一場拍攝CameraKit是選角導演選擇哪個攝像頭——前置/后置Camera是攝影機實際的拍攝設備FrameConfig是拍攝腳本定義拍什么類型——預覽/拍照/連拍Surface是監(jiān)視器屏幕畫面顯示在哪里。流程是先選角獲取相機 ID再架設攝影機createCamera然后排練configure 配置 Surface最后開拍triggerLoopingCapture 預覽 / triggerSingleCapture 拍照。15.2 相機開發(fā)核心流程// 1. 獲取相機設備列表CameraKitcameraKitCameraKit.getInstance(context);String[]cameraIdscameraKit.getCameraIds();// 2. 創(chuàng)建相機實例cameraKit.createCamera(cameraIds[0],cameraStateCallback,eventHandler);// 3. 相機創(chuàng)建成功回調(diào)中配置 SurfaceOverridepublicvoidonCreated(Cameracamera){CameraConfig.BuilderbuildernewCameraConfig.Builder();builder.addSurface(previewSurface);// 預覽 Surfacebuilder.addSurface(pictureSurface);// 拍照 Surfacebuilder.setFrameStateCallback(frameStateCallback,eventHandler);camera.configure(builder.build());}// 4. 配置完成回調(diào)中開始預覽OverridepublicvoidonConfigured(Cameracamera){FrameConfigpreviewConfigcamera.getFrameConfigBuilder(FrameConfig.FRAME_CONFIG_PREVIEW).build();camera.triggerLoopingCapture(previewConfig);// 開始預覽}// 5. 拍照FrameConfigpictureConfigcamera.getFrameConfigBuilder(FrameConfig.FRAME_CONFIG_PICTURE).build();camera.triggerSingleCapture(pictureConfig);15.3 相機能力查詢不同設備的相機能力差異極大開發(fā)前務必查詢// 查詢相機支持的分辨率和幀率CameraAbilityabilitycameraKit.getCameraAbility(cameraIds[0]);Size[]sizesability.getSupportedSizes(FrameConfig.FRAME_CONFIG_PREVIEW);for(Sizesize:sizes){HiLog.info(TAG,支持預覽分辨率: size.widthxsize.height);}15.4 相機權限清單權限用途必要性ohos.permission.CAMERA使用相機硬件必選ohos.permission.MICROPHONE錄像時錄音可選ohos.permission.WRITE_MEDIA保存照片/視頻到外部存儲可選ohos.permission.MEDIA_LOCATION保存位置信息到照片可選代碼速查卡API功能示例CameraKit.getInstance(ctx)獲取 CameraKit 實例CameraKit.getInstance(context)getCameraIds()獲取相機 ID 列表cameraKit.getCameraIds()createCamera(id, cb, handler)創(chuàng)建相機實例cameraKit.createCamera(ids[0], cb, handler)configure(config)配置相機 Surfacecamera.configure(config)triggerLoopingCapture(fc)開始預覽循環(huán)捕獲camera.triggerLoopingCapture(previewConfig)triggerSingleCapture(fc)拍照單次捕獲camera.triggerSingleCapture(pictureConfig)getCameraAbility(id)查詢相機能力cameraKit.getCameraAbility(cameraId)release()釋放相機資源camera.release()與 Android/iOS 對比特性HarmonyOSAndroidiOS相機 APICameraKit CameraCamera2 API / CameraXAVFoundation (AVCaptureSession)預覽方式SurfaceProvider SurfaceSurfaceView / PreviewViewAVCaptureVideoPreviewLayer拍照方式triggerSingleCaptureImageReader CaptureRequestAVCapturePhotoOutput相機選擇cameraIds[0]/[1]CameraCharacteristics.LENS_FACINGAVCaptureDevice.default()能力查詢getCameraAbility()CameraCharacteristicsAVCaptureDevice.DeviceType?? 踩坑回憶錄為什么相機一直打開失敗我寫了一個帶相機的 App啟動時直接調(diào)用CameraKit.getInstance()結(jié)果總是返回 null。排查后發(fā)現(xiàn)——另一個相機 App 還在后臺運行HarmonyOS 規(guī)定同一時刻只有一個相機應用能運行因為攝像頭是獨占硬件資源。正確做法是先檢查相機是否可用提示用戶關閉其他相機 App或者使用try-catch捕獲異常并給出友好提示。另外不同設備的相機能力差異極大。我曾在 A 設備上完美運行的 4K 預覽在 B 設備上直接黑屏——因為 B 設備最高只支持 1080P 預覽。開發(fā)前務必用CameraKit.getCameraAbility()查詢支持的分辨率和幀率不要硬編碼。必做實操任務序號任務難度1實現(xiàn)相機預覽功能在 SurfaceProvider 上顯示實時畫面中2實現(xiàn)拍照功能將照片保存到本地中3實現(xiàn)前后攝像頭切換中4查詢設備相機能力并展示支持的分辨率列表低5實現(xiàn)連拍功能triggerBurstCapture高學習檢查清單能說出相機開發(fā)的核心流程CameraKit - Camera - FrameConfig能實現(xiàn)相機預覽并在 SurfaceProvider 上顯示能實現(xiàn)拍照并保存照片知道相機是獨占資源需要處理被占用的情況能使用 getCameraAbility 查詢設備相機能力能正確聲明相機相關權限能在 Ability 生命周期中正確釋放相機資源理解 FRAME_CONFIG_PREVIEW 和 FRAME_CONFIG_PICTURE 的區(qū)別進階方向結(jié)合第 13 章視頻能力實現(xiàn)視頻錄制 App實現(xiàn)自定義相機 UI手動對焦、曝光調(diào)節(jié)、濾鏡等探索相機與 AI 能力的結(jié)合人臉檢測、掃碼等理解 FRAME_CONFIG_PREVIEW 和 FRAME_CONFIG_PICTURE 的區(qū)別進階方向結(jié)合第 13 章視頻能力實現(xiàn)視頻錄制 App實現(xiàn)自定義相機 UI手動對焦、曝光調(diào)節(jié)、濾鏡等探索相機與 AI 能力的結(jié)合人臉檢測、掃碼等

相關新聞

Alamofire初探

Alamofire初探

Alamofire初探一. Alamofire概述二. URLSesstion基礎三、TCP的三次握手四、TCP數(shù)據(jù)的傳輸過程五、TCP的四次揮手一. Alamofire概述 對于使用Objective-C的開發(fā)者,一定非常熟悉AFNetworking這個網(wǎng)絡框架。在蘋果推出的Swift之后,AFNetworking的作者專門用…

2026/7/28 19:18:31 閱讀更多
第14章_HarmonyOs開發(fā)圖解 圖像

第14章_HarmonyOs開發(fā)圖解 圖像

第14章 HarmonyOs開發(fā)圖解 圖像HarmonyOS 學習系統(tǒng) | 階段三:高級深耕期學習目標序號能力1掌握圖像解碼(ImageSource)與編碼(ImagePacker)的完整流程2能夠使用 PixelMap 進行像素級操作3掌握圖像縮放、裁剪、EXIF 信息…

2026/7/28 19:18:31 閱讀更多
AI監(jiān)控濫用已致37起跨國訴訟:企業(yè)級倫理審查清單(含實時行為分析、情感識別、員工監(jiān)工三大禁區(qū))

AI監(jiān)控濫用已致37起跨國訴訟:企業(yè)級倫理審查清單(含實時行為分析、情感識別、員工監(jiān)工三大禁區(qū))

更多請點擊: https://kaifayun.com 第一章:AI監(jiān)控濫用已致37起跨國訴訟:企業(yè)級倫理審查清單(含實時行為分析、情感識別、員工監(jiān)工三大禁區(qū)) 全球范圍內(nèi),AI驅(qū)動的職場監(jiān)控系統(tǒng)正引發(fā)前所未有的法律與倫理危…

2026/7/29 4:56:04 閱讀更多
Verilog計數(shù)器設計全解析:從基礎原理到高級應用與避坑指南

Verilog計數(shù)器設計全解析:從基礎原理到高級應用與避坑指南

1. 從“數(shù)數(shù)”到“時序控制”:計數(shù)器的核心價值在數(shù)字電路和FPGA/ASIC設計的世界里,計數(shù)器(Counter)可能是你接觸到的第一個,也是貫穿整個職業(yè)生涯最基礎、最核心的時序邏輯電路。它遠不止是“數(shù)數(shù)”那么簡單。當你需要…

2026/7/29 4:56:04 閱讀更多
步進電機驅(qū)動器核心參數(shù)解析與實戰(zhàn)選型指南

步進電機驅(qū)動器核心參數(shù)解析與實戰(zhàn)選型指南

1. 項目概述:從“會轉(zhuǎn)”到“轉(zhuǎn)得好”的必經(jīng)之路提起步進電機,很多搞過單片機、玩過3D打印機或者DIY過一些小裝置的朋友肯定不陌生。它最大的特點就是“聽話”——給一個脈沖,它就轉(zhuǎn)一個固定的角度,開環(huán)控制,結(jié)構(gòu)簡單&a…

2026/7/29 4:46:03 閱讀更多
面試官大笑:“一個任務拆給 5 個 Subagent 并行跑,不比 1 個快 5 倍?“我搖頭:“快不了,還可能更慢“

面試官大笑:“一個任務拆給 5 個 Subagent 并行跑,不比 1 個快 5 倍?“我搖頭:“快不了,還可能更慢“

前兩個月,我在重構(gòu) AlgoMooc 網(wǎng)站過程中,發(fā)現(xiàn)一個問題:在 Claude Code 里把一個任務拆給 5 個 Subagent 并行跑,結(jié)果可能比 1 個 agent 從頭干到尾還慢? 大多數(shù)人的第一反應是反過來的:活是并行干的&#…

2026/7/29 0:15:24 閱讀更多