Home | History | Annotate | Download | only in sdk
      1 page.title=Android 3.2 Platform
      2 sdk.platform.version=3.2
      3 sdk.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
     23 href="{@docRoot}sdk/api_diff/13/changes.html">API
     24 Differences Report &raquo;</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
     32 Apps for Android 3.x</a></li>
     33 </ol>
     34 
     35 </div>
     36 </div>
     37 
     38 
     39 <p><em>API Level:</em>&nbsp;<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
     44 capabilities for users and developers. The sections below provide an overview
     45 of the new features and developer APIs.</p>
     46 
     47 <p>For developers, the Android {@sdkPlatformVersion} platform is available as a
     48 downloadable component for the Android SDK. The downloadable platform includes
     49 an Android library and system image, as well as a set of emulator skins and
     50 more. The downloadable platform includes no external libraries.</p>
     51 
     52 <p>To get started developing or testing against Android {@sdkPlatformVersion},
     53 use the Android SDK Manager to download the platform into your SDK. For more
     54 information, see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
     55 Components</a>. If you are new to Android, <a
     56 href="{@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
     59 Android application, please test and optimize your application on Android 3.2 as
     60 soon as possible. You should do so to be sure your application provides the best
     61 experience possible on the latest Android-powered devices. For information about
     62 what you can do, read <a
     63 href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for
     64 Android 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
     70 have installed, refer to the "Installed Packages" listing in the Android SDK and
     71 AVD 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"
     78 class="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
     99 to 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
    104 users a new way to view fixed-sized apps on larger devices. The new mode provides a
    105 pixel-scaled alternative to the standard UI stretching for apps that are not
    106 designed to run on larger screen sizes, such as on tablets. The new mode is
    107 accessible to users from a menu icon in the system bar, for apps that need
    108 compatibility 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
    112 from the SD card to apps that use them. A system facility makes the files
    113 accessible 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
    123 give developers additional ways to manage application UI across the range of
    124 Android-powered devices. The API includes new resource qualifiers and new
    125 manifest attributes that give you more precise control over how your
    126 apps are displayed on different sizes, rather than relying on generalized
    127 size categories.</p>
    128 
    129 <p>To ensure the best possible display for fixed-sized apps and apps with limited
    130 support for various screen sizes, the platform also provides a new zoom
    131 compatibility mode that renders the UI on a smaller screen area, then scales it
    132 up to fill the space available on the display. For more information about the
    133 screen 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
    142 control over how their applications are displayed across different screen sizes.
    143 The API builds on the existing screens-support API, including the platform's
    144 generalized screen density model, but extends it with the ability to precisely
    145 target specific screen ranges by their dimensions, measured in
    146 density-independent pixel units (such as 600dp or 720dp wide), rather than
    147 by 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
    150 provide density abstraction, which means that applications do not need to
    151 compensate for the differences in actual pixel density across devices. You
    152 can design the application UI according to the amount of horizontal or vertical
    153 space available. The platform expresses the amount of space available using three new
    154 characteristics: <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,
    159 measured in density-independent pixel ("dp") units. Of the screen's height or
    160 width, it is the shorter of the two. For a screen in portrait orientation, the
    161 smallestWidth is normally based on its width, while in landscape orientation it is based
    162 on its height. In all cases, the smallestWidth is derived from a fixed characteristic of the
    163 screen and the value does not change, regardless of orientation. The smallestWidth
    164 is important for applications because it represents the shortest possible width
    165 in which the application UI will need to be drawn, not including screen areas
    166 reserved by the system.
    167 </li>
    168 
    169 <li>In contrast, a screen's <em>width</em> and <em>height</em> represent the
    170 current horizontal or vertical space available for application layout, measured
    171 in "dp" units, not including screen areas reserved by the system. The width and
    172 height of a screen change when the user switches orientation between landscape
    173 and portrait. </li>
    174 
    175 </ul>
    176 
    177 <p>The new screens support API is designed to let you manage application UI
    178 according to the smallestWidth of the current screen. You can also manage the
    179 UI according to current width or height, as needed. For those purposes, the API
    180 provides these tools:</p>
    181 
    182 <ul>
    183 <li>New resource qualifiers for targeting layouts and other resources to a
    184 minimum smallestWidth, width, or height, and</li> 
    185 <li>New manifest attributes, for specifying the app's maximum
    186 screen compatibility range</li>
    187 </ul>
    188 
    189 <p>Additionally, applications can still query the system and manage UI and
    190 resource 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,
    193 width, and height, it's helpful to understand the typical
    194 characteristics of the different screen types. The table below provides some
    195 examples, measured in "dp" units. </p>
    196 
    197 <p class="caption"><strong>Table 1.</strong> Typical devices, with density
    198 and 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
    234 and manifest attributes. For complete information about how to use the screen
    235 support API, see <a
    236 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
    237 Screens</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
    242 for ranges of screen sizes. Using the qualifiers, you can create resource
    243 configurations designed for a specific minimum smallestWidth, current width, or
    244 current height, measured in density-independent pixels.</p>
    245 
    246 <p>The new qualifiers are:</p>
    247 <ul>
    248 <li><code>swNNNdp</code> &mdash; Specifies the minimum smallestWidth on which
    249 the resource should be used, measured in "dp" units. As mentioned above, a
    250 screen'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> &mdash; Specifies the minimum 
    254 width or height on which the resource should be used, measured in "dp" units. As
    255 mentioned above, a screen's width and height are relative to the orientation of
    256 the 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.
    261 For example, you could tag some resources for use on any screen wider than 480
    262 dp, others for wider than 600  dp, and others for wider than 720 dp. When
    263 multiple resource configurations are qualified for a given screen, the system
    264 selects the configuration that is the closest match. For precise control over
    265 which resources are loaded on a given screen, you can tag resources with one
    266 qualifier or combine several new or existing qualifiers. 
    267 
    268 <p>Based on the typical dimensions listed earlier, here are some examples of how
    269 you could use the new qualifiers:</p>
    270 
    271 <pre class="classic prettyprint">res/layout/main_activity.xml   # For phones
    272 res/layout-sw600dp/main_activity.xml   # For 7 tablets
    273 res/layout-sw720dp/main_activity.xml   # For 10 tablets
    274 res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
    275 res/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
    278 mix them as needed to ensure that your app looks great on any device. Here
    279 are some examples:</p>
    280 
    281 <pre class="classic prettyprint">res/layout/main_activity.xml   # For phones
    282 res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
    283 res/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
    286 size 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
    291 href="{@docRoot}"><code>&lt;supports-screens&gt;</code></a> manifest attributes that let
    292 you manage your app's support for different screen sizess.
    293 Specifically, you can specify the largest and smallest screens on which your app
    294 is designed to run, as well as the largest screen on which it is designed run
    295 without needing the system's new <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
    296 compatibility mode</a>. Like the resource qualifiers described above, the new
    297 manifest attributes specify the range of screens that the application supports,
    298 as 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> &mdash; This
    304 attribute lets you specify the maximum smallestWidth on which the application
    305 can run without needing compatibility mode. If the current screen is larger than
    306 the value specified, the system displays the application in normal mode but
    307 allows the user to optionally switch to compatibility mode through a setting in
    308 the system bar.</li>
    309 
    310 <li><code>android:largestWidthLimitDp="<em>numDp</em>"</code> &mdash; This
    311 attribute lets you specify the maximum smallestWidth on which the application
    312 is designed to run.  If the current screen is larger than the value specified,
    313 the system forces the application into screen compatibility mode, to ensure best
    314 display on the current screen.</li>
    315 
    316 <li><code>android:requiresSmallestWidthDp="<em>numDp"</em></code> &mdash; This
    317 attribute lets you specify the minimum smallestWidth on which the application
    318 can run. If the current screen is smaller than the value specified, the system
    319 considers the application incompatible with the device, but does not prevent it
    320 from being installed and run.</li>
    321 </ul>
    322 
    323 <p class="note"><strong>Note:</strong> Android Market does not currently filter
    324 apps based on any of the attributes above. Support for filtering will be
    325 added in a later platform release. Applications that require
    326 filtering based on screen size can use the existing <code>&lt;supports-screens&gt;</code>
    327 attributes.</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
    330 screen 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
    335 explicitly declaring that they do not support screens as large as the one on
    336 which they are running. This new "zoom" mode is a pixel-scaled &mdash; it
    337 renders the application in a smaller screen area and then scales the pixels to
    338 fill the current screen.</p>
    339 
    340 <p>By default, the system offers screen compatibility mode as an user option, for apps
    341 that require it. Users can turn the zoom mode on and off using a control available
    342 in the system bar. </p>
    343 
    344 <p>Because the new screen compatibility mode may not be appropriate for all
    345 applications, the platform allows the application to disable it using manifest
    346 attributes. When disabled by the app, the system does not offer "zoom" compatibility
    347 mode as an option for users when the app is running.</p>
    348 
    349 <p class="note"><strong>Note:</strong> For important information about how
    350 to control compatibility mode in your applications, please review the <a
    351 href="http://android-developers.blogspot.com/2011/07/new-mode-for-apps-on-large-
    352 screens.html">New Mode for Apps on Large Screens</a> article on the Android
    353 Developers 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
    358 moderate density screens, Android 3.2 introduces a new generalized density,
    359 <code>tvdpi</code>, with an approximate dpi of 213. Applications can query for
    360 the new density in {@link android.util.DisplayMetrics#densityDpi} and can use
    361 the new <code>tvdpi</code> qualifier to tag resources for televisions and
    362 similar 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
    367 where output is needed for a 720p screen, the UI elements can be scaled
    368 automatically 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>&lt;supports-screens&gt;</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
    529 in their application manifests, to inform external entities such as Android
    530 Market of required hardware and software capabilities. You declare these
    531 and other feature constants in <a
    532 href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
    533 &lt;uses-feature&gt;}</a> manifest elements.
    534 
    535 <p>Android Market filters applications based on their <code>&lt;uses-feature&gt;</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
    544 android.hardware.screen.landscape} &mdash; The application requires display in
    545 landscape orientation.</li>
    546   <li>{@link android.content.pm.PackageManager#FEATURE_SCREEN_PORTRAIT
    547 android.hardware.screen.portrait} &mdash; The application requires display in
    548 portrait 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,
    554 using the <a href="{@docRoot}guide/topics/manifest/activity-element.html#screen">{@code
    555 android:screenOrientation}</a> attribute, then this also declares that the application
    556 requires 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
    563 android.hardware.faketouch.multitouch.distinct} &mdash; 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
    566 android.hardware.faketouch.multitouch.jazzhand} &mdash; 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
    576 Level
    577 {@sdkPlatformApiLevel}), see the <a
    578 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
    579 Differences 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
    588 the framework API. The Android {@sdkPlatformVersion} API
    589 is assigned an integer identifier &mdash;
    590 <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
    591 stored in the system itself. This identifier, called the "API Level", allows the
    592 system to correctly determine whether an application is compatible with
    593 the system, prior to installing the application. </p>
    594 
    595 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
    596 you need compile the application against the Android library that is provided in
    597 the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you
    598 might
    599 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
    600 attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
    601 manifest.</p>
    602 
    603 <p>For more information about how to use API Level, see the <a
    604 href="{@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
    610 built-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
    648 of
    649 built-in locales. In some cases, region-specific strings are available for the
    650 locales. In other cases, a default version of the language is used. The
    651 languages that are available in the Android 3.0 system
    652 image are listed below (with <em>language</em>_<em>country/region</em> locale
    653 descriptor).</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 bokml, 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
    724 locales than are included in the SDK system image. All of the supported locales
    725 are available in the <a href="http://source.android.com/">Android Open Source
    726 Project</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
    739 and functions properly on all Android-powered devices, see <a
    740 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
    741 Screens</a>.</p>
    742