<p>The API Demos application includes a variety of small applications
that illustrate the use of various Android APIs. It includes samples of:
</p>
<ul>
  <li>Notifications</li>
  <li>Alarms</li>
  <li>Progress Dialogs</li>
  <li>Intents</li>
  <li>Menus</li>
  <li>Search</li>
  <li>Persistent application state</li>
  <li>Preferences</li>
  <li>Background Services</li>
  <li>App Widgets</li>
  <li>Voice Recognition</li>
  <li>And many many more...</li>
</ul>

<div class="note">
<p><strong>Update:</strong> The following are some of the new demos for Android 4.0:</p>
<ul>
<li><a
href="src/com/example/android/apis/preference/PreferencesFromCode.html">Switch Preference</a></li>
<li><a
href="src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.html">Settings Action Provider
</a></li>
<li><a
href="src/com/example/android/apis/app/ActionBarShareActionProviderActivity.html">Share Action Provider
</a></li>
<li><a href="src/com/example/android/apis/view/SearchViewActionBar.html">Collapsible action
view</a></li>
<li><a href="src/com/example/android/apis/app/FragmentCustomAnimations.html">Custom
fragment animations</a></li>
<li><a href="src/com/example/android/apis/app/RemoteService.html">Service bindings</a></li>
<li><a href="src/com/example/android/apis/view/OverscanActivity.html">Full screen UI modes</a></li>
<li><a href="src/com/example/android/apis/graphics/TouchPaint.html">Stylus and hover
support</a></li>
<li><a href="src/com/example/android/apis/view/Switches.html">Switch widget</a></li>
<li><a href="src/com/example/android/apis/accessibility/AccessibilityNodeProviderActivity.html">Accessibility Node Provider</a></li>
<li><a
  href="src/com/example/android/apis/accessibility/TaskBackService.html">Window
  Querying Accessibility Service</a></li>
<li><a
  href="src/com/example/android/apis/accessibility/CustomViewAccessibilityActivity.html">Custom View
  Accessibility</a></li>

</ul>
</div>

<script type="text/javascript">

// This is a totally temporary hack to display the following content only
// when the docs are online. This will be changed once the samples get moved.

if (toRoot == "/") {

document.write(""+
"<p>You'll notice that all the samples are included in a single Android "+
"project, so the application code and other resource files for all samples are batched "+
"together. To help you find the code that's relevant to you, here's a directory that "+
"points to the program code for the different topics included in the project:</p>"+

"<ul><li><a href='src/com/example/android/apis/animation/index.html'>Animation</a></li>"+
"    <li><a href='src/com/example/android/apis/app/index.html'>App</a></li>"+
"    <li><a href='src/com/example/android/apis/appwidget/index.html'>App Widgets</a></li>"+
"    <li><a href='src/com/example/android/apis/content/index.html'>Content</a></li>"+
"    <li><a href='src/com/example/android/apis/graphics/index.html'>Graphics</a></li>"+
"    <li><a href='src/com/example/android/apis/media/index.html'>Media</a></li>"+
"    <li><a href='src/com/example/android/apis/os/index.html'>OS</a></li>"+
"    <li><a href='src/com/example/android/apis/text/index.html'>Text</a></li>"+
"    <li><a href='src/com/example/android/apis/view/index.html'>Views</a></li></ul>");

}

</script>
