众所周知,在Android中Camera采用了C/S架构,其中Camera server 与 Camera client之间通过Android Binder IPC机制进行通信.在Camera实现的框架中,除开HAL层以及驱动层以下是采用的C语言进行编写以外,其余的都是c++ 和java这两大经典面向对象的语言来实现的.网络上大部分的分析,是基于一个client端对server端的过程调用,一步一步的深入到驱动底层.而我自己,更愿意从对象的角度来分析camera的脉络.其实,整个Camera框架…
Android Camera 采用C/S架构,client 与server两个独立的线程之间(CameraService)使用Binder通信. 一 CameraService的注册. 1.手机开机后,会走init.rc流程,init.rc会启动MediaServer Service. service media /system/bin/mediaserver class main user root #### # google default #### # user media #### gr…
1. V4L2 1)简介 在Linux中,摄像头方面的标准化程度比较高,这个标准就是V4L2驱动程序,这也是业界比较公认的方式. V4L全称是Video for Linux,是Linux内核中标准的关于视频驱动程序,目前使用比较多的版本是Video for Linux 2,简称V4L2.它为Linux下的视频驱动提供了统一的接口,使得应用程序可以使用统一的API操作不同的视频设备.从内核空间到用户空间,主要的数据流和控制类均由V4L2驱动程序的框架来定义. V4L2驱动程序一般只提供Video数…
Android Camera 采用C/S架构,client 与server两个独立的线程之间使用Binder通信,这已经是众所周知的了.这里将介绍Camera从设备开机,到进入相机应用是如何完成初始化工作的. 首先既然Camera是利用binder通信,它肯定要将它的service注册到ServiceManager里面,以备后续Client引用,那么这一步是在哪里进行的呢?细心的人会发现,在frameworks\base\media\mediaserver\Main_MediaServer.cp…
开发一款小功能,核心功能是二维码扫描,然后发送到远端服务器.App结构分为两个Activity,Activity A 负责二维码扫描,然后将参数存到本地,再启动Activity B,在Activity B中,需要打开前置摄像头拍照.实际代码写好之后, 单独运行A,B都没问题,但是串起来就有问题. LogCat报错为: E/AndroidRuntime(22442): at com.dlazaro66.qrcodereaderview.QRCodeReaderView.surfaceChanged…