1 page.title=Android 2.3.3 Platform 2 sdk.platform.version=2.3.3 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="#relnotes">Revisions</a></li> 14 <li><a href="#api">API Overview</a></li> 15 <li><a href="#api-level">API Level</a></li> 16 <li><a href="#apps">Built-in Applications</a></li> 17 <li><a href="#locs">Locales</a></li> 18 <li><a href="#skins">Emulator Skins</a></li> 19 </ol> 20 21 <h2>Reference</h2> 22 <ol> 23 <li><a 24 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API 25 Differences Report »</a> </li> 26 </ol> 27 28 <h2>See Also</h2> 29 <ol> 30 <li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li> 31 </ol> 32 33 </div> 34 </div> 35 36 <p> 37 <em>API Level:</em> <strong>{@sdkPlatformApiLevel}</strong></p> 38 39 <p>Android 2.3.3 is a small feature release that adds several improvements 40 and APIs to the Android 2.3 platform.</p> 41 42 <p>For developers, the Android {@sdkPlatformVersion} platform is available as a 43 downloadable component for the Android SDK. The downloadable platform includes 44 an Android library and system image, as well as a set of emulator 45 skins and more. The downloadable platform 46 includes no external libraries.</p> 47 48 <p>To get started developing or testing against Android 49 {@sdkPlatformVersion}, use the Android SDK Manager to 50 download the platform into your SDK. For more information, 51 see <a href="{@docRoot}sdk/adding-components.html">Adding SDK 52 Components</a>. If you are new to Android, <a 53 href="{@docRoot}sdk/index.html">download the SDK Starter Package</a> 54 first.</p> 55 56 <p>For a high-level introduction to Android 2.3, see the <a 57 href="{@docRoot}sdk/android-2.3-highlights.html">Platform Highlights</a>.</p> 58 59 60 <h2 id="relnotes">Revisions</h2> 61 62 <p>The sections below provide notes about successive releases of 63 the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by 64 revision number. To determine what revision(s) of the Android 65 {@sdkPlatformVersion} platforms are installed in your SDK environment, refer to 66 the "Installed Packages" listing in the Android SDK and AVD Manager.</p> 67 68 69 <div class="toggle-content opened" style="padding-left:1em;"> 70 71 <p><a href="#" onclick="return toggleContent(this)"> 72 <img src="{@docRoot}assets/images/triangle-opened.png" 73 class="toggle-content-img" alt="" /> 74 Android {@sdkPlatformVersion}, Revision 2</a> <em>(July 2011)</em> 75 </a></p> 76 77 <div class="toggle-content-toggleme" style="padding-left:2em;"> 78 79 <dl> 80 <dt>Dependencies:</dt> 81 <dd> 82 <p>Requires <a href="{@docRoot}sdk/tools-notes.html">SDK Tools r12</a> or 83 higher.</p> 84 </dd> 85 <dt>Notes:</dt> 86 <dd> 87 <p>Improvements to the platform's rendering library to support the visual layout editor in the ADT 88 Eclipse plugin. This revision allows for more drawing features in ADT and fixes several 89 bugs in the previous rendering library. It also unlocks several editor features that were added in 90 ADT 12.</p> 91 </dd> 92 </dl> 93 94 </div> 95 </div> 96 97 <div class="toggle-content closed" style="padding-left:1em;"> 98 99 <p><a href="#" onclick="return toggleContent(this)"> 100 <img src="{@docRoot}assets/images/triangle-closed.png" 101 class="toggle-content-img" alt="" /> 102 Android {@sdkPlatformVersion}, Revision 1</a> <em>(February 2011)</em> 103 </a></p> 104 105 <div class="toggle-content-toggleme" style="padding-left:2em;"> 106 <dl> 107 <dt>Dependencies:</dt> 108 <dd> 109 <p>Requires SDK Tools r9 or higher.</p> 110 </dd> 111 </dl> 112 113 </div> 114 </div> 115 116 117 <h2 id="api">API Overview</h2> 118 119 <p>The sections below provide a technical overview of what's new for developers 120 in {@sdkPlatformVersion}, including new features and changes in the framework 121 API since the previous version.</p> 122 123 <h3 id="nfc">Near Field Communications (NFC)</h3> 124 125 <p>Android 2.3.3 provides improved and extended support for NFC, to allow 126 applications to interact with more types of tags in new ways.</p> 127 128 <p>A new, comprehensive set of APIs give applications read and write access 129 to a wider range of standard tag technologies, including:</p> 130 131 <ul> 132 <li>NFC-A (ISO 14443-3A)</li> 133 <li>NFC-B (ISO 14443-3B)</li> 134 <li>NFC-F (JIS 6319-4)</li> 135 <li>NFC-V (ISO 15693)</li> 136 <li>ISO-DEP (ISO 14443-4)</li> 137 <li>MIFARE Classic</li> 138 <li>MIFARE Ultralight</li> 139 <li>NFC Forum NDEF tags</li> 140 </ul> 141 142 <p>The platform also provides a limited peer-to-peer communication protocol 143 and API. Foreground Activities can use the API to register an NDEF 144 message that will get pushed to other NFC devices when they connect.</p> 145 146 <p>Advanced tag dispatching now gives applications more control over how and 147 when they are launched, when an NFC tag is discovered. Previously, the platform 148 used a single-step intent dispatch to notify interested applications that a tag 149 was discovered. The platform now uses a four-step process that enables the 150 foreground application to take control of a tag event before it is passed to any 151 other applications (<code>android.nfc.NfcAdapter.enableForegroundDispatch()</code>). 152 153 The new dispatch process also lets apps listen for specific tag content and 154 tag technologies, based on two new intent actions — 155 <code>android.nfc.action.NDEF_DISCOVERED</code> and 156 <code>android.nfc.action.TECH_DISCOVERED</code>.</p> 157 158 <p>The NFC API is available in the {@link android.nfc} and 159 {@link android.nfc.tech} packages. The key classes are: </p> 160 161 <ul> 162 <li>{@link android.nfc.NfcAdapter}, which represents the NFC hardware on the device.</li> 163 <li>{@link android.nfc.NdefMessage}, which represents an NDEF data message, 164 the standard format in which "records" carrying data are transmitted between 165 devices and tags. An NDEF message certain many NDEF records of different types. 166 Applications can receive these messages from 167 {@link android.nfc.NfcAdapter#ACTION_NDEF_DISCOVERED NDEF_DISCOVERED}, 168 {@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED TECH_DISCOVERED}, or 169 {@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED TAG_DISCOVERED} Intents.</li> 170 <li>{@link android.nfc.NdefRecord}, delivered in an 171 {@link android.nfc.NdefMessage}, which describes the type of data being shared 172 and carries the data itself.</li> 173 <li>{@link android.nfc.Tag}, which represents a tag scanned by the device. 174 Multiple types of tags are supported, based on the underlying tag 175 technology.</li> 176 <li>{@link android.nfc.tech.TagTechnology}, an interface that gives applications 177 access to tag properties and I/O operations based on the technologies present 178 in the tag. For a full list of tag technologies supported in Android 2.3.3, see 179 {@link android.nfc.tech}.</li> 180 </ul> 181 182 <p>NFC communication relies on wireless technology in the device hardware, and 183 is not present in all Android devices. Android devices that do not support 184 NFC will return a null object when 185 {@link android.nfc.NfcAdapter#getDefaultAdapter(android.content.Context) 186 getDefaultAdapter(Context)} is called, and 187 <code>context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)</code> 188 will return <code>false</code>. The NFC API is always present, however, regardless of 189 underlying hardware support.</p> 190 191 <p>To use the NFC API, applications must request permission from the user by 192 declaring <code><uses-permission 193 android:name="android.permission.NFC"></code> in their manifest files.</p> 194 195 <p>Additionally, developers can request filtering on Android Market, such that 196 their applications are not discoverable to users whose devices do not support 197 NFC. To request filtering, add 198 <code><uses-feature android:name="android.hardware.nfc" 199 android:required="true"></code> to the application's manifest.</p> 200 201 <p class="note">To look at sample code for NFC, see 202 <a href="{@docRoot}resources/samples/NFCDemo/index.html">NFCDemo app</a>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.html">filtering by tag technology</a></li>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html">using foreground dispatch</a>, and <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.html">foreground NDEF push (P2P)</a>.</p> 203 204 <h3 id="bluetooth">Bluetooth</h3> 205 206 <p>Android 2.3.3 adds platform and API support for Bluetooth nonsecure socket 207 connections. This lets applications communicate with simple devices that may not 208 offer a UI for authentication. See 209 {@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and 210 {@link android.bluetooth.BluetoothAdapter#listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID)} 211 for more information. </p> 212 213 <h3 id="graphics">Graphics</h3> 214 215 <ul> 216 <li>A new {@link android.graphics.BitmapRegionDecoder} class lets applications 217 decode a rectangle region from an image. The API is particularly useful when an 218 original image is large and and the application only need parts of the image. 219 </li> 220 <li>A new {@link 221 android.graphics.BitmapFactory.Options#inPreferQualityOverSpeed} field in {@link 222 android.graphics.BitmapFactory.Options} allows applications to use a more accurate 223 but slightly slower IDCT method in JPEG decode. This in turn improves the 224 quality of the reconstructed image.</li> 225 </ul> 226 227 228 <h3 id="media">Media framework</h3> 229 230 <ul> 231 <li>A new {@link android.media.MediaMetadataRetriever} class provides a unified 232 interface for retrieving frame and metadata from an input media file.</li> 233 <li>{@link android.media.MediaRecorder.AudioEncoder} and {@link 234 android.media.MediaRecorder.OutputFormat} include new fields for specifying AMR 235 Wideband and AAC formats. </li> 236 </ul> 237 238 239 <h3 id="speech">Speech recognition</h3> 240 241 <p>The speech-recognition API includes new constants to let you manage voice 242 search results in new ways. Although the new constants are not needed for normal 243 use of speech recognition, you could use them to offer a different view of voice 244 search results in your application. For information, see {@link 245 android.speech.RecognizerResultsIntent}.</p> 246 247 248 <h2 id="api-level">API Level</h2> 249 250 <p>The Android {@sdkPlatformVersion} platform delivers an updated version of 251 the framework API. The Android {@sdkPlatformVersion} API 252 is assigned an integer identifier — 253 <strong>{@sdkPlatformApiLevel}</strong> — that is 254 stored in the system itself. This identifier, called the "API Level", allows the 255 system to correctly determine whether an application is compatible with 256 the system, prior to installing the application. </p> 257 258 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, 259 you need compile the application against the Android library that is provided in 260 the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might 261 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code> 262 attribute to the <code><uses-sdk></code> element in the application's 263 manifest. If your application is designed to run only on Android 2.3 and higher, 264 declaring the attribute prevents the application from being installed on earlier 265 versions of the platform.</p> 266 267 <p>For more information about how to use API Level, see the <a 268 href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p> 269 270 <h2 id="apps">Built-in Applications</h2> 271 272 <p>The system image included in the downloadable platform provides these 273 built-in applications:</p> 274 275 <table style="border:0;padding-bottom:0;margin-bottom:0;"> 276 <tr> 277 <td style="border:0;padding-bottom:0;margin-bottom:0;"> 278 <ul> 279 <li>Browser</li> 280 <li>Calculator</li> 281 <li>Camera</li> 282 <li>Clock</li> 283 <li>Contacts</li> 284 <li>Cusom Locale</li> 285 <li>Dev Tools</li> 286 <li>Downloads</li> 287 <li>Email</li> 288 </ul> 289 </td> 290 <td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;"> 291 <ul> 292 <li>Gallery</li> 293 <li>IMEs for Japanese, Chinese, and Latin text input</li> 294 <li>Messaging</li> 295 <li>Music</li> 296 <li>Phone</li> 297 <li>Search</li> 298 <li>Settings</li> 299 <li>Spare Parts (developer app)</li> 300 <li>Speech Recorder</li> 301 </ul> 302 </td> 303 </tr> 304 </table> 305 306 307 <h2 id="locs" style="margin-top:.75em;">Locales</h2> 308 309 <p>The system image included in the downloadable SDK platform provides a variety of 310 built-in locales. In some cases, region-specific strings are available for the 311 locales. In other cases, a default version of the language is used. The 312 languages that are available in the Android {@sdkPlatformVersion} system 313 image are listed below (with <em>language</em>_<em>country/region</em> locale 314 descriptor).</p> 315 316 <table style="border:0;padding-bottom:0;margin-bottom:0;"> 317 <tr> 318 <td style="border:0;padding-bottom:0;margin-bottom:0;"> 319 <ul> 320 <li>Arabic, Egypt (ar_EG)</li> 321 <li>Arabic, Israel (ar_IL)</li> 322 <li>Bulgarian, Bulgaria (bg_BG)</li> 323 <li>Catalan, Spain (ca_ES)</li> 324 <li>Czech, Czech Republic (cs_CZ)</li> 325 <li>Danish, Denmark(da_DK)</li> 326 <li>German, Austria (de_AT)</li> 327 <li>German, Switzerland (de_CH)</li> 328 <li>German, Germany (de_DE)</li> 329 <li>German, Liechtenstein (de_LI)</li> 330 <li>Greek, Greece (el_GR)</li> 331 <li>English, Australia (en_AU)</li> 332 <li>English, Canada (en_CA)</li> 333 <li>English, Britain (en_GB)</li> 334 <li>English, Ireland (en_IE)</li> 335 <li>English, India (en_IN)</li> 336 <li>English, New Zealand (en_NZ)</li> 337 <li>English, Singapore(en_SG)</li> 338 <li>English, US (en_US)</li> 339 <li>English, Zimbabwe (en_ZA)</li> 340 <li>Spanish (es_ES)</li> 341 <li>Spanish, US (es_US)</li> 342 <li>Finnish, Finland (fi_FI)</li> 343 <li>French, Belgium (fr_BE)</li> 344 <li>French, Canada (fr_CA)</li> 345 <li>French, Switzerland (fr_CH)</li> 346 <li>French, France (fr_FR)</li> 347 <li>Hebrew, Israel (he_IL)</li> 348 <li>Hindi, India (hi_IN)</li> 349 </ul> 350 </td> 351 <td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;"> 352 <li>Croatian, Croatia (hr_HR)</li> 353 <li>Hungarian, Hungary (hu_HU)</li> 354 <li>Indonesian, Indonesia (id_ID)</li> 355 <li>Italian, Switzerland (it_CH)</li> 356 <li>Italian, Italy (it_IT)</li> 357 <li>Japanese (ja_JP)</li> 358 <li>Korean (ko_KR)</li> 359 <li>Lithuanian, Lithuania (lt_LT)</li> 360 <li>Latvian, Latvia (lv_LV)</li> 361 <li>Norwegian-Bokmol, Norway(nb_NO)</li> 362 <li>Dutch, Belgium (nl_BE)</li> 363 <li>Dutch, Netherlands (nl_NL)</li> 364 <li>Polish (pl_PL)</li> 365 <li>Portuguese, Brazil (pt_BR)</li> 366 <li>Portuguese, Portugal (pt_PT)</li> 367 <li>Romanian, Romania (ro_RO)</li> 368 <li>Russian (ru_RU)</li></li> 369 <li>Slovak, Slovakia (sk_SK)</li> 370 <li>Slovenian, Slovenia (sl_SI)</li> 371 <li>Serbian (sr_RS)</li> 372 <li>Swedish, Sweden (sv_SE)</li> 373 <li>Thai, Thailand (th_TH)</li> 374 <li>Tagalog, Philippines (tl_PH)</li> 375 <li>Turkish, Turkey (tr_TR)</li> 376 <li>Ukrainian, Ukraine (uk_UA)</li> 377 <li>Vietnamese, Vietnam (vi_VN)</li> 378 <li>Chinese, PRC (zh_CN)</li> 379 <li>Chinese, Taiwan (zh_TW)</li> 380 </td> 381 </tr> 382 </table> 383 384 <p class="note"><strong>Note:</strong> The Android platform may support more 385 locales than are included in the SDK system image. All of the supported locales 386 are available in the <a href="http://source.android.com/">Android Open Source 387 Project</a>.</p> 388 389 <h2 id="skins">Emulator Skins</h2> 390 391 <p>The downloadable platform includes a set of emulator skins that you can use 392 for modeling your application in different screen sizes and resolutions. The 393 emulator skins are:</p> 394 395 <ul> 396 <li> 397 QVGA (240x320, low density, small screen) 398 </li> 399 <li> 400 WQVGA400 (240x400, low density, normal screen) 401 </li> 402 <li> 403 WQVGA432 (240x432, low density, normal screen) 404 </li> 405 <li> 406 HVGA (320x480, medium density, normal screen) 407 </li> 408 <li> 409 WVGA800 (480x800, high density, normal screen) 410 </li> 411 <li> 412 WVGA854 (480x854 high density, normal screen) 413 </li> 414 </ul> 415 416 <p>For more information about how to develop an application that displays 417 and functions properly on all Android-powered devices, see <a 418 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple 419 Screens</a>.</p> 420