本文基于Android 4.2.2+Linux3.6.9+SAMA5D3 SoC从源代码的角度审视Android Camera子系统。

应用层

Androd原生Camera应用

/system/app/LegacyCamera.apk

http://androidxref.com/4.2.2_r1/xref/packages/apps/LegacyCamera/

Camera应用调用Android应用框架提供的Camera API

import android.hardware.Camera;

import android.hardware.Camera.Area;

import android.hardware.Camera.CameraInfo;

import android.hardware.Camera.Face;

import android.hardware.Camera.FaceDetectionListener;

import android.hardware.Camera.Parameters;

import android.hardware.Camera.PictureCallback;

import android.hardware.Camera.Size;

应用框架层

/system/framework/framework.jar

http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/hardware/Camera.java

JNI

/system/lib/libandroid_runtime.so

http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/jni/android_hardware_Camera.cpp

Camera Service Binder Proxy

Camera Service Binder ProxyCamera ClientCamera Service之间通信的统一通道。Camera ClientCamera Service都会调用Camera Service Binder Proxy


/system/lib/libcamera_client.so

头文件目录

http://androidxref.com/4.2.2_r1/xref/frameworks/av/include/camera/

源文件目录

http://androidxref.com/4.2.2_r1/xref/frameworks/av/camera/

Camera Service

Camera ServiceCamera HAL交互,通过Binder Service的方式为Camera Client提供服务。

/system/lib/libcameraservice.so

http://androidxref.com/4.2.2_r1/xref/frameworks/av/services/camera/libcameraservice/

HAL

Camera硬件抽象层定义并实现供Camera Service调用的标准接口,保证Camera硬件的功能能够正常发挥。

/system/lib/hw/camera.sama5d3-ek.so

头文件

http://androidxref.com/4.2.2_r1/xref/hardware/libhardware/include/hardware/camera.h

源文件目录

https://github.com/Android4SAM/platform_hardware_atmel/tree/master/sama5d3/camera

Kernel Driver

Camera驱动程序与Camera硬件和HAL交互。Camera硬件和驱动程序必须支持YV12NV21图像格式以支持预览和录像。

The V4L2driver for Atmel Linux

https://github.com/Android4SAM/linux-at91/blob/android4sam_v4.0/drivers/media/video/atmel-isi.c

SoC Cameradriver for Omni Vision 2640 sensor

https://github.com/Android4SAM/linux-at91/blob/android4sam_v4.0/drivers/media/video/ov2640.c

更多相关文章

  1. Android硬件开发之——NFC技术
  2. 开源android平板开发所需的软硬件知识
  3. Android驱动(一)硬件访问服务学习之(一)Android通过JNI访问硬件
  4. Android资源文件简介
  5. 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程
  6. 003.android资源文件剖析(Resources)
  7. Android帧缓冲区(Frame Buffer)硬件抽象层(HAL) 模块Gralloc的实现原
  8. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值

随机推荐

  1. 关于使用Eclipse打包签名后APP出现不能正
  2. Android(安卓)发送有序广播
  3. Android(安卓)退出
  4. Chaquopy读取Android项目python目录下的
  5. Android动画编程指南
  6. android -------- Android(安卓)Studio调
  7. Android(安卓)可执行文件结构的分析
  8. Using Android(安卓)Debug Bridge (ADB)
  9. Android中如何判断联网
  10. Dev Guide_Android(安卓)Basics_Applicat