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