
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Android - Porting Guide</title>
<script src="http://www.google.com/uds/api?file=uds.js&amp;v=1.0&amp;key=internal-codesite" type="text/javascript"></script>
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
<script language="JavaScript">
function resizeHeight() {
	if(document.getElementById && !(document.all)) {
		height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
		document.getElementById('doxygen').style.height = height;
	}
	else if(document.all) {
		height= document.frames('doxygen').document.body.scrollHeight + 20;
		document.all.doxygen.style.height = height;
	}
}
</script>
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
</link>

<!--[if IE]><link rel="stylesheet" type="text/css" href="/css/iehacks.css" /><![endif]-->
<script src="http://code.google.com/android/assets/search_autocomplete.js"></script>
<link rel="stylesheet" type="text/css" href="http://code.google.com/css/semantic_headers.css" />
<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/style.css" />
<script>
    jQuery(document).ready(function() {
            jQuery("pre").addClass("prettyprint");
        });
    </script>
<style type="text/css">
<!--
h1,h2,h3 {
	color: #000000;
}
-->
</style>
</head>
<body class="gc-documentation">
<div id="gc-container">
<a name="top"></a>
<div id="skipto"> </div>
<div id="langpref">
  <!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->

</div>
<div id="gc-header">
  <div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
  <div id="search" style="inline">
    <div id="searchForm" class="searchForm" style="height: 44px;">
      <!--previously form was here-->
    </div>
    <!-- end searchForm -->
    <noscript>
    <style type="text/css">
      .searchForm {
        display : none !important;
      }
      .searchForm2 {
        display : inline !important;
      }
      </style>
    </noscript>

    <div id="searchForm2" class="searchForm2" style="display:none">
      <form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
        <input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
        <input type="hidden" name="cof" value="FORID:0" />
        <input type="text" name="q" maxlength="2048" size="41" autocomplete="off" title="Google Code Search"/>
        <input type="submit" name="sa" value="Search" title="Search"/>
        <br/>
        <div class="greytext">e.g. "ajax apis" or "open source"</div>

      </form>
    </div>
    <!-- end searchForm2 -->
  </div>
  <!-- end search -->
</div>
<!-- end gc-header -->
<div id="searchControl" class="search-control"></div>
<!--[if IE]><iframe id="backiFrame" name="backiFrame" src='/dummy.html' style="display:none"></iframe><![endif]-->
<div id="codesiteContent">
<a name="gc-topnav-anchor"></a>
<div id="gc-topnav">

  <h1>Android Platform Development Kit</h1>
  <ul class="gc-topnav-tabs">
    <li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
    <li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
    <li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>

    <li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
    <li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
    <li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
    <li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20camera.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>

  </ul>
</div>
<!-- end gc-topnav -->
<div class="g-section g-tpl-180">
<a name="gc-toc"></a>
<div class="g-unit g-first" id="gc-toc">
  <ul>
    <li>
      <h1><a href="index.html">Documentation</a></h1>
      <ul>
        <li> <strong>Introduction</strong>

          <ul>
            <li><a href="system_requirements.html">Device Requirements</a></li>            
          </ul>
        </li>
        <li> <strong>Dev Environment Setup</strong>
          <ul>
            <li><a href="build_system.html">Build System</a></li>
          </ul>
        </li>
        <li> <strong>Basic Bring up</strong>

          <ul>
            <li><a href="build_new_device.html">Building New Device</a></li>
            <li><a href="bring_up.html">Bring up</a></li>
            <li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
            <li><a href="display_drivers.html">Display Drivers</a></li>
          </ul>
        </li>

        <li> <strong>Multimedia</strong>
          <ul>
            <li><a href="audio_sub_system.html">Audio</a></li>
            <li><a href="camera.html">Camera</a></li>			
          </ul>
        </li>
        <li> <strong>Power Management</strong>

          <ul>
            <li><a href="power_management.html">Power Management</a></li>
          </ul>
        </li>

        <li> <strong>Networking</strong>
          <ul>
            <li><a href="wifi.html">Wi-Fi</a></li>
            <li><a href="gps.html">GPS</a></li>
            <li><a href="bluetooth.html">Bluetooth</a></li>
          </ul>
        </li>

        <li> <strong>Telephony</strong>
          <ul>
            <li><a href="telephony.html">Radio Interface Layer</a></li>

          </ul>
        </li>
        <li> <strong>Testing</strong>
          <ul>
            <li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
          </ul>

        </li>
      </ul>
    </li>
  </ul>
</div>
<a name="gc-pagecontent"></a>
<div class="g-unit" id="gc-pagecontent">
<div id="jd-content">
<div class="jd-descr">


<a name="androidCameraTitle"></a><h1>Camera Subsystem</h1>



<a name="toc"/>
<div style="padding:10px">
<a href="#androidCameraIntroduction">Introduction</a><br/>
<a href="#androidCameraBuildingDriver">Building a Camera Library</a><br/>
<a href="#androidCameraSequenceDiagrams">Sequence Diagrams</a><br/><div style="padding-left:40px">

<a href="#androidCameraSequenceDiagramsPreview">Preview</a><br/>
<a href="#androidCameraSequenceDiagramsTakePic">Taking a Picture</a><br/></div>
<a href="#androidCameraInterfaceIntro">Interface</a><br/></div></font></div>

<a name="androidCameraIntroduction"></a><h2>Introduction</h2>

<p>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.</p>
<p>The diagram below illustrates the structure of the camera subsystem.</p>
<p><img src="androidCameraArchitecture.gif"></p>


<a name="androidCameraBuildingDriver"></a><h2>Building a Camera Library</h2>

<p>To implement a camera driver, create a shared library that implements the interface defined in <code>CameraHardwareInterface.h</code>. You must name your shared library <code>libcamera.so</code> so that it will get loaded from <code>/system/lib</code> at runtime.  Place libcamera sources and <code>Android.mk</code> in <code>partner/acme/chipset_or_board/libcamera/</code>.</p>
<p>The following stub <code>Android.mk</code> file ensures that <code>libcamera</code> compiles and links to the appropriate libraries:</p>
<pre class="prettify">
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)
</pre>


<a name="androidCameraSequenceDiagrams"></a><h2>Sequence Diagrams</h2>



<a name="androidCameraSequenceDiagramsPreview"></a><h3>Preview</h3>

<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to preview.</p>
<img src="cameraPreview.jpg">


<a name="androidCameraSequenceDiagramsTakePic"></a><h3>Taking a Picture</h3>

<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to take a picture.</p>
<img src="cameraTakePicture.jpg">


<a name="androidCameraInterfaceIntro"></a><h2>Interface</h2>



<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="camera.html">click here</a>.</p>


<iframe onLoad="resizeHeight();" src="_camera_hardware_interface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>


<p><span class="lh2"><a name="androidFooter"></a></span>

        </div>
      </div>
      <!-- end gc-pagecontent -->
    </div>
    <!-- end gooey wrapper -->
  </div>
  <!-- end codesearchresults -->
  <div id="gc-footer" dir="ltr">
    <div class="text"> &copy;2008 Google<!-- - <a href="/">Code Home</a> - <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a> - <a href="http://www.google.com/privacy.html">Privacy Policy</a> - <a href="/more">Site Directory</a> --></div>
  </div>
  <!-- end gc-footer -->
</div>
<!-- end gc-containter -->
<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
</script>
<script type="text/javascript">
  try {
    var pageTracker = _gat._getTracker("UA-18071-1");
    pageTracker._setAllowAnchor(true);
    pageTracker._initData();
    pageTracker._trackPageview(); 
  } catch(e) {}
</script>
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
</div></div></div></body>
</html>

