Camera2初始化的应用层流程分析

本文深入分析了Camera2应用层的初始化流程,包括创建OneCameraOpener对象、ModuleManager的模块注册以及CaptureModule的初始化。在CameraActivity的onCreateTasks方法中,首先通过Camera2OneCameraOpenerImpl获取OneCameraOpener,接着注册各种模块如photo、video等。CaptureModule的init方法中,打开和启动预览是关键,使用异步任务执行openCameraAndStartPreview,调用框架层的CameraManager.openCamera进行设备打开。
摘要由CSDN通过智能技术生成

Camera2.0首先启动的是CameraActivity,而它继承自QuickActivity,在代码中你会发现没有重写OnCreate等生命 周期方法,因为此处采用的是模板方法的设计模式,在QuickActivity中的onCreate方法调用的是onCreateTasks等方法,所以 要看onCreate方法就只须看onCreateTasks方法即可:
//packages/apps/Camera2/src/com/android/camera/CameraActivity.java
1、初始化OneCameraOpener对象

       mOneCameraOpener = OneCameraModule.provideOneCameraOpener(
               mFeatureConfig,
                mAppContext,
                mActiveCameraDeviceTracker,
                ResolutionUtil.getDisplayMetrics(this));
        mOneCameraManager = OneCameraModule.provideOneCameraManager();
//获取OneCameraManager对象

2、建立模块信息
mModuleManager = new ModuleManagerImpl();

    ModulesInfo.setupModules(mAppContext, mModuleManager, mFeatureConfig);

3、进行初始化
mCurrentModule.init(this, isSecureCamera(), isCaptureIntent());

1、OneCameraModule.java /packages/apps/Camera2/src/com/android/camera/one

public static OneCameraOpener provideOneCameraOpener(

//创建OneCameraOpener对象
Optional manager =Camera2OneCameraOpenerImpl.create(
featureConfig,
context,
activeCameraDeviceTracker,
displayMetrics);
调用Camera2OneCameraOpenerImpl的create方法来获得一个OneCameraOpener对象,以供CameraActivity之后的操作使用

Camera2OneCameraOpenerImpl.java
/packages/apps/Camera

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值