Home | History | Annotate | Download | only in versions
      1 page.title=Android 3.2 APIs
      2 excludeFromSuggestions=true
      3 sdk.platform.version=3.2
      4 sdk.platform.apiLevel=13
      5 @jd:body
      6 
      7 <div id="qv-wrapper">
      8 <div id="qv">
      9 
     10 <h2>In this document</h2>
     11 <ol>
     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 </ol>
     16 
     17 <h2>Reference</h2>
     18 <ol>
     19 <li><a
     20 href="{@docRoot}sdk/api_diff/13/changes.html">API
     21 Differences Report &raquo;</a> </li>
     22 </ol>
     23 
     24 </div>
     25 </div>
     26 
     27 
     28 <p><em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
     29 
     30 <p>Android 3.2 ({@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}) is an incremental platform release that adds new
     31 capabilities for users and developers. The sections below provide an overview
     32 of the new features and developer APIs.</p>
     33 
     34 <p>For developers, the Android {@sdkPlatformVersion} platform is available as a
     35 downloadable component for the Android SDK. The downloadable platform includes
     36 an Android library and system image, as well as a set of emulator skins and
     37 more. To get started developing or testing against Android {@sdkPlatformVersion},
     38 use the Android SDK Manager to download the platform into your SDK.</p>
     39 
     40 
     41 
     42 <h2 id="highlights" style="margin-top:1.5em;">Platform Highlights</h2>
     43 
     44 <h3>New user features</h3>
     45 
     46 <ul>
     47 <li><strong>Optimizations for a wider range of tablets</strong>
     48 
     49 <p>Android 3.2 includes a variety of optimizations across the system
     50 to ensure a great user experience on a wider range of tablet devices.</p></li>
     51 
     52 <li><strong>Compatibility zoom for fixed-sized apps</strong>
     53 
     54 <p>Android 3.2 introduces a new <em>compatibility zoom</em> mode that gives
     55 users a new way to view fixed-sized apps on larger devices. The new mode provides a
     56 pixel-scaled alternative to the standard UI stretching for apps that are not
     57 designed to run on larger screen sizes, such as on tablets. The new mode is
     58 accessible to users from a menu icon in the system bar, for apps that need
     59 compatibility support.</p></li>
     60 
     61 <li><strong>Media sync from SD card</strong>
     62 <p>On devices that support an SD card, users can now load media files directly
     63 from the SD card to apps that use them. A system facility makes the files
     64 accessible to apps from the system media store.</p></li>
     65 </ul>
     66 
     67 
     68 <h3>New developer features</h3>
     69 
     70 <ul>
     71 <li><strong>Extended API for managing screens support</strong>
     72 
     73 <p>Android 3.2 introduces extensions to the platform's screen support API to
     74 give developers additional ways to manage application UI across the range of
     75 Android-powered devices. The API includes new resource qualifiers and new
     76 manifest attributes that give you more precise control over how your
     77 apps are displayed on different sizes, rather than relying on generalized
     78 size categories.</p>
     79 
     80 <p>To ensure the best possible display for fixed-sized apps and apps with limited
     81 support for various screen sizes, the platform also provides a new zoom
     82 compatibility mode that renders the UI on a smaller screen area, then scales it
     83 up to fill the space available on the display. For more information about the
     84 screen support API and the controls it provides, see the sections below. </p></li>
     85 </ul>
     86 
     87 
     88 <h2 id="api">API Overview</h2>
     89 
     90 <h3 id="usb">Screens Support APIs</h3>
     91 
     92 <p>Android 3.2 introduces new screens support APIs that give you more
     93 control over how their applications are displayed across different screen sizes.
     94 The API builds on the existing screens-support API, including the platform's
     95 generalized screen density model, but extends it with the ability to precisely
     96 target specific screen ranges by their dimensions, measured in
     97 density-independent pixel units (such as 600dp or 720dp wide), rather than
     98 by their generalized screen sizes (such as large or xlarge)</p>
     99 
    100 <p>When designing an application's UI, you can still rely on the platform to
    101 provide density abstraction, which means that applications do not need to
    102 compensate for the differences in actual pixel density across devices. You
    103 can design the application UI according to the amount of horizontal or vertical
    104 space available. The platform expresses the amount of space available using three new
    105 characteristics: <em>smallestWidth</em>, <em>width</em>, and
    106 <em>height</em>.</p>
    107 
    108 <ul>
    109 <li>A screen's <em>smallestWidth</em> is its fundamental minimum size,
    110 measured in density-independent pixel ("dp") units. Of the screen's height or
    111 width, it is the shorter of the two. For a screen in portrait orientation, the
    112 smallestWidth is normally based on its width, while in landscape orientation it is based
    113 on its height. In all cases, the smallestWidth is derived from a fixed characteristic of the
    114 screen and the value does not change, regardless of orientation. The smallestWidth
    115 is important for applications because it represents the shortest possible width
    116 in which the application UI will need to be drawn, not including screen areas
    117 reserved by the system.
    118 </li>
    119 
    120 <li>In contrast, a screen's <em>width</em> and <em>height</em> represent the
    121 current horizontal or vertical space available for application layout, measured
    122 in "dp" units, not including screen areas reserved by the system. The width and
    123 height of a screen change when the user switches orientation between landscape
    124 and portrait. </li>
    125 
    126 </ul>
    127 
    128 <p>The new screens support API is designed to let you manage application UI
    129 according to the smallestWidth of the current screen. You can also manage the
    130 UI according to current width or height, as needed. For those purposes, the API
    131 provides these tools:</p>
    132 
    133 <ul>
    134 <li>New resource qualifiers for targeting layouts and other resources to a
    135 minimum smallestWidth, width, or height, and</li> 
    136 <li>New manifest attributes, for specifying the app's maximum
    137 screen compatibility range</li>
    138 </ul>
    139 
    140 <p>Additionally, applications can still query the system and manage UI and
    141 resource loading at runtime, as in the previous versions of the platform.</p>
    142 
    143 <p>Since the new API lets you target screens more directly through smallestWidth,
    144 width, and height, it's helpful to understand the typical
    145 characteristics of the different screen types. The table below provides some
    146 examples, measured in "dp" units. </p>
    147 
    148 <p class="caption"><strong>Table 1.</strong> Typical devices, with density
    149 and size in dp.</p>
    150 
    151 <table>
    152 <tr>
    153 <th>Type</th>
    154 <th>Density (generalized)</th>
    155 <th>Dimensions (dp)</th>
    156 <th>smallestWidth (dp)</th>
    157 </tr>
    158 <tr>
    159 <td>Baseline phone</td>
    160 <td>mdpi</td>
    161 <td>320x480</td>
    162 <td>320</td>
    163 </td>
    164 <tr>
    165 <td>Small tablet/large phone</td>
    166 <td>mdpi</td>
    167 <td>480x800</td>
    168 <td>480</td>
    169 </tr>
    170 <tr>
    171 <td>7-inch tablet</td>
    172 <td>mdpi</td>
    173 <td>600x1024</td>
    174 <td>600</td>
    175 </tr>
    176 <tr>
    177 <td>10-inch tablet</td>
    178 <td>mdpi</td>
    179 <td>800x1280</td>
    180 <td>800</td>
    181 </tr>
    182 </table>
    183 
    184 <p>The sections below provide more information about the new screen qualifiers
    185 and manifest attributes. For complete information about how to use the screen
    186 support API, see <a
    187 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
    188 Screens</a>.</p>
    189 
    190 <h4>New resource qualifiers for screens support</h4>
    191 
    192 <p>The new resource qualifiers in Android 3.2 let you better target your layouts
    193 for ranges of screen sizes. Using the qualifiers, you can create resource
    194 configurations designed for a specific minimum smallestWidth, current width, or
    195 current height, measured in density-independent pixels.</p>
    196 
    197 <p>The new qualifiers are:</p>
    198 <ul>
    199 <li><code>swNNNdp</code> &mdash; Specifies the minimum smallestWidth on which
    200 the resource should be used, measured in "dp" units. As mentioned above, a
    201 screen's smallestWidth is constant, regardless of orientation. Examples:
    202 <code>sw320dp</code>, <code>sw720dp</code>, <code>sw720dp</code>.</li>
    203 
    204 <li><code>wNNNdp</code> and <code>hNNNdp</code> &mdash; Specifies the minimum 
    205 width or height on which the resource should be used, measured in "dp" units. As
    206 mentioned above, a screen's width and height are relative to the orientation of
    207 the screen and change whenever the orientation changes. Examples:
    208 <code>w320dp</code>, <code>w720dp</code>, <code>h1024dp</code>.</p></li>
    209 </ul>
    210 
    211 <p>You can also create multiple overlapping resource configurations if needed.
    212 For example, you could tag some resources for use on any screen wider than 480
    213 dp, others for wider than 600  dp, and others for wider than 720 dp. When
    214 multiple resource configurations are qualified for a given screen, the system
    215 selects the configuration that is the closest match. For precise control over
    216 which resources are loaded on a given screen, you can tag resources with one
    217 qualifier or combine several new or existing qualifiers. 
    218 
    219 <p>Based on the typical dimensions listed earlier, here are some examples of how
    220 you could use the new qualifiers:</p>
    221 
    222 <pre class="classic prettyprint">res/layout/main_activity.xml   # For phones
    223 res/layout-sw600dp/main_activity.xml   # For 7 tablets
    224 res/layout-sw720dp/main_activity.xml   # For 10 tablets
    225 res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
    226 res/layout-sw600dp-w720dp/main_activity.xml   # For large width</pre>
    227 
    228 <p>Older versions of the platform will ignore the new qualifiers, so you can
    229 mix them as needed to ensure that your app looks great on any device. Here
    230 are some examples:</p>
    231 
    232 <pre class="classic prettyprint">res/layout/main_activity.xml   # For phones
    233 res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
    234 res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets</pre>
    235 
    236 <p>For complete information about how to use the new qualifiers, see <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">Using new
    237 size qualifiers</a>.</p>
    238 
    239 <h4>New manifest attributes for screen-size compatibility</h4>
    240 
    241 <p>The framework offers a new set of <a
    242 href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code>&lt;supports-screens&gt;</code></a> manifest attributes that let
    243 you manage your app's support for different screen sizess.
    244 Specifically, you can specify the largest and smallest screens on which your app
    245 is designed to run, as well as the largest screen on which it is designed run
    246 without needing the system's new <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
    247 compatibility mode</a>. Like the resource qualifiers described above, the new
    248 manifest attributes specify the range of screens that the application supports,
    249 as specified by the smallestWidth. </p>
    250 
    251 <p>The new manifest attributes for screen support are: </p>
    252 
    253 <ul>
    254 <li><code>android:compatibleWidthLimitDp="<em>numDp"</em></code> &mdash; This
    255 attribute lets you specify the maximum smallestWidth on which the application
    256 can run without needing compatibility mode. If the current screen is larger than
    257 the value specified, the system displays the application in normal mode but
    258 allows the user to optionally switch to compatibility mode through a setting in
    259 the system bar.</li>
    260 
    261 <li><code>android:largestWidthLimitDp="<em>numDp</em>"</code> &mdash; This
    262 attribute lets you specify the maximum smallestWidth on which the application
    263 is designed to run.  If the current screen is larger than the value specified,
    264 the system forces the application into screen compatibility mode, to ensure best
    265 display on the current screen.</li>
    266 
    267 <li><code>android:requiresSmallestWidthDp="<em>numDp"</em></code> &mdash; This
    268 attribute lets you specify the minimum smallestWidth on which the application
    269 can run. If the current screen is smaller than the value specified, the system
    270 considers the application incompatible with the device, but does not prevent it
    271 from being installed and run.</li>
    272 </ul>
    273 
    274 <p class="note"><strong>Note:</strong> Google Play does not currently filter
    275 apps based on any of the attributes above. Support for filtering will be
    276 added in a later platform release. Applications that require
    277 filtering based on screen size can use the existing <code>&lt;supports-screens&gt;</code>
    278 attributes.</p>
    279 
    280 <p>For complete information about how to use the new attributes, see <a href="{@docRoot}guide/practices/screens_support.html#DeclaringScreenSizeSupport">Declaring
    281 screen size support</a>.</p>
    282 
    283 <h4>Screen compatibility mode</h4>
    284 
    285 <p>Android 3.2 provides a new screen compatibility mode for applications
    286 explicitly declaring that they do not support screens as large as the one on
    287 which they are running. This new "zoom" mode is a pixel-scaled &mdash; it
    288 renders the application in a smaller screen area and then scales the pixels to
    289 fill the current screen.</p>
    290 
    291 <p>By default, the system offers screen compatibility mode as an user option, for apps
    292 that require it. Users can turn the zoom mode on and off using a control available
    293 in the system bar. </p>
    294 
    295 <p>Because the new screen compatibility mode may not be appropriate for all
    296 applications, the platform allows the application to disable it using manifest
    297 attributes. When disabled by the app, the system does not offer "zoom" compatibility
    298 mode as an option for users when the app is running.</p>
    299 
    300 <p class="note"><strong>Note:</strong> For important information about how
    301 to control compatibility mode in your applications, please review the <a
    302 href="http://android-developers.blogspot.com/2011/07/new-mode-for-apps-on-large-
    303 screens.html">New Mode for Apps on Large Screens</a> article on the Android
    304 Developers Blog. </p>
    305 
    306 <h4>New screen density for 720p televisions and similar devices</h4>
    307 
    308 <p>To meet the needs of applications running on 720p televisions or similar with
    309 moderate density screens, Android 3.2 introduces a new generalized density,
    310 <code>tvdpi</code>, with an approximate dpi of 213. Applications can query for
    311 the new density in {@link android.util.DisplayMetrics#densityDpi} and can use
    312 the new <code>tvdpi</code> qualifier to tag resources for televisions and
    313 similar devices. For example:</p>
    314 
    315 <pre class="classic prettyprint">res/drawable-tvdpi/my_icon.png   # Bitmap for tv density</pre>
    316 
    317 <p>In general, applications should not need to work with this density. For situations
    318 where output is needed for a 720p screen, the UI elements can be scaled
    319 automatically by the platform.</p>
    320 
    321 
    322 <h3 id="ui" style="margin-top:1.25em;">UI framework</h3>
    323 <ul>
    324 <li>Fragments
    325   <ul>
    326     <li>New {@link android.app.Fragment.SavedState} class holds the state
    327     information retrieved from a fragment instance through
    328     {@link android.app.FragmentManager#saveFragmentInstanceState(android.app.Fragment) saveFragmentInstanceState()}.</li>
    329     <li>New method {@link android.app.FragmentManager#saveFragmentInstanceState(android.app.Fragment) saveFragmentInstanceState()}
    330     saves the current instance state of
    331     the given Fragment. The state can be used later when creating a new instance
    332     of the Fragment that matches the current state.</li>
    333     <li>New method {@link android.app.Fragment#setInitialSavedState(SavedState) setInitialSavedState()}
    334     sets the initial saved state for a Fragment when first constructed.</li>
    335     <li>New {@link android.app.Fragment#onViewCreated(android.view.View, android.os.Bundle)
    336     onViewCreated()} callback method notifies the Fragment that
    337     {@link android.app.Fragment#onCreateView(LayoutInflater, ViewGroup, Bundle) onCreateView()}
    338     has returned, but before any saved state has been restored in to the View.</li>
    339     <li>{@link android.app.Fragment#isDetached()} method determines whether
    340     the Fragment has been explicitly detached from the UI.</li>
    341     <li>New {@link android.app.FragmentTransaction#attach(android.app.Fragment) attach()}
    342     and {@link android.app.FragmentTransaction#detach(android.app.Fragment) detach()}
    343     methods let an application re-attach or detach fragments in the UI.</li>
    344     <li>A new {@link android.app.FragmentTransaction#setCustomAnimations(int, int, int, int)
    345     setCustomAnimations()} overload method lets you set specific animation
    346     resources to run for enter/exit operations and specifically when
    347     popping the back stack. The existing implementation does not account
    348     for the different behavior of fragments when popping the back stack.</li>
    349   </ul>
    350 </li>
    351 <li>Screen size information in ActivityInfo and ApplicationInfo
    352   <ul>
    353     <li>{@link android.content.pm.ActivityInfo} adds {@link android.content.pm.ActivityInfo#CONFIG_SCREEN_SIZE}
    354     and {@link android.content.pm.ActivityInfo#CONFIG_SMALLEST_SCREEN_SIZE} as bit masks
    355     in {@link android.R.attr#configChanges}. The bits indicate whether an Activity can
    356     itself handle the screen size and smallest screen size.</li>
    357     <li>{@link android.content.pm.ApplicationInfo} adds
    358     {@link android.content.pm.ApplicationInfo#largestWidthLimitDp}, {@link android.content.pm.ApplicationInfo#compatibleWidthLimitDp},
    359     and {@link android.content.pm.ApplicationInfo#requiresSmallestWidthDp} fields,
    360     derived from the corresponding <code>&lt;supports-screens&gt;</code> attributes
    361     in the application manifest file.</li>
    362   </ul>
    363 </li>
    364 <li>Helpers for getting display size from WindowManager
    365   <ul>
    366     <li>New methods {@link android.view.Display#getSize(android.graphics.Point)
    367     getSize()} and {@link android.view.Display#getRectSize(android.graphics.Rect)
    368     getRectSize()} let applications get the raw size of the display.</li>
    369   </ul>
    370 </li>
    371 <li>New public "holographic" styles
    372   <ul>
    373     <li>The platform now exposes a variety of public "holographic" styles
    374     for text, actionbar widgets and tabs, and more. See
    375     {@link android.R.style} for a full list.</li>
    376   </ul>
    377 </li>
    378 <li>{@link android.app.LocalActivityManager}, {@link android.app.ActivityGroup}, and
    379     {@link android.app.LocalActivityManager} are now deprecated
    380   <ul>
    381     <li>New applications should use Fragments instead of these classes. To
    382     continue to run on older versions of the platform, you can use the v4 Support
    383     Library (compatibility library), available in the Android SDK. The v4 Support
    384     Library provides a version of the Fragment API that is compatible down to
    385     Android 1.6 (API level 4).
    386     <li>For apps developing against Android 3.0 (API level
    387     11) or higher, tabs are typically presented in the UI using the new
    388     {@link android.app.ActionBar#newTab() ActionBar.newTab()} and related APIs
    389     for placing tabs within their action bar area.</p></li>
    390   </ul>
    391 </li>
    392 </ul>
    393 
    394 <h3 id="media" style="margin-top:1em;">Media framework</h3>
    395 <ul>
    396     <li>Applications that use the platform's media provider ({@link
    397     android.provider.MediaStore}) can now read media data directly from the
    398     removeable SD card, where supported by the device. Applications can also
    399     interact with the SD card files directly, using the MTP API. </li>
    400 
    401 </ul>
    402 <h3 id="graphics" style="margin-top:1.25em;">Graphics</h3>
    403 <ul>
    404 <li>Parcelable utilities in Point and PointF
    405   <ul>
    406     <li>{@link android.graphics.Point} and {@link android.graphics.PointF}
    407     classes now include the {@link android.os.Parcelable} interface and utility methods {@link
    408     android.graphics.Point#describeContents()}, {@link
    409     android.graphics.Point#readFromParcel(android.os.Parcel) readFromParcel()}, and {@link
    410     android.graphics.Point#writeToParcel(android.os.Parcel, int) writeToParcel()}.</li>
    411   </ul>
    412 </li>
    413 </ul>
    414 
    415 
    416 <h3 id="ime" style="margin-top:1.25em;">IME framework</h3>
    417 <ul>
    418     <li>New {@link android.view.KeyEvent#getModifiers()} method for
    419     retrieving the current state of the modifier keys.</li>
    420 </ul>
    421 
    422 
    423 <h3 id="usb" style="margin-top:1.25em;">USB framework</h3>
    424 <ul>
    425     <li>New {@link
    426     android.hardware.usb.UsbDeviceConnection#getRawDescriptors()} method for
    427     retrieving the raw USB descriptors for the device. You can use the
    428     method to access descriptors not supported directly via the higher
    429     level APIs.</li>
    430 </ul>
    431 
    432 
    433 <h3 id="network" style="margin-top:1.25em;">Network</h3>
    434 <ul>
    435 <li>Network type constants
    436    <ul>
    437      <li>{@link android.net.ConnectivityManager} adds the constants {@link
    438      android.net.ConnectivityManager#TYPE_ETHERNET} and {@link
    439      android.net.ConnectivityManager#TYPE_BLUETOOTH}.</li>
    440   </ul>
    441 </li>
    442 </ul>
    443 
    444 
    445 <h3 id="telephony" style="margin-top:1.25em;">Telephony</h3>
    446 <ul>
    447     <li>New {@link android.telephony.TelephonyManager#NETWORK_TYPE_HSPAP} network type constant.</li>
    448 </ul>
    449 
    450 <h3 id="other" style="margin-top:1.25em;">Core utilities</h3>
    451 <ul>
    452 <li>Parcelable utilities
    453   <ul>
    454     <li>New interface {@link android.os.Parcelable.ClassLoaderCreator} allows
    455     the application to receive the ClassLoader in which the object is being created.</li>
    456     <li>New {@link android.os.ParcelFileDescriptor#adoptFd(int) adoptFd}, {@link
    457     android.os.ParcelFileDescriptor#dup(java.io.FileDescriptor) dup()}, and {@link
    458     android.os.ParcelFileDescriptor#fromFd(int) fromFd()} for managing
    459     {@link android.os.ParcelFileDescriptor} objects.</li>
    460   </ul>
    461 </li>
    462 <li>Binder and IBinder
    463   <ul>
    464     <li>New method {@link android.os.Binder#dumpAsync(java.io.FileDescriptor, java.lang.String[]) dumpAsync()}
    465     in {@link android.os.Binder} and {@link android.os.IBinder} let applications
    466     dump to a specified file, ensuring that the target executes asynchronously.</li>
    467     <li>New {@link android.os.IBinder} protocol transaction code {@link
    468     android.os.IBinder#TWEET_TRANSACTION} lets applications send a tweet
    469     to the target object.</li>
    470   </ul>
    471 </li>
    472 </ul>
    473 
    474 
    475 
    476 
    477 <h3 id="features">New feature constants</h3>
    478 
    479 <p>The platform adds new hardware feature constants that you can declare
    480 in their application manifests, to inform external entities such as Google
    481 Play of required hardware and software capabilities. You declare these
    482 and other feature constants in <a
    483 href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
    484 &lt;uses-feature&gt;}</a> manifest elements.
    485 
    486 <p>Google Play 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>
    487 
    488 <ul>
    489 <li>Feature constants for landscape or portrait requirements
    490 
    491 <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>
    492 
    493 <ul>
    494   <li>{@link android.content.pm.PackageManager#FEATURE_SCREEN_LANDSCAPE
    495 android.hardware.screen.landscape} &mdash; The application requires display in
    496 landscape orientation.</li>
    497   <li>{@link android.content.pm.PackageManager#FEATURE_SCREEN_PORTRAIT
    498 android.hardware.screen.portrait} &mdash; The application requires display in
    499 portrait orientation.</li>
    500 </ul>
    501 
    502 <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>
    503 
    504 <p>If any of activities declared in the manifest request that they run in a specific orientation,
    505 using the <a href="{@docRoot}guide/topics/manifest/activity-element.html#screen">{@code
    506 android:screenOrientation}</a> attribute, then this also declares that the application
    507 requires that orientation.</p>
    508 
    509 </li>
    510 <li>Other feature constants
    511 
    512 <ul>
    513   <li>{@link android.content.pm.PackageManager#FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT
    514 android.hardware.faketouch.multitouch.distinct} &mdash; The application requires support for emulated mulitouch input with distinct tracking of two or more points.</li>
    515 
    516   <li>{@link android.content.pm.PackageManager#FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND
    517 android.hardware.faketouch.multitouch.jazzhand} &mdash; The application requires support for emulated mulitouch input with distinct tracking of five or more points.</li>
    518 </ul>
    519 
    520 </li>
    521 </ul>
    522 
    523 
    524 <h3 id="api-diff">API Differences Report</h3>
    525 
    526 <p>For a detailed view of all API changes in Android {@sdkPlatformVersion} (API
    527 Level
    528 {@sdkPlatformApiLevel}), see the <a
    529 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
    530 Differences Report</a>.</p>
    531 
    532 
    533 
    534 
    535 
    536 <h2 id="api-level">API Level</h2>
    537 
    538 <p>The Android {@sdkPlatformVersion} platform delivers an updated version of
    539 the framework API. The Android {@sdkPlatformVersion} API
    540 is assigned an integer identifier &mdash;
    541 <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
    542 stored in the system itself. This identifier, called the "API Level", allows the
    543 system to correctly determine whether an application is compatible with
    544 the system, prior to installing the application. </p>
    545 
    546 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
    547 you need compile the application against the Android library that is provided in
    548 the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you
    549 might
    550 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
    551 attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
    552 manifest.</p>
    553 
    554 <p>For more information, read <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">What is API
    555 Level?</a></p>
    556 
    557 
    558