http://source.android.com/porting/camera.html
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 预览时必须的程序调用以及动作的流程。
照相
下图展示了拍摄照片时时必须的程序调用以及动作的流程。