http://source.android.com/porting/camera.html
Camera
Android的camera子系统把camera的应用程序与应用程序框架以及用户空间库连接起来,反过来也与操作物理camera的硬件层进行通信。 下图为camera子系统的结构:
构建一个camera库
为了实现一个camera驱动,创建一个动态链接库实现在CameraHardwareInterface.h中定义的camera接口,你必须把你的动态链接库命名为libcamera.so,从而在运行时它会从/system/lib被装载。你还需要把libcamera的源文件以及Android.mk文件放在vendor/acme/chipset_or_board/libcamera/中。
下面的stub Android.mk文件保证了libcamera编译和连接合适的库。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libcamera
LOCAL_SHARED_LIBRARIES := /
libutils /
librpc /
liblog
LOCAL_SRC_FILES += MyCameraHardware.cpp
LOCAL_CFLAGS +=
LOCAL_C_INCLUDES +=
LOCAL_STATIC_LIBRARIES += /
libcamera-common /
libclock-rpc /
libcommondefs-rpc
include $(BUILD_SHARED_LIBRARY)
流程图
预览
下图展示了camera 预览时必须的程序调用以及动作的流程。
照相
下图展示了拍摄照片时时必须的程序调用以及动作的流程。