<?cs # Table of contents for Dev Guide.

       For each document available in translation, add an localized title to this TOC.
       Do not add localized title for docs not available in translation.
       Below are template spans for adding localized doc titles. Please ensure that
       localized titles are added in the language order specified below.
?>

<ul id="nav">
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___asset.html"><span class="en">Asset Manager</span></a></div>
    <ul>
      <li><a href="/ndk/reference/asset__manager_8h.html">asset_manager.h</a></li>
      <li><a href="/ndk/reference/asset__manager__jni_8h.html">asset_manager_jni.h</a></li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___bitmap.html"><span class="en">
    Bitmap</span></a></div>
    <ul>
      <li><a href="/ndk/reference/bitmap_8h.html">bitmap.h</a></li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___configuration.html"><span class="en">
    Configuration</span></a></div>
    <ul>
      <li><a href="/ndk/reference/configuration_8h.html">configuration.h</a></li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___input.html"><span class="en">
    Input</span></a></div>
    <ul>
      <li><a href="/ndk/reference/input_8h.html">input.h</a></li>
      <li><a href="/ndk/reference/keycodes_8h.html">keycodes.h</a></li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___looper.html"><span class="en">
    Looper</span></a></div>
    <ul>
      <li><a href="/ndk/reference/looper_8h.html">looper.h</a></li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___native_activity.html"><span class="en">
    Native Activity and Window</span></a></div>
    <ul>
      <li><a href="/ndk/reference/native__activity_8h.html">native_activity.h</a></li>
      <li><a href="/ndk/reference/native__window_8h.html">native_window.h</a></li>
      <li><a href="/ndk/reference/native__window__jni_8h.html">native_window.h</a></li>
      <li><a href="/ndk/reference/rect_8h.html">rect.h</a></li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___sensor.html"><span class="en">
    Sensor</span></a></div>
    <ul>
      <li><a href="/ndk/reference/sensor_8h.html">sensor.h</a></li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/ndk/reference/group___storage.html"><span class="en">
    Storage Manager</span></a></div>
    <ul>
      <li><a href="/ndk/reference/storage__manager_8h.html">sensor_manager.h</a></li>
      <li><a href="/ndk/reference/obb_8h.html">obb.h</a></li>
    </ul>
  </li>
</ul>

<script type="text/javascript">
<!--
    buildToggleLists();
    changeNavLang(getLangPref());
//-->
</script>