前言:前一篇介紹了Camera2相關類作用及功能,並未對源碼部分了解,今天了解了在Camera2框架中openCamera及session過程,Agenda如下:
在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乾貨,源碼分析,歡迎關注我的微信公眾號,掃一掃下方二維碼或者長按識別二維碼,即可關注。