Android Multimedia框架總結(十六)Camera2框架之openCamera及session過程
阿新 • • 發佈:2019-02-03
前言:前一篇介紹了Camera2相關類作用及功能,並未對原始碼部分了解,今天瞭解了在Camera2框架中openCamera及session過程,Agenda如下:
- CameraManager的openCamera方法
- openCameraDeviceUserAsync
- CameraDeviceImpl
- getCameraService
- 建立Session相關回調
在Activity或Fragement的onResume()時呼叫openCamera,
CameraManager中的openCamera方法:
接著看下openCameraDeviceUserAsync方法,從名字上理解,使用者非同步開啟Camera device,
查詢給定的CameraDevice的容量,cameraId,表示傳入是有攝像頭,還是後攝像頭,這個容量是不可變的。
android.hardware.camera2.impl.CameraDeviceImpl的建構函式:
接著看下CameraManagerGlobal.get().getCameraService();
獲取ICameraService,可能為空,當camera service不可用時,如果上次用Camera Service就已經掛了,將會重啟這個service。
當服務可用時,連線Camera Serivce,並設定一些對應的listeners,如果服務已經啟動,什麼也不做,設定mCameraService指向合理的引用,如果連線不成功時。
當openCamera後,開始可以建立Session了,看下CameraCaptureSession$StateCallback的回撥
第一時間獲得部落格更新提醒,以及更多android乾貨,原始碼分析,歡迎關注我的微信公眾號,掃一掃下方二維碼或者長按識別二維碼,即可關注。
如果你覺得好,隨手點贊,也是對筆者的肯定,也可以分享此公眾號給你更多的人,原創不易