page.title=Android 2.3.4 APIs
excludeFromSuggestions=true
sdk.platform.version=2.3.4
sdk.platform.apiLevel=10


@jd:body

<div id="qv-wrapper">
<div id="qv">

<h2>In this document</h2>
<ol>
  <li><a href="#api">API Overview</a></li>
  <li><a href="#openaccessory">Open Accessory Library</a></li>
  <li><a href="#api-level">API Level</a></li>
</ol>

<h2>Reference</h2>
<ol>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report &raquo;</a> </li>
</ol>

</div>
</div>

<p>
<em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>

<p>Android 2.3.4 ({@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1})
is a maintenance release that adds several bug fixes and patches
to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally,
Android 2.3.4 brings support for the Open Accessory API to mobile devices,
through the optional <a href="#usb">Open Accessory Library</a>. </p>

<p>For developers, the Android {@sdkPlatformVersion} platform is available as a
downloadable component for the Android SDK. The downloadable platform includes
an Android library and system image, as well as a set of emulator skins and
more. To get started developing or testing against Android {@sdkPlatformVersion},
use the Android SDK Manager to download the platform into your SDK.</p>



<h2 id="api">API Overview</h2>

<p>Android 2.3.4 provides the same framework API to applications as Android 2.3.3
(API level 10). For a summary of the API, see the
<a href="{@docRoot}about/versions/android-2.3.3.html">Android 2.3.3 version notes</a>.</p>


<h2 id="openaccessory">Open Accessory Library</h2>

<p><em>Open Accessory</em> is a new capability for integrating
connected peripherals with applications running on the platform. The capability
is based on a USB (Universal Serial Bus) stack built into the platform and an
API exposed to applications. Peripherals that attach to Android-powered devices
as accessories connect as USB hosts. </p>

<p>Open Accessory is introduced in <a
href="{@docRoot}about/versions/android-3.1.html#usb">Android 3.1</a> (API level 12), but is
made available to devices running Android 2.3.4 by means of an optional external
library, the Open Accessory Library. The library exposes a framework API that
lets applications discover, communicate with, and manage a variety of device
types connected over USB. It also provides the implementation of the API against
parts of the Android platform that are not directly exposed to applications in
Android 2.3.4.</p>

<p>The Open Accessory Library is optional on any given device. Device
manufacturers may choose whether to include the Open Accessory Library in their
products or exclude it. The library is forward-compatible with Android 3.1, so
applications developed against Android 2.3.4 will run properly on devices
running Android 3.1, if those devices support USB accessories. </p>

<p>The API provided by the Open Accessory Library is based on the Open Accessory
API provided in Android 3.1. In most areas, you can use the same techniques and
APIs. However, developing for the Open Accessory Library on Android 2.3.4 differs
from the standard USB API in these ways:

<ul>
<li>Obtaining a {@link android.hardware.usb.UsbManager} object &mdash; To obtain
a {@link android.hardware.usb.UsbManager} object when using the add-on library,
use the helper method <code>getInstance()</code> rather than {@link
android.content.Context#getSystemService(java.lang.String) getSystemService()}
For example:

<pre>UsbManager manager = UsbManager.getInstance(this);</pre></li>

<li>Obtaining a {@link android.hardware.usb.UsbAccessory} from a filtered intent
&mdash; When you filter for a connected device or accessory with an intent
filter, the {@link android.hardware.usb.UsbAccessory} object is contained
inside the intent that is passed to your application. If you are using the
add-on library, you can get the {@link android.hardware.usb.UsbAccessory} object
in the following manner:

<pre>UsbAccessory accessory = UsbManager.getAccessory(intent)</pre></li>

<li>No USB host support &mdash; Android 2.3.4 and the Open Accessory Library do
not support USB host mode (for example, through {@link
android.hardware.usb.UsbDevice}), although USB host mode is supported in Android
3.1. An Android-powered device running Android 2.3.4 can not function as a USB
host. The library enables the Android-powered device to function as
a peripheral only, with the connected accessory functioning as USB host
(through {@link android.hardware.usb.UsbAccessory}).</li>
</ul>

<p>To develop apps using the Open Accessory Library, you need:</p>

<ul>
<li>The latest version of the Android SDK tools</li>
<li>The latest version of the Google APIs add-on, which includes the library
itself (for linking)</li>
<li>An actual hardware device running Android 2.3.4 (or Android 3.1) with USB
accessories support, for runtime testing against connected devices</li>
</ul>

<p>For a full discussion of how to develop applications that interact with USB
accessories, please see the related <a
href="{@docRoot}guide/topics/connectivity/usb/index.html">developer documentation</a>.</p>

<p>Additionally, developers can request filtering on Google Play, such that
their applications are not available to users whose devices do not provide the
appropriate accessory support. To request filtering, add the element below
to the application manifest:</p>

<pre>&lt;uses-feature
  android:name="android.hardware.usb.accessory"
  android:required="true"&gt;</pre>


<h2 id="api-level">API Level</h2>

<p>The Android 2.3.4 platform does <em>not</em> increment the API level &mdash;
it uses the same API level as Android 2.3.3, API level 10.

<p>To use APIs introduced in API level 10 in your application,
you need compile the application against the Android library that is provided in
the latest version of the Google APIs Add-On, which also includes the Open
Accessory Library.</p>

<p>Depending on your needs, you might
also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
manifest. If your application is designed to run only on Android 2.3.3 and higher,
declaring the attribute prevents the application from being installed on earlier
versions of the platform.</p>

<p>For more information, read <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">What is API
Level?</a></p>
