1page.title=Android 3.2 Platform 2sdk.platform.version=3.2 3sdk.platform.apiLevel=13 4@jd:body 5 6<div id="qv-wrapper"> 7<div id="qv"> 8 9<h2>In this document</h2> 10<ol> 11 <li><a href="#relnotes">Revisions</a></li> 12 <li><a href="#highlights">Highlights</a></li> 13 <li><a href="#api">API Overview</a></li> 14 <li><a href="#api-level">API Level</a></li> 15 <li><a href="#apps">Built-in Applications</a></li> 16 <li><a href="#locs">Locales</a></li> 17 <li><a href="#skins">Emulator Skins</a></li> 18</ol> 19 20<h2>Reference</h2> 21<ol> 22<li><a 23href="{@docRoot}sdk/api_diff/13/changes.html">API 24Differences Report »</a> </li> 25</ol> 26 27<h2>See Also</h2> 28<ol> 29 <li><a href="{@docRoot}guide/practices/screens_support.html">Supporting 30 Multiple Screens</a></li> 31 <li><a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing 32Apps for Android 3.x</a></li> 33</ol> 34 35</div> 36</div> 37 38 39<p><em>API Level:</em> <strong>{@sdkPlatformApiLevel}</strong></p> 40 41<p>Welcome to Android 3.2!</p> 42 43<p>Android 3.2 is an incremental platform release that adds new 44capabilities for users and developers. The sections below provide an overview 45of the new features and developer APIs.</p> 46 47<p>For developers, the Android {@sdkPlatformVersion} platform is available as a 48downloadable component for the Android SDK. The downloadable platform includes 49an Android library and system image, as well as a set of emulator skins and 50more. The downloadable platform includes no external libraries.</p> 51 52<p>To get started developing or testing against Android {@sdkPlatformVersion}, 53use the Android SDK Manager to download the platform into your SDK. For more 54information, see <a href="{@docRoot}sdk/adding-components.html">Adding SDK 55Components</a>. If you are new to Android, <a 56href="{@docRoot}sdk/index.html">download the SDK Starter Package</a> first.</p> 57 58<p class="note"><strong>Reminder:</strong> If you've already published an 59Android application, please test and optimize your application on Android 3.2 as 60soon as possible. You should do so to be sure your application provides the best 61experience possible on the latest Android-powered devices. For information about 62what you can do, read <a 63href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for 64Android 3.x</a>.</p> 65 66 67<h2 id="relnotes">Revisions</h2> 68 69<p>To determine what revision of the Android {@sdkPlatformVersion} platform you 70have installed, refer to the "Installed Packages" listing in the Android SDK and 71AVD Manager.</p> 72 73 74<div class="toggle-content opened" style="padding-left:1em;"> 75 76 <p><a href="#" onclick="return toggleContent(this)"> 77 <img src="{@docRoot}assets/images/triangle-opened.png" 78class="toggle-content-img" alt="" /> 79 Android {@sdkPlatformVersion}, Revision 1</a> <em>(July 2011)</em> 80 </a></p> 81 82 <div class="toggle-content-toggleme" style="padding-left:2em;"> 83 84<dl> 85<dt>Initial release. SDK Tools r12 or higher is recommended.</dt> 86</dl> 87 88 </div> 89</div> 90 91<h2 id="highlights" style="margin-top:1.5em;">Platform Highlights</h2> 92 93<h3>New user features</h3> 94 95<ul> 96<li><strong>Optimizations for a wider range of tablets</strong> 97 98<p>Android 3.2 includes a variety of optimizations across the system 99to ensure a great user experience on a wider range of tablet devices.</p></li> 100 101<li><strong>Compatibility zoom for fixed-sized apps</strong> 102 103<p>Android 3.2 introduces a new <em>compatibility zoom</em> mode that gives 104users a new way to view fixed-sized apps on larger devices. The new mode provides a 105pixel-scaled alternative to the standard UI stretching for apps that are not 106designed to run on larger screen sizes, such as on tablets. The new mode is 107accessible to users from a menu icon in the system bar, for apps that need 108compatibility support.</p></li> 109 110<li><strong>Media sync from SD card</strong> 111<p>On devices that support an SD card, users can now load media files directly 112from the SD card to apps that use them. A system facility makes the files 113accessible to apps from the system media store.</p></li> 114</ul> 115 116 117<h3>New developer features</h3> 118 119<ul> 120<li><strong>Extended API for managing screens support</strong> 121 122<p>Android 3.2 introduces extensions to the platform's screen support API to 123give developers additional ways to manage application UI across the range of 124Android-powered devices. The API includes new resource qualifiers and new 125manifest attributes that give you more precise control over how your 126apps are displayed on different sizes, rather than relying on generalized 127size categories.</p> 128 129<p>To ensure the best possible display for fixed-sized apps and apps with limited 130support for various screen sizes, the platform also provides a new zoom 131compatibility mode that renders the UI on a smaller screen area, then scales it 132up to fill the space available on the display. For more information about the 133screen support API and the controls it provides, see the sections below. </p></li> 134</ul> 135 136 137<h2 id="api">API Overview</h2> 138 139<h3 id="usb">Screens Support APIs</h3> 140 141<p>Android 3.2 introduces new screens support APIs that give you more 142control over how their applications are displayed across different screen sizes. 143The API builds on the existing screens-support API, including the platform's 144generalized screen density model, but extends it with the ability to precisely 145target specific screen ranges by their dimensions, measured in 146density-independent pixel units (such as 600dp or 720dp wide), rather than 147by their generalized screen sizes (such as large or xlarge)</p> 148 149<p>When designing an application's UI, you can still rely on the platform to 150provide density abstraction, which means that applications do not need to 151compensate for the differences in actual pixel density across devices. You 152can design the application UI according to the amount of horizontal or vertical 153space available. The platform expresses the amount of space available using three new 154characteristics: <em>smallestWidth</em>, <em>width</em>, and 155<em>height</em>.</p> 156 157<ul> 158<li>A screen's <em>smallestWidth</em> is its fundamental minimum size, 159measured in density-independent pixel ("dp") units. Of the screen's height or 160width, it is the shorter of the two. For a screen in portrait orientation, the 161smallestWidth is normally based on its width, while in landscape orientation it is based 162on its height. In all cases, the smallestWidth is derived from a fixed characteristic of the 163screen and the value does not change, regardless of orientation. The smallestWidth 164is important for applications because it represents the shortest possible width 165in which the application UI will need to be drawn, not including screen areas 166reserved by the system. 167</li> 168 169<li>In contrast, a screen's <em>width</em> and <em>height</em> represent the 170current horizontal or vertical space available for application layout, measured 171in "dp" units, not including screen areas reserved by the system. The width and 172height of a screen change when the user switches orientation between landscape 173and portrait. </li> 174 175</ul> 176 177<p>The new screens support API is designed to let you manage application UI 178according to the smallestWidth of the current screen. You can also manage the 179UI according to current width or height, as needed. For those purposes, the API 180provides these tools:</p> 181 182<ul> 183<li>New resource qualifiers for targeting layouts and other resources to a 184minimum smallestWidth, width, or height, and</li> 185<li>New manifest attributes, for specifying the app's maximum 186screen compatibility range</li> 187</ul> 188 189<p>Additionally, applications can still query the system and manage UI and 190resource loading at runtime, as in the previous versions of the platform.</p> 191 192<p>Since the new API lets you target screens more directly through smallestWidth, 193width, and height, it's helpful to understand the typical 194characteristics of the different screen types. The table below provides some 195examples, measured in "dp" units. </p> 196 197<p class="caption"><strong>Table 1.</strong> Typical devices, with density 198and size in dp.</p> 199 200<table> 201<tr> 202<th>Type</th> 203<th>Density (generalized)</th> 204<th>Dimensions (dp)</th> 205<th>smallestWidth (dp)</th> 206</tr> 207<tr> 208<td>Baseline phone</td> 209<td>mdpi</td> 210<td>320x480</td> 211<td>320</td> 212</td> 213<tr> 214<td>Small tablet/large phone</td> 215<td>mdpi</td> 216<td>480x800</td> 217<td>480</td> 218</tr> 219<tr> 220<td>7-inch tablet</td> 221<td>mdpi</td> 222<td>600x1024</td> 223<td>600</td> 224</tr> 225<tr> 226<td>10-inch tablet</td> 227<td>mdpi</td> 228<td>800x1280</td> 229<td>800</td> 230</tr> 231</table> 232 233<p>The sections below provide more information about the new screen qualifiers 234and manifest attributes. For complete information about how to use the screen 235support API, see <a 236href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple 237Screens</a>.</p> 238 239<h4>New resource qualifiers for screens support</h4> 240 241<p>The new resource qualifiers in Android 3.2 let you better target your layouts 242for ranges of screen sizes. Using the qualifiers, you can create resource 243configurations designed for a specific minimum smallestWidth, current width, or 244current height, measured in density-independent pixels.</p> 245 246<p>The new qualifiers are:</p> 247<ul> 248<li><code>swNNNdp</code> — Specifies the minimum smallestWidth on which 249the resource should be used, measured in "dp" units. As mentioned above, a 250screen's smallestWidth is constant, regardless of orientation. Examples: 251<code>sw320dp</code>, <code>sw720dp</code>, <code>sw720dp</code>.</li> 252 253<li><code>wNNNdp</code> and <code>hNNNdp</code> — Specifies the minimum 254width or height on which the resource should be used, measured in "dp" units. As 255mentioned above, a screen's width and height are relative to the orientation of 256the screen and change whenever the orientation changes. Examples: 257<code>w320dp</code>, <code>w720dp</code>, <code>h1024dp</code>.</p></li> 258</ul> 259 260<p>You can also create multiple overlapping resource configurations if needed. 261For example, you could tag some resources for use on any screen wider than 480 262dp, others for wider than 600 dp, and others for wider than 720 dp. When 263multiple resource configurations are qualified for a given screen, the system 264selects the configuration that is the closest match. For precise control over 265which resources are loaded on a given screen, you can tag resources with one 266qualifier or combine several new or existing qualifiers. 267 268<p>Based on the typical dimensions listed earlier, here are some examples of how 269you could use the new qualifiers:</p> 270 271<pre class="classic prettyprint">res/layout/main_activity.xml # For phones 272res/layout-sw600dp/main_activity.xml # For 7” tablets 273res/layout-sw720dp/main_activity.xml # For 10” tablets 274res/layout-w600dp/main_activity.xml # Multi-pane when enough width 275res/layout-sw600dp-w720dp/main_activity.xml # For large width</pre> 276 277<p>Older versions of the platform will ignore the new qualifiers, so you can 278mix them as needed to ensure that your app looks great on any device. Here 279are some examples:</p> 280 281<pre class="classic prettyprint">res/layout/main_activity.xml # For phones 282res/layout-xlarge/main_activity.xml # For pre-3.2 tablets 283res/layout-sw600dp/main_activity.xml # For 3.2 and up tablets</pre> 284 285<p>For complete information about how to use the new qualifiers, see <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">Using new 286size qualifiers</a>.</p> 287 288<h4>New manifest attributes for screen-size compatibility</h4> 289 290<p>The framework offers a new set of <a 291href="{@docRoot}"><code><supports-screens></code></a> manifest attributes that let 292you manage your app's support for different screen sizess. 293Specifically, you can specify the largest and smallest screens on which your app 294is designed to run, as well as the largest screen on which it is designed run 295without needing the system's new <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen 296compatibility mode</a>. Like the resource qualifiers described above, the new 297manifest attributes specify the range of screens that the application supports, 298as specified by the smallestWidth. </p> 299 300<p>The new manifest attributes for screen support are: </p> 301 302<ul> 303<li><code>android:compatibleWidthLimitDp="<em>numDp"</em></code> — This 304attribute lets you specify the maximum smallestWidth on which the application 305can run without needing compatibility mode. If the current screen is larger than 306the value specified, the system displays the application in normal mode but 307allows the user to optionally switch to compatibility mode through a setting in 308the system bar.</li> 309 310<li><code>android:largestWidthLimitDp="<em>numDp</em>"</code> — This 311attribute lets you specify the maximum smallestWidth on which the application 312is designed to run. If the current screen is larger than the value specified, 313the system forces the application into screen compatibility mode, to ensure best 314display on the current screen.</li> 315 316<li><code>android:requiresSmallestWidthDp="<em>numDp"</em></code> — This 317attribute lets you specify the minimum smallestWidth on which the application 318can run. If the current screen is smaller than the value specified, the system 319considers the application incompatible with the device, but does not prevent it 320from being installed and run.</li> 321</ul> 322 323<p class="note"><strong>Note:</strong> Android Market does not currently filter 324apps based on any of the attributes above. Support for filtering will be 325added in a later platform release. Applications that require 326filtering based on screen size can use the existing <code><supports-screens></code> 327attributes.</p> 328 329<p>For complete information about how to use the new attributes, see <a href="{@docRoot}guide/practices/screens_support.html#DeclaringScreenSizeSupport">Declaring 330screen size support</a>.</p> 331 332<h4>Screen compatibility mode</h4> 333 334<p>Android 3.2 provides a new screen compatibility mode for applications 335explicitly declaring that they do not support screens as large as the one on 336which they are running. This new "zoom" mode is a pixel-scaled — it 337renders the application in a smaller screen area and then scales the pixels to 338fill the current screen.</p> 339 340<p>By default, the system offers screen compatibility mode as an user option, for apps 341that require it. Users can turn the zoom mode on and off using a control available 342in the system bar. </p> 343 344<p>Because the new screen compatibility mode may not be appropriate for all 345applications, the platform allows the application to disable it using manifest 346attributes. When disabled by the app, the system does not offer "zoom" compatibility 347mode as an option for users when the app is running.</p> 348 349<p class="note"><strong>Note:</strong> For important information about how 350to control compatibility mode in your applications, please review the <a 351href="http://android-developers.blogspot.com/2011/07/new-mode-for-apps-on-large- 352screens.html">New Mode for Apps on Large Screens</a> article on the Android 353Developers Blog. </p> 354 355<h4>New screen density for 720p televisions and similar devices</h4> 356 357<p>To meet the needs of applications running on 720p televisions or similar with 358moderate density screens, Android 3.2 introduces a new generalized density, 359<code>tvdpi</code>, with an approximate dpi of 213. Applications can query for 360the new density in {@link android.util.DisplayMetrics#densityDpi} and can use 361the new <code>tvdpi</code> qualifier to tag resources for televisions and 362similar devices. For example:</p> 363 364<pre class="classic prettyprint">res/drawable-tvdpi/my_icon.png # Bitmap for tv density</pre> 365 366<p>In general, applications should not need to work with this density. For situations 367where output is needed for a 720p screen, the UI elements can be scaled 368automatically by the platform.</p> 369 370 371<h3 id="ui" style="margin-top:1.25em;">UI framework</h3> 372<ul> 373<li>Fragments 374 <ul> 375 <li>New {@link android.app.Fragment.SavedState} class holds the state 376 information retrieved from a fragment instance through 377 {@link android.app.FragmentManager#saveFragmentInstanceState(android.app.Fragment) saveFragmentInstanceState()}.</li> 378 <li>New method {@link android.app.FragmentManager#saveFragmentInstanceState(android.app.Fragment) saveFragmentInstanceState()} 379 saves the current instance state of 380 the given Fragment. The state can be used later when creating a new instance 381 of the Fragment that matches the current state.</li> 382 <li>New method {@link android.app.Fragment#setInitialSavedState(SavedState) setInitialSavedState()} 383 sets the initial saved state for a Fragment when first constructed.</li> 384 <li>New {@link android.app.Fragment#onViewCreated(android.view.View, android.os.Bundle) 385 onViewCreated()} callback method notifies the Fragment that 386 {@link android.app.Fragment#onCreateView(LayoutInflater, ViewGroup, Bundle) onCreateView()} 387 has returned, but before any saved state has been restored in to the View.</li> 388 <li>{@link android.app.Fragment#isDetached()} method determines whether 389 the Fragment has been explicitly detached from the UI.</li> 390 <li>New {@link android.app.FragmentTransaction#attach(android.app.Fragment) attach()} 391 and {@link android.app.FragmentTransaction#detach(android.app.Fragment) detach()} 392 methods let an application re-attach or detach fragments in the UI.</li> 393 <li>A new {@link android.app.FragmentTransaction#setCustomAnimations(int, int, int, int) 394 setCustomAnimations()} overload method lets you set specific animation 395 resources to run for enter/exit operations and specifically when 396 popping the back stack. The existing implementation does not account 397 for the different behavior of fragments when popping the back stack.</li> 398 </ul> 399</li> 400<li>Screen size information in ActivityInfo and ApplicationInfo 401 <ul> 402 <li>{@link android.content.pm.ActivityInfo} adds {@link android.content.pm.ActivityInfo#CONFIG_SCREEN_SIZE} 403 and {@link android.content.pm.ActivityInfo#CONFIG_SMALLEST_SCREEN_SIZE} as bit masks 404 in {@link android.R.attr#configChanges}. The bits indicate whether an Activity can 405 itself handle the screen size and smallest screen size.</li> 406 <li>{@link android.content.pm.ApplicationInfo} adds 407 {@link android.content.pm.ApplicationInfo#largestWidthLimitDp}, {@link android.content.pm.ApplicationInfo#compatibleWidthLimitDp}, 408 and {@link android.content.pm.ApplicationInfo#requiresSmallestWidthDp} fields, 409 derived from the corresponding <code><supports-screens></code> attributes 410 in the application manifest file.</li> 411 </ul> 412</li> 413<li>Helpers for getting display size from WindowManager 414 <ul> 415 <li>New methods {@link android.view.Display#getSize(android.graphics.Point) 416 getSize()} and {@link android.view.Display#getRectSize(android.graphics.Rect) 417 getRectSize()} let applications get the raw size of the display.</li> 418 </ul> 419</li> 420<li>New public "holographic" styles 421 <ul> 422 <li>The platform now exposes a variety of public "holographic" styles 423 for text, actionbar widgets and tabs, and more. See 424 {@link android.R.style} for a full list.</li> 425 </ul> 426</li> 427<li>{@link android.app.LocalActivityManager}, {@link android.app.ActivityGroup}, and 428 {@link android.app.LocalActivityManager} are now deprecated 429 <ul> 430 <li>New applications should use Fragments instead of these classes. To 431 continue to run on older versions of the platform, you can use the v4 Support 432 Library (compatibility library), available in the Android SDK. The v4 Support 433 Library provides a version of the Fragment API that is compatible down to 434 Android 1.6 (API level 4). 435 <li>For apps developing against Android 3.0 (API level 436 11) or higher, tabs are typically presented in the UI using the new 437 {@link android.app.ActionBar#newTab() ActionBar.newTab()} and related APIs 438 for placing tabs within their action bar area.</p></li> 439 </ul> 440</li> 441</ul> 442 443<h3 id="media" style="margin-top:1em;">Media framework</h3> 444<ul> 445 <li>Applications that use the platform's media provider ({@link 446 android.provider.MediaStore}) can now read media data directly from the 447 removeable SD card, where supported by the device. Applications can also 448 interact with the SD card files directly, using the MTP API. </li> 449 450</ul> 451<h3 id="graphics" style="margin-top:1.25em;">Graphics</h3> 452<ul> 453<li>Parcelable utilities in Point and PointF 454 <ul> 455 <li>{@link android.graphics.Point} and {@link android.graphics.PointF} 456 classes now include the {@link android.os.Parcelable} interface and utility methods {@link 457 android.graphics.Point#describeContents()}, {@link 458 android.graphics.Point#readFromParcel(android.os.Parcel) readFromParcel()}, and {@link 459 android.graphics.Point#writeToParcel(android.os.Parcel, int) writeToParcel()}.</li> 460 </ul> 461</li> 462</ul> 463 464 465<h3 id="ime" style="margin-top:1.25em;">IME framework</h3> 466<ul> 467 <li>New {@link android.view.KeyEvent#getModifiers()} method for 468 retrieving the current state of the modifier keys.</li> 469</ul> 470 471 472<h3 id="usb" style="margin-top:1.25em;">USB framework</h3> 473<ul> 474 <li>New {@link 475 android.hardware.usb.UsbDeviceConnection#getRawDescriptors()} method for 476 retrieving the raw USB descriptors for the device. You can use the 477 method to access descriptors not supported directly via the higher 478 level APIs.</li> 479</ul> 480 481 482<h3 id="network" style="margin-top:1.25em;">Network</h3> 483<ul> 484<li>Network type constants 485 <ul> 486 <li>{@link android.net.ConnectivityManager} adds the constants {@link 487 android.net.ConnectivityManager#TYPE_ETHERNET} and {@link 488 android.net.ConnectivityManager#TYPE_BLUETOOTH}.</li> 489 </ul> 490</li> 491</ul> 492 493 494<h3 id="telephony" style="margin-top:1.25em;">Telephony</h3> 495<ul> 496 <li>New {@link android.telephony.TelephonyManager#NETWORK_TYPE_HSPAP} network type constant.</li> 497</ul> 498 499<h3 id="other" style="margin-top:1.25em;">Core utilities</h3> 500<ul> 501<li>Parcelable utilities 502 <ul> 503 <li>New interface {@link android.os.Parcelable.ClassLoaderCreator} allows 504 the application to receive the ClassLoader in which the object is being created.</li> 505 <li>New {@link android.os.ParcelFileDescriptor#adoptFd(int) adoptFd}, {@link 506 android.os.ParcelFileDescriptor#dup(java.io.FileDescriptor) dup()}, and {@link 507 android.os.ParcelFileDescriptor#fromFd(int) fromFd()} for managing 508 {@link android.os.ParcelFileDescriptor} objects.</li> 509 </ul> 510</li> 511<li>Binder and IBinder 512 <ul> 513 <li>New method {@link android.os.Binder#dumpAsync(java.io.FileDescriptor, java.lang.String[]) dumpAsync()} 514 in {@link android.os.Binder} and {@link android.os.IBinder} let applications 515 dump to a specified file, ensuring that the target executes asynchronously.</li> 516 <li>New {@link android.os.IBinder} protocol transaction code {@link 517 android.os.IBinder#TWEET_TRANSACTION} lets applications send a tweet 518 to the target object.</li> 519 </ul> 520</li> 521</ul> 522 523 524 525 526<h3 id="features">New feature constants</h3> 527 528<p>The platform adds new hardware feature constants that you can declare 529in their application manifests, to inform external entities such as Android 530Market of required hardware and software capabilities. You declare these 531and other feature constants in <a 532href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code 533<uses-feature>}</a> manifest elements. 534 535<p>Android Market filters applications based on their <code><uses-feature></code> attributes, to ensure that they are available only to devices on which their requirements are met. </p> 536 537<ul> 538<li>Feature constants for landscape or portrait requirements 539 540<p>Android 3.2 introduces new feature constants that let applications specify whether they require display in landscape orientation, portrait orientation, or both. Declaring these constants indicates that the application must not be installed on a device that doesn't offer the associated orientation. Conversely, if one or both of the constants are not declared, it indicates that the application does not have a preference for the undeclared orientations and may be installed on a device that doesn't offer them. </p> 541 542<ul> 543 <li>{@link android.content.pm.PackageManager#FEATURE_SCREEN_LANDSCAPE 544android.hardware.screen.landscape} — The application requires display in 545landscape orientation.</li> 546 <li>{@link android.content.pm.PackageManager#FEATURE_SCREEN_PORTRAIT 547android.hardware.screen.portrait} — The application requires display in 548portrait orientation.</li> 549</ul> 550 551<p>A typical application that functions properly in both landscape and portrait orientations would not normally need to declare an orientation requirement. Rather, an application designed primarily for one orientation, such as an app designed for a television, could declare one of the constants to ensure that it isn't available to devices that don't provide that orientation.</p> 552 553<p>If any of activities declared in the manifest request that they run in a specific orientation, 554using the <a href="{@docRoot}guide/topics/manifest/activity-element.html#screen">{@code 555android:screenOrientation}</a> attribute, then this also declares that the application 556requires that orientation.</p> 557 558</li> 559<li>Other feature constants 560 561<ul> 562 <li>{@link android.content.pm.PackageManager#FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT 563android.hardware.faketouch.multitouch.distinct} — The application requires support for emulated mulitouch input with distinct tracking of two or more points.</li> 564 565 <li>{@link android.content.pm.PackageManager#FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND 566android.hardware.faketouch.multitouch.jazzhand} — The application requires support for emulated mulitouch input with distinct tracking of five or more points.</li> 567</ul> 568 569</li> 570</ul> 571 572 573<h3 id="api-diff">API Differences Report</h3> 574 575<p>For a detailed view of all API changes in Android {@sdkPlatformVersion} (API 576Level 577{@sdkPlatformApiLevel}), see the <a 578href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API 579Differences Report</a>.</p> 580 581 582 583 584 585<h2 id="api-level">API Level</h2> 586 587<p>The Android {@sdkPlatformVersion} platform delivers an updated version of 588the framework API. The Android {@sdkPlatformVersion} API 589is assigned an integer identifier — 590<strong>{@sdkPlatformApiLevel}</strong> — that is 591stored in the system itself. This identifier, called the "API Level", allows the 592system to correctly determine whether an application is compatible with 593the system, prior to installing the application. </p> 594 595<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, 596you need compile the application against the Android library that is provided in 597the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you 598might 599also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code> 600attribute to the <code><uses-sdk></code> element in the application's 601manifest.</p> 602 603<p>For more information about how to use API Level, see the <a 604href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p> 605 606 607<h2 id="apps">Built-in Applications</h2> 608 609<p>The system image included in the downloadable platform provides these 610built-in applications:</p> 611 612<table style="border:0;padding-bottom:0;margin-bottom:0;"> 613<tr> 614<td style="border:0;padding-bottom:0;margin-bottom:0;"> 615<ul> 616<li>API Demos</li> 617<li>Browser</li> 618<li>Calculator</li> 619<li>Camera</li> 620<li>Clock</li> 621<li>Contacts</li> 622<li>Custom Locale</li> 623<li>Dev Tools</li> 624<li>Downloads</li> 625<li>Email</li> 626</ul> 627</td> 628<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;"> 629<ul> 630<li>Gallery</li> 631<li>Gestures Builder</li> 632<li>Messaging</li> 633<li>Music</li> 634<li>Search</li> 635<li>Settings</li> 636<li>Spare Parts</li> 637<li>Speech Recorder</li> 638<li>Widget Preview</li> 639</ul> 640</td> 641</tr> 642</table> 643 644 645<h2 id="locs" style="margin-top:.75em;">Locales</h2> 646 647<p>The system image included in the downloadable SDK platform provides a variety 648of 649built-in locales. In some cases, region-specific strings are available for the 650locales. In other cases, a default version of the language is used. The 651languages that are available in the Android 3.0 system 652image are listed below (with <em>language</em>_<em>country/region</em> locale 653descriptor).</p> 654 655<table style="border:0;padding-bottom:0;margin-bottom:0;"> 656<tr> 657<td style="border:0;padding-bottom:0;margin-bottom:0;"> 658<ul> 659<li>Arabic, Egypt (ar_EG)</li> 660<li>Arabic, Israel (ar_IL)</li> 661<li>Bulgarian, Bulgaria (bg_BG)</li> 662<li>Catalan, Spain (ca_ES)</li> 663<li>Czech, Czech Republic (cs_CZ)</li> 664<li>Danish, Denmark(da_DK)</li> 665<li>German, Austria (de_AT)</li> 666<li>German, Switzerland (de_CH)</li> 667<li>German, Germany (de_DE)</li> 668<li>German, Liechtenstein (de_LI)</li> 669<li>Greek, Greece (el_GR)</li> 670<li>English, Australia (en_AU)</li> 671<li>English, Canada (en_CA)</li> 672<li>English, Britain (en_GB)</li> 673<li>English, Ireland (en_IE)</li> 674<li>English, India (en_IN)</li> 675<li>English, New Zealand (en_NZ)</li> 676<li>English, Singapore(en_SG)</li> 677<li>English, US (en_US)</li> 678<li>English, Zimbabwe (en_ZA)</li> 679<li>Spanish (es_ES)</li> 680<li>Spanish, US (es_US)</li> 681<li>Finnish, Finland (fi_FI)</li> 682<li>French, Belgium (fr_BE)</li> 683<li>French, Canada (fr_CA)</li> 684<li>French, Switzerland (fr_CH)</li> 685<li>French, France (fr_FR)</li> 686<li>Hebrew, Israel (he_IL)</li> 687<li>Hindi, India (hi_IN)</li> 688</ul> 689</td> 690<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;"> 691<li>Croatian, Croatia (hr_HR)</li> 692<li>Hungarian, Hungary (hu_HU)</li> 693<li>Indonesian, Indonesia (id_ID)</li> 694<li>Italian, Switzerland (it_CH)</li> 695<li>Italian, Italy (it_IT)</li> 696<li>Japanese (ja_JP)</li> 697<li>Korean (ko_KR)</li> 698<li>Lithuanian, Lithuania (lt_LT)</li> 699<li>Latvian, Latvia (lv_LV)</li> 700<li>Norwegian bokmål, Norway (nb_NO)</li> 701<li>Dutch, Belgium (nl_BE)</li> 702<li>Dutch, Netherlands (nl_NL)</li> 703<li>Polish (pl_PL)</li> 704<li>Portuguese, Brazil (pt_BR)</li> 705<li>Portuguese, Portugal (pt_PT)</li> 706<li>Romanian, Romania (ro_RO)</li> 707<li>Russian (ru_RU)</li></li> 708<li>Slovak, Slovakia (sk_SK)</li> 709<li>Slovenian, Slovenia (sl_SI)</li> 710<li>Serbian (sr_RS)</li> 711<li>Swedish, Sweden (sv_SE)</li> 712<li>Thai, Thailand (th_TH)</li> 713<li>Tagalog, Philippines (tl_PH)</li> 714<li>Turkish, Turkey (tr_TR)</li> 715<li>Ukrainian, Ukraine (uk_UA)</li> 716<li>Vietnamese, Vietnam (vi_VN)</li> 717<li>Chinese, PRC (zh_CN)</li> 718<li>Chinese, Taiwan (zh_TW)</li> 719</td> 720</tr> 721</table> 722 723<p class="note"><strong>Note:</strong> The Android platform may support more 724locales than are included in the SDK system image. All of the supported locales 725are available in the <a href="http://source.android.com/">Android Open Source 726Project</a>.</p> 727 728<h2 id="skins">Emulator Skins</h2> 729 730<p>The downloadable platform includes the following emulator skin:</p> 731 732<ul> 733 <li> 734 WXGA (1280x800, medium density, xlarge screen) 735 </li> 736</ul> 737 738<p>For more information about how to develop an application that displays 739and functions properly on all Android-powered devices, see <a 740href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple 741Screens</a>.</p> 742