Android's camera subsystem connects the camera application to the application framework and user space libraries, which in turn communicate with the camera hardware layer that operates the physical camera.
The diagram below illustrates the structure of the camera subsystem.
Building a Camera Library
To implement a camera driver, create a shared library that implements the interface defined in CameraHardwareInterface.h
. You must name your shared library libcamera.so
so that it will get loaded from /system/lib
at runtime. Place libcamera sources and Android.mk
in vendor/acme/chipset_or_board/libcamera/
.
The following stub Android.mk
file ensures that libcamera
compiles and links to the appropriate libraries:
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)
Sequence Diagrams
Preview
The following diagram illustrates the sequence of function calls and actions necessary for your camera to preview.
![](http://www.kandroid.org/online-pdk/guide/images/cameraPreview.jpg)
Taking a Picture
The following diagram illustrates the sequence of function calls and actions necessary for your camera to take a picture.
![](http://www.kandroid.org/online-pdk/guide/images/cameraTakePicture.jpg)
Interface
Note: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, click here.
CameraHardwareInterface.h File Reference
Go to the source code of this file.