主要Activity:

CameraActivity继承自QuickActivity,QuickActivity主要是为了解决在锁屏中的double resume问题;

 

主要的类/接口:

OneCameraOpener,是一个接口,里面就定义了一个open方法,用来打开相机设备;
Camera2OneCameraOpenerImpl实现了OneCameraOpener接口,其主要职能是通过CameraManager打开一个camera设备;

 

OneCameraManager,是一个接口,负责提供有关当前设备上可用摄像机硬件的详细信息;
Camera2OneCameraManagerImpl实现了OneCameraManager接口,也是通过CameraManager实现了接口中定义的方法;

 

CameraController,实现了两个接口分别是CameraAgent.CameraOpenCallback和CameraProvider;
CameraAgent,是一个抽象类,定义在frameworks/ex/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java,提供可能的相机设备操作的接口;
CameraOpenCallback是CameraAgent的一个内部接口。打开或关闭相机设备时的任何事件都会调用此接口,其中的错误回调与框架{@linkandroid.hardware.Camera.ErrorCallback}中定义的错误回调不同,后者在打开相机后使用。

public static interface CameraOpenCallback {    /**     * Callback when camera open succeeds.     */    public void onCameraOpened(CameraProxy camera);    /**     * Callback when {@link com.android.camera.CameraDisabledException} is     * caught.     *     * @param cameraId The disabled camera.     */    public void onCameraDisabled(int cameraId);    /**     * Callback when {@link com.android.camera.CameraHardwareException} is     * caught.     *     * @param cameraId The camera with the hardware failure.     * @param info The extra info regarding this failure.     */    public void onDeviceOpenFailure(int cameraId, String info);    /**     * Callback when trying to open the camera which is already opened.     *     *@param cameraId The camera which is causing the open error.     */    public void onDeviceOpenedAlready(int cameraId, String info);    /**     * Callback when {@link java.io.IOException} is caught during     * {@link android.hardware.Camera#reconnect()}.     *     * @param mgr The {@link CameraAgent}     *            with the reconnect failure.     */    public void onReconnectionFailure(CameraAgent mgr, String info);}

CameraProvider是Camera App内部定义的一个接口,定义相机提供者;
也就是说CameraController实现了打开和关闭设备时的回调接口&相机提供者接口;传入其中的CameraAgent通过CameraAgentFactory创建;
CameraAgentFactory定义在frameworks/ex/camera2/portability/src/com/android/ex/camera2/portability/CameraAgentFactory.java;

 

 

ModuleManager,模块管理器接口维护{@link ModuleManagerImpl.ModuleAgent};
ModuleManagerImpl,ModuleManager接口实现;内里有一组ModuleAgent数据;

private final SparseArray mRegisteredModuleAgents = new            SparseArray(2);

ModuleAgent,ModuleManager的一个内部接口,负责维护静态特性和模块的创建。
ModulesInfo,一个包含模块信息的类,并将它们注册到{@link com.android.camera.app.ModuleManager};其内的setupModules方法中注册了各种module,如PhotoModule、VideoModule等;

0123456    @integer/camera_mode_photo    @integer/camera_mode_video    @integer/camera_mode_refocus    @integer/camera_mode_photosphere    @integer/camera_mode_panorama    @integer/camera_mode_gcam    @integer/camera_mode_capture_intent

 

CameraAppUI,CameraAppUI集中控制跨模块共享的视图,而模块特定视图将在每个模块UI中处理;

更多相关文章

  1. NDK build编译的解析
  2. android retrofit End of input at line 1 column 1 path
  3. Android继承ViewGroup自定义流式布局
  4. Android实现短信自动回复,挂电话
  5. Android(安卓)VOIP拨打电话机制分析
  6. Android(安卓)RecyclerView —— 自定义分割线
  7. Android屏幕切换
  8. Android源码mm模块编译 & mm编译apk
  9. Settings模块

随机推荐

  1. Android之布局属性归纳
  2. Android之布局属性归纳
  3. android之android:paddingLeft和android:
  4. Android中的Theme和Style
  5. Android系统自带样式 (android:theme)
  6. Android分享到腾讯微薄,信息,新浪微薄,的实
  7. android中的style部分属性值介绍
  8. android之android:paddingLeft和android:
  9. android中的simple_list_item
  10. android 自由复制与粘贴功能