Java层 :Frameworks\base\core\java\android\hardware\Camera.java
JNI: Frameworks\base\core\jni\android_hardware_Camera.cpp
C++: Frameworks\av\include,Frameworks\av\camera,Frameworks\av\services\camera
第一部分, 也即第一组binder;PS:这里发起链接,获取具体模组的代理,在App进程
ICameraClient, 对应的代理类为BpCameraClient, 对应的服务类为BnCameraClient(抽象类), Camera(具体的实现类),另外 Camera还有一个父类BaseCamera
用于发送链接请求,接收回调 第二部分, 也即第二组Binder; PS:这里只是用来选择、管理模组,并且在服务进程
ICameraService, 对应的代理类为BpCameraService, 对应的服务类为 抽象类BnCameraService, 实现类CameraService
用于接收请求,管理ICamera 第三部分,也即第三组Binder;PS:这里对应Device 即具体模组,在服务进程
ICamera, 对应的代理类为BpCamera,对应的服务类 抽象类为BnCamera, 实现类为Client, 其同时也继承BasicClient, 并且有子类CameraClient, Camera2Client
用于管理具体的摄像头模组
调用逻辑
Camera.java 通过 JNI android_hardware_Camera 创建c++ 层Camera对象, 在BaseCamera中获取ICameraServcie的代理(这个Binder服务已经注册到ServiceManager,可以通过名称获取),通过ICameraService代理向CameraService发起链接请求 并且将ICameraClient 作为回调发送到CameraService, 收到请求之后,CameraService 会根据系统版本选择new CameraClient 或者 Camera2Client ,并且将ICameraClient 传入Client中;即每一个CameraClient 都有一个对应的回调。 然后发起链接的BaseCamera 从reply中读取出ICamera的代理BpCamera。 最后就可以通过BpCamera 控制摄像头的预览拍照等功能。

android Camera 结构的更多相关文章

  1. 【转】android camera(三):camera V4L2 FIMC

    关键词:android  camera CMM 模组 camera参数  CAMIF   V4L2  平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos ...

  2. Android 源代码结构(转)

    简介 在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试.但是,如果目标版本的SDK没有关联对应版本的源代码的 ...

  3. Android 源代码结构

    简介 在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试.但是,如果目标版本的SDK没有关联对应版本的源代码的 ...

  4. Android Camera开发经验总结以及踩过的那些坑

    写在开头 需求方:上传试卷的时候,用户自己拍的照片有很多问题.如:不清晰.图片歪了.错误图片等.我们要是能够对拍摄照片进行识别处理就好了,能够裁切矫正就更好了,最好可以像二维码扫描一样,直接识别处理- ...

  5. Android Camera 通过V4L2与kernel driver的完整交互过程

    http://blog.chinaunix.net/uid-26215986-id-3552456.html 原文地址:Android Camera 通过V4L2与kernel driver的完整交互 ...

  6. android camera jni调用

    http://www.mamicode.com/info-detail-1002139.html how to compile  library of native camera for androi ...

  7. qcom Android Camera【转】

    本文转载自:http://blog.csdn.net/Wilsonboliu/article/details/54949196 1.总体架构 Android Camera 框架从整体上看是一个 cli ...

  8. 高通Android camera运行流程【转】

    本文转载自:http://blog.csdn.net/unicornkylin/article/details/13293295 1.总体架构 Android Camera 框架从整体上看是一个 cl ...

  9. MTK Android Camera运行流程

    Android Camera 运行流程 总体架构1.CameraService服务的注册2.Client端的应用层到JNI层Camera App-JNI3.Client到Service的连接4.HAL ...

随机推荐

  1. php函数间的参数传递(值传递/引用传递)

    php:函数间的参数传递 1.值传递 代码如下: <?php function exam($var1){ $var1++: echo "In Exam:" . $var1 . ...

  2. java中Class.getResource用法

    用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file ...

  3. Deis logo 开源PaaS系统 Deis

    Deis 是一个 Django/Celery API 服务器.Python CLI 和一组 Chef cookbooks 合并起来提供一个类似 Heroku 的应用平台,用于公有云和私有云.Deis ...

  4. Libgls 1.0.1 发布,OpenGL 立体渲染

    Libgls 1.0.1 只是修复了一些小问题,更新了 FindGLS.cmake 脚本. Libgls 允许 OpenGL 立体渲染,不需要硬件支持四缓冲立体.支持许多立体显示模式,从立体眼镜的3D ...

  5. ASP.NET MVC学习之控制器篇

    一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...

  6. 动手写一个Remoting接口测试工具(附源码下载)

    基于.NET开发分布式系统,经常用到Remoting技术.在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间.所以,我想写一个能自 ...

  7. atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php

    atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php \ 1. 泛型历史 1 由来 1 2. 泛型的机制编辑 1 机制 1 编译机制 2 3. 泛型方法定义1::前定义 ...

  8. paip.java 注解的详细使用代码

    paip.java 注解的详细使用代码 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...

  9. UICollectionView基础

    初始化部分: UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayout alloc]init]; self.myColl ...

  10. Maven系列--"maven-compiler-plugin"的使用

    maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,它就会用maven-compiler-plugin默认的jdk版本来进行处理,这样就容易出现版本不匹配的问题,以 ...