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 »</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> <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 — Android 1.6 r2 — 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 — 202 <strong>{@sdkPlatformApiLevel}</strong> — 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><uses-sdk></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><uses-sdk></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 <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><supports-screen></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 <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 <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><uses-sdk></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