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