1 page.title=Android 2.3.4 APIs 2 sdk.platform.version=2.3.4 3 sdk.platform.apiLevel=10 4 5 6 @jd:body 7 8 <div id="qv-wrapper"> 9 <div id="qv"> 10 11 <h2>In this document</h2> 12 <ol> 13 <li><a href="#api">API Overview</a></li> 14 <li><a href="#openaccessory">Open Accessory Library</a></li> 15 <li><a href="#api-level">API Level</a></li> 16 </ol> 17 18 <h2>Reference</h2> 19 <ol> 20 <li><a 21 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API 22 Differences Report »</a> </li> 23 </ol> 24 25 </div> 26 </div> 27 28 <p> 29 <em>API Level:</em> <strong>{@sdkPlatformApiLevel}</strong></p> 30 31 <p>Android 2.3.4 is a maintenance release that adds several bug fixes and patches 32 to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally, 33 Android 2.3.4 brings support for the Open Accessory API to mobile devices, 34 through the optional <a href="#usb">Open Accessory Library</a>. </p> 35 36 <p>For developers, the Android {@sdkPlatformVersion} platform is available as a 37 downloadable component for the Android SDK. The downloadable platform includes 38 an Android library and system image, as well as a set of emulator skins and 39 more. To get started developing or testing against Android {@sdkPlatformVersion}, 40 use the Android SDK Manager to download the platform into your SDK.</p> 41 42 43 44 <h2 id="api">API Overview</h2> 45 46 <p>Android 2.3.4 provides the same framework API to applications as Android 2.3.3 47 (API level 10). For a summary of the API, see the 48 <a href="{@docRoot}about/versions/android-2.3.3.html">Android 2.3.3 version notes</a>.</p> 49 50 51 <h2 id="openaccessory">Open Accessory Library</h2> 52 53 <p><em>Open Accessory</em> is a new capability for integrating 54 connected peripherals with applications running on the platform. The capability 55 is based on a USB (Universal Serial Bus) stack built into the platform and an 56 API exposed to applications. Peripherals that attach to Android-powered devices 57 as accessories connect as USB hosts. </p> 58 59 <p>Open Accessory is introduced in <a 60 href="{@docRoot}about/versions/android-3.1.html#usb">Android 3.1</a> (API level 12), but is 61 made available to devices running Android 2.3.4 by means of an optional external 62 library, the Open Accessory Library. The library exposes a framework API that 63 lets applications discover, communicate with, and manage a variety of device 64 types connected over USB. It also provides the implementation of the API against 65 parts of the Android platform that are not directly exposed to applications in 66 Android 2.3.4.</p> 67 68 <p>The Open Accessory Library is optional on any given device. Device 69 manufacturers may choose whether to include the Open Accessory Library in their 70 products or exclude it. The library is forward-compatible with Android 3.1, so 71 applications developed against Android 2.3.4 will run properly on devices 72 running Android 3.1, if those devices support USB accessories. </p> 73 74 <p>The API provided by the Open Accessory Library is based on the Open Accessory 75 API provided in Android 3.1. In most areas, you can use the same techniques and 76 APIs. However, developing for the Open Accessory Library on Android 2.3.4 differs 77 from the standard USB API in these ways: 78 79 <ul> 80 <li>Obtaining a {@link android.hardware.usb.UsbManager} object — To obtain 81 a {@link android.hardware.usb.UsbManager} object when using the add-on library, 82 use the helper method <code>getInstance()</code> rather than {@link 83 android.content.Context#getSystemService(java.lang.String) getSystemService()} 84 For example: 85 86 <pre>UsbManager manager = UsbManager.getInstance(this);</pre></li> 87 88 <li>Obtaining a {@link android.hardware.usb.UsbAccessory} from a filtered intent 89 — When you filter for a connected device or accessory with an intent 90 filter, the {@link android.hardware.usb.UsbAccessory} object is contained 91 inside the intent that is passed to your application. If you are using the 92 add-on library, you can get the {@link android.hardware.usb.UsbAccessory} object 93 in the following manner: 94 95 <pre>UsbAccessory accessory = UsbManager.getAccessory(intent)</pre></li> 96 97 <li>No USB host support — Android 2.3.4 and the Open Accessory Library do 98 not support USB host mode (for example, through {@link 99 android.hardware.usb.UsbDevice}), although USB host mode is supported in Android 100 3.1. An Android-powered device running Android 2.3.4 can not function as a USB 101 host. The library enables the Android-powered device to function as 102 a peripheral only, with the connected accessory functioning as USB host 103 (through {@link android.hardware.usb.UsbAccessory}).</li> 104 </ul> 105 106 <p>To develop apps using the Open Accessory Library, you need:</p> 107 108 <ul> 109 <li>The latest version of the Android SDK tools</li> 110 <li>The latest version of the Google APIs add-on, which includes the library 111 itself (for linking)</li> 112 <li>An actual hardware device running Android 2.3.4 (or Android 3.1) with USB 113 accessories support, for runtime testing against connected devices</li> 114 </ul> 115 116 <p>For a full discussion of how to develop applications that interact with USB 117 accessories, please see the related <a 118 href="{@docRoot}guide/topics/connectivity/usb/index.html">developer documentation</a>.</p> 119 120 <p>Additionally, developers can request filtering on Google Play, such that 121 their applications are not available to users whose devices do not provide the 122 appropriate accessory support. To request filtering, add the element below 123 to the application manifest:</p> 124 125 <pre><uses-feature 126 android:name="android.hardware.usb.accessory" 127 android:required="true"></pre> 128 129 130 <h2 id="api-level">API Level</h2> 131 132 <p>The Android 2.3.4 platform does <em>not</em> increment the API level — 133 it uses the same API level as Android 2.3.3, API level 10. 134 135 <p>To use APIs introduced in API level 10 in your application, 136 you need compile the application against the Android library that is provided in 137 the latest version of the Google APIs Add-On, which also includes the Open 138 Accessory Library.</p> 139 140 <p>Depending on your needs, you might 141 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code> 142 attribute to the <code><uses-sdk></code> element in the application's 143 manifest. If your application is designed to run only on Android 2.3.3 and higher, 144 declaring the attribute prevents the application from being installed on earlier 145 versions of the platform.</p> 146 147 <p>For more information, read <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">What is API 148 Level?</a></p> 149