Home | History | Annotate | Download | only in sdk
      1 page.title=Android 1.6 Platform
      2 sdk.platform.version=1.6
      3 sdk.platform.apiLevel=4
      4 sdk.platform.majorMinor=minor
      5 sdk.platform.releaseDate=December 2009
      6 sdk.platform.deployableDate=October 2009
      7 
      8 @jd:body
      9 
     10 <div id="qv-wrapper">
     11 <div id="qv">
     12 
     13 <h2>In this document</h2>
     14 <ol>
     15   <li><a href="#features">Platform Highlights</a></li>
     16   <li><a href="#relnotes">Revisions</a></li>
     17   <li><a href="#api-level">API Level</a></li>
     18   <li><a href="#api">Framework API Changes</a>
     19   <li><a href="#apps">Built-in Applications</a></li>
     20   <li><a href="#locs">Locales</a></li>
     21   <li><a href="#skins">Emulator Skins</a></li>
     22 
     23     </ol>
     24   </li>
     25 </ol>
     26 
     27 <h2>Reference</h2>
     28 <ol>
     29 <li><a
     30 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
     31 Differences Report &raquo;</a> </li>
     32 </ol>
     33 
     34 <h2>See Also</h2>
     35 <ol>
     36   <li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
     37 </ol>
     38 
     39 </div>
     40 </div>
     41 
     42 <p>
     43 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
     44 
     45 <p>Android {@sdkPlatformVersion} is a {@sdkPlatformMajorMinor} platform release
     46 deployable to Android-powered handsets since {@sdkPlatformDeployableDate}.
     47 The platform includes new features for users and developers, as well as changes
     48 in the Android framework API. </p>
     49 
     50 <p>For developers, a new release of the Android {@sdkPlatformVersion} platform
     51 is available as a downloadable component for the Android SDK. The platform
     52 &mdash; Android 1.6 r2 &mdash; includes a fully compliant Android library and
     53 system image, as well as a set of emulator skins, sample applications, and minor
     54 development updates. The downloadable platform is fully compliant (API Level 4)
     55 and includes no external libraries.</p>
     56 
     57 <p>To get started developing or testing against the Android
     58 {@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to
     59 download the latest Android 1.6 platform into your Android 1.6 or later SDK. For
     60 more information, see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
     61 Components</a>.</p>
     62 
     63 
     64 <h2 id="features">Platform Highlights</h2>
     65 
     66 <p>For a list of new user features and platform highlights, see the <a
     67 href="http://developer.android.com/sdk/android-{@sdkPlatformVersion}-highlights.html">Android 
     68 {@sdkPlatformVersion} Platform Highlights</a> document.</p>
     69 
     70 
     71 <h2 id="relnotes">Revisions</h2>
     72 
     73 <p>The sections below provide notes about successive releases of
     74 the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
     75 revision number. To determine what revision(s) of the Android
     76 {@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
     77 the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
     78 
     79 <script type="text/javascript">
     80 function toggleDiv(link) {
     81   var toggleable = $(link).parent();
     82   if (toggleable.hasClass("closed")) {
     83     //$(".toggleme", toggleable).slideDown("fast");
     84     toggleable.removeClass("closed");
     85     toggleable.addClass("open");
     86     $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
     87   } else {
     88     //$(".toggleme", toggleable).slideUp("fast");
     89     toggleable.removeClass("open");
     90     toggleable.addClass("closed");
     91     $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
     92   }
     93   return false;
     94 }
     95 </script>
     96 <style>
     97 .toggleable {
     98   padding: .25em 1em 0em 1em;
     99   margin-bottom: 0;
    100 }
    101 .toggleme {
    102   padding: 1em 1em 0 2em;
    103   line-height:1em;
    104 }
    105 .toggleable a {
    106   text-decoration:none;
    107 }
    108 .toggleme a {
    109   text-decoration:underline;
    110 }
    111 .toggleable.closed .toggleme {
    112   display:none;
    113 }
    114 #jd-content .toggle-img {
    115   margin:0;
    116 }
    117 </style>
    118 
    119 <div class="toggleable opened">
    120   <a href="#" onclick="return toggleDiv(this)">
    121         <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
    122         Android 1.6, Revision 3</a> <em>(May 2010)</em></a>
    123   <div class="toggleme">
    124 <dl>
    125 <dt>Dependencies:</dt>
    126 <dd>
    127 <p>Requires SDK Tools r6 or higher.</p>
    128 </dd>
    129 <dt>Tools:</dt> 
    130 <dd>
    131 <ul> 
    132 <li>Adds support for library projects in the Ant build system.</li>
    133 </ul> 
    134 </dd>
    135 </dl>
    136  </div>
    137 </div>
    138 
    139 <div class="toggleable closed">
    140   <a href="#" onclick="return toggleDiv(this)">
    141         <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
    142         Android 1.6, Revision 2</a> <em>(December 2009)</em></a>
    143   <div class="toggleme">
    144 <dl>
    145 <dt>Dependencies:</dt>
    146 <dd>
    147 <p>Requires SDK Tools r4 or higher.</p>
    148 </dd>
    149 
    150 <dt>API related:</dt> 
    151 <dd>
    152 <ul> 
    153 <li>Properly exposes CDMA-related constants in <code><a href="{@docRoot}reference/android/telephony/TelephonyManager.html">android.telephony.TelephonyManager</a></code>: <code>DATA_ACTIVITY_DORMANT</code>,
    154 <code>PHONE_TYPE_CDMA</code>, <code>NETWORK_TYPE_CDMA</code>,
    155 <code>NETWORK_TYPE_EVDO_0</code>, <code>NETWORK_TYPE_EVDO_A</code>, and
    156 <code>NETWORK_TYPE_1xRTT</code>.</li> 
    157 </ul> 
    158 </dd>
    159 <dt>System image:</dt> 
    160 <dd>
    161 <ul> 
    162 <li>Fixes bug so that Bitmap's density is now propagated through Parcelable.</li> 
    163 <li>Fixes NinePatchDrawable to properly scale its reported padding for compatibility mode.</li> 
    164 <li>Fixes TextView to properly compute styled font metrics based on the screen density.</li> 
    165 <li>Updates kernel to 2.6.29, to match kernel on commercially
    166 available Android-powered devices.</li> 
    167 </ul> 
    168 </dd>
    169 <dt>Tools:</dt> 
    170 <dd>
    171 <ul> 
    172 <li>Adds new Ant build system with support for Emma instrumentation projects
    173 (code coverage).</li> 
    174 <li>Fixes emulator skins to properly emulate d-pad in landscape mode.</li> 
    175 <li>Fixes density rendering in the layout editor in ADT.</li> 
    176 </ul> 
    177 </dd>
    178 </dl>
    179  </div>
    180 </div>
    181 
    182 <div class="toggleable closed">
    183   <a href="#" onclick="return toggleDiv(this)">
    184         <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
    185         Android 1.6, Revision 1</a> <em>(September 2009)</em></a>
    186   <div class="toggleme">
    187 <dl>
    188 <dt>Dependencies</dt>
    189 <dd>
    190 <p>Requires SDK Tools r3 or higher.</p>
    191 </dd>
    192 </dl>
    193  </div>
    194 </div>
    195 
    196 
    197 <h2 id="api-level">API Level</h2>
    198 
    199 <p>The Android {@sdkPlatformVersion} platform delivers an updated version of
    200 the framework API. The Android {@sdkPlatformVersion} API
    201 is assigned an integer identifier &mdash;
    202 <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
    203 stored in the system itself. This identifier, called the "API Level", allows the
    204 system to correctly determine whether an application is compatible with
    205 the system, prior to installing the application. </p>
    206 
    207 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your
    208 application, you need to set the proper value, "{@sdkPlatformApiLevel}", in the
    209 <code>android:minSdkVersion</code> attributes of the <code>&lt;uses-sdk&gt;</code>
    210 element in your application's manifest. </p>
    211 
    212 <p>For more information about how to use API Level, see the <a
    213 href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
    214 
    215 
    216 <h2 id="api">Framework API Changes</h2>
    217 
    218 <p>The sections below provide information about the application framework API provided by the Android {@sdkPlatformVersion} platform. </p>
    219 
    220 <h3 id="UIFramework">UI framework</h3>
    221     <ul>
    222       <li>New classes in {@link android.view.animation}
    223       to control the behavior of animations:
    224         <ul>
    225           <li><code>AnticipateInterpolator</code></li>
    226           <li><code>AnticipateOvershootInterpolator</code></li>
    227           <li><code>BounceInterpolator</code></li>
    228           <li><code>OvershootInterpolator</code></li>
    229         </ul>
    230       </li>
    231       <li>New XML attribute <code>android:onClick</code> to specify a View's 
    232 <a href="/reference/android/view/View.OnClickListener.html">View.OnClickListener</a> 
    233 from a layout file.
    234       </li>
    235       <li>New support for dealing with varying screen densities. Density
    236 information is associated with Bitmap and Canvas for performing the
    237 correct scaling. The framework will automatically scale bitmaps and
    238 nine-patches based on the density the resource was found under and the
    239 density of the screen, etc.
    240       </li><p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to 
    241 set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code> 
    242 element in your application's manifest. </p>
    243     </ul>
    244 
    245 <h3>Search framework</h3>
    246   <ul>
    247     <li>Applications can now expose relevant content to users as search
    248 suggestions in the Quick Search Box, a new device-wide search capability that is
    249 accessible from the home screen. To support this, the search framework adds new
    250 attributes to the searchable metadata file. For complete information, see the
    251 {@link android.app.SearchManager SearchManager} documentation.
    252     </li>
    253   </ul>
    254 
    255 <h3>Accessibility framework</h3>
    256   <ul>
    257     <li>New {@link android.view.accessibility android.accessibility} package
    258 that includes classes for capturing accessibility events and forwarding them to
    259 an {@link android.accessibilityservice AccessibilityService} handler. </li>
    260     <li>New {@link android.accessibilityservice AccessibilityService} package
    261 that lets your application track user events and provide visual, audible, or
    262 haptic feedback to the user. </li>
    263   </ul>
    264 
    265 <h3>Gesture input</h3>
    266   <ul>
    267     <li>New {@link android.gesture gesture} API for creating, recognizing,
    268 loading, and saving gestures.</li>
    269   </ul>
    270 
    271 <h3>Text-to-speech</h3>
    272   <ul>
    273     <li>New {@link android.speech.tts android.speech.tts} package provides
    274 classes for synthesizing speech from text, for immediate playback or to create a
    275 sound file.</li>
    276   </ul>
    277 
    278 <h3>Graphics</h3>
    279   <ul>
    280     <li>Classes in {@link android.graphics android.graphics} now support scaling
    281 for different screen densities.</li>
    282   </ul>
    283 
    284 <h3>Telephony</h3>
    285   <ul>
    286     <li>New {@link android.telephony.SmsManager SmsManager} and other classes
    287 for sending and receiving SMS messages.</li>
    288   </ul>
    289 
    290 <h3>Utilities</h3>
    291   <ul>
    292     <li>New {@link android.util.DisplayMetrics DisplayMetrics} fields for
    293 determining the density of the current device screen.</li>
    294   </ul>
    295 
    296 <h3 id="AndroidManifest">Android Manifest elements</h3>
    297 
    298     <ul>
    299       <li>New <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code 
    300       &lt;supports-screens>}</a> element lets you specify the device screen sizes that your 
    301       application is designed and tested to support, where "size" is a combination
    302       of resolution and density. If your application is run on a device whose screen 
    303       size is not specified in the <code>&lt;supports-screen&gt;</code> element, the system 
    304       displays the application in <em>compatibility mode</em>, which performs best-effort scaling
    305       of the application UI to match the resolution and density of the screen. 
    306 
    307     <p>The attributes available for defining an application's screen support are:
    308 
    309         <ul>
    310 
    311           <li><code>smallScreen</code>: Boolean value that indicates whether the
    312             application is designed to run on devices with small screens. 
    313             Examples: QVGA low density; VGA high density.
    314           </li>
    315           <li><code>normalScreens</code>: Boolean value that indicates whether 
    316             the application is designed to run on devices with normal screens. 
    317             Examples: WQVGA low density; HVGA medium density; WVGA high density.
    318           </li>
    319           <li><code>largeScreens</code>: Boolean value that indicates whether 
    320             the application is designed to run on devices with significantly 
    321             larger screens, such that special care may be required on
    322             the application's part to make proper use of the screen area. 
    323             Examples: VGA medium density; WVGA medium density.
    324           </li>
    325           <li><code>anyDensity</code>: Boolean value that indicates whether 
    326             the application can accommodate any screen density.
    327           </li>
    328           <li><code>resizable</code>: Boolean value that indicates whether
    329             the application can expand its layout to fit slightly larger screens.
    330           </li>
    331         </ul>
    332     </p>
    333     </li>
    334 
    335       <li>New <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature>}</a>
    336         element lets an application specify hardware (or other)
    337         features that it requires to function normally. When an application
    338         specifies such features, the system allows the application to be installed only
    339         on devices that offer the required features. The element supports these
    340         attributes:
    341         <ul>
    342           <li><code>name</code>: The name of the feature required by the application. Currently accepts 
    343           "android.hardware.camera" and "android.hardware.camera.autofocus" values, which specify that a 
    344           camera and camera autofocus are required, respectively.</li>
    345           <li><code>glEsVersion</code>: Indicates the minimum version of OpenGL ES required.</li>
    346         </ul>
    347       </li>
    348       <li>New attributes for the 
    349       <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code &lt;uses-sdk>}</a> element:
    350         <ul>
    351           <li><code>targetSdkVersion</code>: Indicates the API Level that the application is targeting. 
    352           It is able to run on older versions (down to minSdkVersion), but was explicitly tested to 
    353           work with the version specified here. Specifying this version allows the platform to 
    354           disable compatibility code that is not required or enable newer features that are not 
    355           available to older applications. </li>
    356           <li><code>maxSdkVersion</code>: Indicates the maximum API Level on which an application is 
    357           designed to run. <strong>Important:</strong> Please read the <a
    358           href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
    359           documentation before using this attribute. </li>
    360         </ul>
    361       </li>
    362 
    363       </li>
    364     </ul>
    365 
    366 <h3>New permissions</h3>
    367 
    368     <ul>
    369       <li>{@link android.Manifest.permission#CHANGE_WIFI_MULTICAST_STATE
    370           CHANGE_WIFI_MULTICAST_STATE}: Allows applications to enter Wi-Fi 
    371           Multicast mode.
    372       </li>
    373       <li>{@link android.Manifest.permission#GLOBAL_SEARCH}: Allows the 
    374           global search system to access the data of a specified content provider.
    375       </li> 
    376       <li>{@link android.Manifest.permission#INSTALL_LOCATION_PROVIDER INSTALL_LOCATION_PROVIDER}: 
    377           Allows an application to install a location provider into the Location Manager.
    378       </li>
    379       <li>{@link android.Manifest.permission#READ_HISTORY_BOOKMARKS READ_HISTORY_BOOKMARKS}: 
    380           Allows an application to read (but not write) the user's browsing history 
    381           and bookmarks.
    382       </li>
    383       <li>{@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS WRITE_HISTORY_BOOKMARKS}: 
    384           Allows an application to write (but not read) the user's browsing history 
    385           and bookmarks.
    386       </li>
    387       <li>{@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE}: 
    388           Allows an application to write to external storage. Applications using API Level 3
    389           and lower will be implicitly granted this permission (and this will be visible to 
    390           the user); Applications using API Level 4 or higher must explicitly request this 
    391           permission.
    392       </li>
    393     </ul>
    394 
    395 
    396 <h3 id="api-diff">API differences report</h3>
    397 
    398 <p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to 
    399 the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API 
    400 Differences Report</a>.</p>
    401 
    402 <h2 id="apps">Built-in Applications</h2>
    403 
    404 <p>The system image included in the downloadable platform provides these
    405 built-in applications:</p>
    406 
    407 <table style="border:0;padding-bottom:0;margin-bottom:0;">
    408 <tr>
    409 <td style="border:0;padding-bottom:0;margin-bottom:0;">
    410 	<ul>
    411 	<li>Alarm Clock</li>
    412 	<li>Browser</li>
    413 	<li>Calculator</li>
    414 	<li>Camcorder</li>
    415 	<li>Camera</li>
    416 	<li>Contacts</li>
    417 	<li>Custom Locale (developer app)</li>
    418 	<li>Dev Tools (developer app)</li>
    419 	<li>Dialer</li>
    420 	</ul>
    421 </td>
    422 <td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
    423 	<ul>
    424 	<li>Email</li>
    425 	<li>Gallery</li>
    426 	<li>Gestures Builder</li>
    427 	<li>IME for Japanese text input</li>
    428 	<li>Messaging</li>
    429 	<li>Music</li>
    430 	<li>Settings</li>
    431 	<li>Spare Parts (developer app)</li>
    432 	</ul>
    433 </td>
    434 </tr>
    435 </table>
    436 
    437 <h2 id="locs" style="margin-top:.75em;">Locales</h2>
    438 
    439 <p>The system image included in the downloadable platform provides a variety of
    440 built-in locales. In some cases, region-specific strings are available for the
    441 locales. In other cases, a default version of the language is used. The
    442 languages that are available in the Android {@sdkPlatformVersion} system 
    443 image are listed below (with <em>language</em>_<em>country/region</em> 
    444 locale descriptor).</p>
    445 
    446 <table style="border:0;margin-bottom:0;padding-bottom:0;">
    447 <tr>
    448 <td style="border:0;padding-bottom:0;margin-bottom:0;">
    449 <ul>
    450 <li>Chinese, PRC (zh_CN)</li>
    451 <li>Chinese, Taiwan (zh_TW)</li>
    452 <li>Czech (cs_CZ)</li>
    453 <li>Dutch, Netherlands (nl_NL)</li>
    454 <li>Dutch, Belgium (nl_BE)</li>
    455 <li>English, US (en_US)</li>
    456 <li>English, Britain (en_GB)</li>
    457 <li>English, Canada (en_CA)</li>
    458 <li>English, Australia (en_AU)</li>
    459 <li>English, New Zealand (en_NZ)</li>
    460 <li>English, Singapore(en_SG)</li>
    461 <li>French, France (fr_FR)</li>
    462 <li>French, Belgium (fr_BE)</li>
    463 </ul>
    464 </td>
    465 <td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
    466 <li>French, Canada (fr_CA)</li>
    467 <li>French, Switzerland (fr_CH)</li>
    468 <li>German, Germany (de_DE)</li>
    469 <li>German, Austria (de_AT)</li>
    470 <li>German, Switzerland (de_CH)</li>
    471 <li>German, Liechtenstein (de_LI)</li>
    472 <li>Italian, Italy (it_IT)</li>
    473 <li>Italian, Switzerland (it_CH)</li>
    474 <li>Japanese (ja_JP)</li>
    475 <li>Korean (ko_KR)</li>
    476 <li>Polish (pl_PL)</li>
    477 <li>Russian (ru_RU)</li>
    478 <li>Spanish (es_ES)</li>
    479 </td>
    480 </tr>
    481 </table>
    482 
    483 <p>Localized UI strings match the locales that are accessible 
    484 through Settings.</p>
    485 
    486 <h2 id="skins">Emulator Skins</h2>
    487 
    488 <p>The downloadable platform includes a set of emulator skins that you can 
    489 use for modeling your application in different screen sizes and resolutions. 
    490 The emulator skins are: </p>
    491 
    492 <ul>
    493   <li>
    494     QVGA (240x320, low density, small screen)
    495   </li>
    496   <li>
    497     HVGA (320x480, medium density, normal screen)
    498   </li>
    499   <li>
    500     WVGA800 (480x800, high density, normal screen)
    501   </li>
    502   <li>
    503     WVGA854 (480x854 high density, normal screen)
    504   </li>
    505 </ul>
    506 
    507 <p>For more information about how to develop an application that displays and functions properly on all Android-powered devices, see <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.</p>
    508