blob: f6dbee066a6e1a5c00ba3e13d28b6be51ef11349 [file] [log] [blame]
Dirk Dougherty9a6b4242011-12-12 13:49:31 -08001page.title=Android 4.0.3 Platform
2sdk.platform.version=4.0.3
3sdk.platform.apiLevel=15
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="#relnotes">Revisions</a></li>
12 <li><a href="#api">API Overview</a></li>
13 <li><a href="#Honeycomb">Previous APIs</a></li>
14 <li><a href="#api-level">API Level</a></li>
15 <li><a href="#apps">Built-in Applications</a></li>
16 <li><a href="#locs">Locales</a></li>
17 <li><a href="#skins">Emulator Skins</a></li>
18</ol>
19
20<h2>Reference</h2>
21<ol>
22<li><a
Dirk Dougherty8b6ed2d2011-12-16 00:01:52 -080023href="{@docRoot}sdk/api_diff/15/changes.html">API
Dirk Dougherty9a6b4242011-12-12 13:49:31 -080024Differences Report &raquo;</a> </li>
25</ol>
26
27</div>
28</div>
29
30<p><em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
31
32<p>Android {@sdkPlatformVersion} is an incremental release of the Android 4.x
33(Ice Cream Sandwich) platform family. This release includes new features for
34users and developers, API changes, and various bug fixes.</p>
35
36<p>For developers, the Android {@sdkPlatformVersion} platform is available as a
37downloadable component for the Android SDK. The development platform includes a
38fully compliant Android library and system image as well as a set of emulator
39skins, sample applications, and more. The downloadable platform includes no
40external libraries.</p>
41
42<p>To start developing or testing against Android {@sdkPlatformVersion},
43use the Android SDK Manager to download the platform into your SDK. For more
44information, see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
45Components</a>. If you are new to Android, <a
46href="{@docRoot}sdk/index.html">download the SDK Starter Package</a> first.</p>
47
48<p>For a high-level overview of the new user and developer features, see the
49<a href="http://developer.android.com/sdk/android-4.0-highlights.html">Platform
50Highlights</a>.</p>
51
52
53<h2 id="relnotes">Development Platform Revisions</h2>
54
55<p>The sections below provide notes about successive revisions of the Android
56{@sdkPlatformVersion} development platform for the Android SDK, as denoted by
57revision number. To determine what revisions you have installed in your SDK
58environment, refer to the "Installed Packages" listing in the Android SDK
59Manager.</p>
60
Joe Fernandezed2c2092012-01-17 12:53:58 -080061<p class="caution"><strong>Important:</strong> To download the new Android
624.0.x system components from the Android SDK Manager, you must first update the
63SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
64the Android 4.0.x system components will not be available for download.</p>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -080065
66<div class="toggle-content opened" style="padding-left:1em;">
67
68 <p><a href="#" onclick="return toggleContent(this)">
69 <img src="{@docRoot}assets/images/triangle-opened.png"
70class="toggle-content-img" alt="" />
Joe Fernandezeae02e62012-03-26 11:50:13 -070071 Revision 3</a> <em>(March 2012)</em>
72 </a></p>
73
74 <div class="toggle-content-toggleme" style="padding-left:2em;">
75
76 <p>Maintenance update. The system version is 4.0.4.</p>
77 <p class="note"><strong>Note:</strong> This system image includes support for emulator
78hardware graphics acceleration when used with SDK Tools r17 or higher.
79(<a href="{@docRoot}guide/developing/devices/emulator.html#accel-graphics">more info</a>)</p>
80 <dl>
81 <dt>Dependencies:</dt>
82 <dd>SDK Tools r17 or higher is required.</dd>
83 </dl>
84
85 </div>
86</div>
87
88<div class="toggle-content closed" style="padding-left:1em;">
89
90 <p><a href="#" onclick="return toggleContent(this)">
91 <img src="{@docRoot}assets/images/triangle-closed.png"
92class="toggle-content-img" alt="" />
Joe Fernandezdad557e2012-03-16 01:17:58 -070093 Revision 2</a> <em>(January 2012)</em>
Joe Fernandezed2c2092012-01-17 12:53:58 -080094 </a></p>
95
96 <div class="toggle-content-toggleme" style="padding-left:2em;">
97
Joe Fernandezdad557e2012-03-16 01:17:58 -070098 <p>Maintenance update. The system version is 4.0.3.</p>
99 <dl>
100 <dt>Dependencies:</dt>
101 <dd>SDK Tools r14 or higher is required.</dd>
102 </dl>
Joe Fernandezed2c2092012-01-17 12:53:58 -0800103
104 </div>
105</div>
106
107<div class="toggle-content closed" style="padding-left:1em;">
108
109 <p><a href="#" onclick="return toggleContent(this)">
110 <img src="{@docRoot}assets/images/triangle-closed.png"
111class="toggle-content-img" alt="" />
Joe Fernandezdad557e2012-03-16 01:17:58 -0700112 Revision 1</a> <em>(December 2011)</em>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800113 </a></p>
114
115 <div class="toggle-content-toggleme" style="padding-left:2em;">
116
Joe Fernandezdad557e2012-03-16 01:17:58 -0700117 <p>Initial release. The system version is 4.0.3.</p>
118 <dl>
119 <dt>Dependencies:</dt>
120 <dd>SDK Tools r14 or higher is required.</dd>
121 </dl>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800122
123 </div>
124</div>
125
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800126<h2 id="api">API Overview</h2>
127
128<p>The sections below provide a technical overview of new APIs in Android 4.0.3.</p>
129
130<div class="toggle-content closed" style="padding-left:1em;">
131
132 <p><a href="#" onclick="return toggleContent(this)">
133 <img src="{@docRoot}assets/images/triangle-closed.png"
134class="toggle-content-img" alt="" />
135 <strong>Table of Contents</strong>
136 </a></p>
137
138 <div class="toggle-content-toggleme" style="padding-left:2em;">
139 <ol class="toc" style="margin-left:-1em">
Scott Main611d03e2011-12-16 10:41:54 -0800140 <li><a href="#contacts">Social stream API in Contacts Provider</a></li>
141 <li><a href="#calendar">Calendar Provider</a></li>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800142 <li><a href="#widgets">Home screen widgets</a></li>
143 <li><a href="#textservices">Spell-checking</a></li>
144 <li><a href="#bluetooth">Bluetooth</a></li>
145 <li><a href="#ui">UI toolkit</a></li>
146 <li><a href="#accessibility">Accessibility</a></li>
147 <li><a href="#tts">Text-to-speech</a></li>
148 <li><a href="#database">Database</a></li>
149 <li><a href="#intents">Intents</a></li>
150 <li><a href="#camera">Camera</a></li>
151 <li><a href="#permissions">Permissions</a></li>
152 </ol>
153 </div>
154</div>
155
156
157
158
159
Scott Main611d03e2011-12-16 10:41:54 -0800160<h3 id="contacts">Social stream API in Contacts Provider</h3>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800161
162<p>Applications that use social stream data such as status updates and check-ins
163can now sync that data with each of the users contacts, providing items in a
164stream along with photos for each.</p>
165
166<p>The database table that contains an individual contacts social stream is
167defined by {@link android.provider.ContactsContract.StreamItems}, the Uri for
168which is nested within the {@link android.provider.ContactsContract.RawContacts}
169directory to which the stream items belong. Each social stream table includes
170several columns for metadata about each stream item, such as an icon
171representing the source (an avatar), a label for the item, the primary text
172content, comments about the item (such as responses from other people), and
173more. Photos associated with a stream are stored in another table, defined by
174{@link android.provider.ContactsContract.StreamItemPhotos}, which is available
175as a sub-directory of the {@link android.provider.ContactsContract.StreamItems}
176Uri.</p>
177
178<p>See {@link android.provider.ContactsContract.StreamItems} and
179{@link android.provider.ContactsContract.StreamItemPhotos} for more information.</p>
180
181<p>To read or write social stream items for a contact, an application must
182request permission from the user by declaring <code>&lt;uses-permission
183android:name="android.permission.READ_SOCIAL_STREAM"&gt;</code> and/or <code>&lt;uses-permission
184android:name="android.permission.WRITE_SOCIAL_STREAM"&gt;</code> in their manifest files.</p>
185
Scott Main611d03e2011-12-16 10:41:54 -0800186<h3 id="calendar">Calendar Provider</h4>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800187<ul>
188<li>Adds the class {@link android.provider.CalendarContract.Colors} to represent
Scott Main611d03e2011-12-16 10:41:54 -0800189a color table in the <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Calendar
190Provider</a>. The class provides fields for accessing
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800191colors available for a given account. Colors are referenced by
192{@link android.provider.CalendarContract.ColorsColumns#COLOR_KEY COLOR_KEY}
193which must be unique for a given account name/type. These values can only be
194updated by the sync adapter.</li>
195<li>Adds {@link android.provider.CalendarContract.CalendarColumns#ALLOWED_AVAILABILITY ALLOWED_AVAILABILITY}
196and
197{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_ATTENDEE_TYPES ALLOWED_ATTENDEE_TYPES}
198for exchange/sync support.</li>
199<li>Adds {@link android.provider.CalendarContract.AttendeesColumns#TYPE_RESOURCE}
200(such as conference rooms) for attendees and
201{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY_TENTATIVE},
202as well as {@link android.provider.CalendarContract.EventsColumns#EVENT_COLOR_KEY}
203for events.</li>
204</ul>
205
206<h3 id="widgets">Home screen widgets</h3>
207
208<p>Starting from Android 4.0, home screen widgets should no longer include their
209own padding. Instead, the system now automatically adds padding for each widget,
210based the characteristics of the current screen. This leads to a more uniform,
211consistent presentation of widgets in a grid. To assist applications that host
212home screen widgets, the platform provides a new method
213{@link android.appwidget.AppWidgetHostView#getDefaultPaddingForWidget(android.content.Context, android.content.ComponentName, android.graphics.Rect)
214getDefaultPaddingForWidget()}. Applications can call this method to get the
215system-defined padding and account for it when computing the number of cells to
216allocate to the widget.</p>
217
218<h3 id="textservices">Spell-checking</h3>
219
220<ul>
221<li>For apps that accessing spell-checker services, a new {@link
222android.view.textservice.SpellCheckerSession#cancel() cancel()} method cancels
223any pending and running spell-checker tasks in a session.</li>
224
225<li>For spell-checker services, a new suggestions flag,
226{@link android.view.textservice.SuggestionsInfo#RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS},
227lets the services distinguish higher-confidence suggestions from
228lower-confidence ones. For example, a spell-checker could set the flag if an
229input word is not in the user dictionary but has likely suggestions, or not set
230the flag if an input word is not in the dictionary and has suggestions that are
231likely to be less useful.
232
233<p>Apps connected to the spell-checker can use the {@link
234android.view.textservice.SuggestionsInfo#RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS}
235flag in combination with other suggestion attributes, as well as the {@link
236android.view.textservice.SuggestionsInfo#getSuggestionsAttributes()} and {@link
237android.view.textservice.SuggestionsInfo#getSuggestionsCount()} methods, to
238determine whether to mark input words as typos and offer suggestions.</p></li>
239
240<li>A new {@link android.text.style.SuggestionSpan#FLAG_AUTO_CORRECTION} style
241for text spans indicates that auto correction is about to be applied to a
242word/text that the user is typing/composing. This type of suggestion is rendered
243differently, to indicate the auto correction is happening.</li>
244</ul>
245
246<h3 id="bluetooth">Bluetooth</h3>
247<p>New public methods {@link
248android.bluetooth.BluetoothDevice#fetchUuidsWithSdp()} and {@link
249android.bluetooth.BluetoothDevice#getUuids()} let apps determine the features
250(UUIDs) supported by a remote device. In the case of {@link
251android.bluetooth.BluetoothDevice#fetchUuidsWithSdp()}, the system performs a
252service discovery on the remote device to get the UUIDs supported, then
253broadcasts the result in an {@link
254android.bluetooth.BluetoothDevice#ACTION_UUID} intent.</p>
255
256<h3 id="ui">UI toolkit</h3>
257
258<p>New methods {@link android.app.Fragment#setUserVisibleHint(boolean) setUserVisibleHint()} and
259{@link android.app.Fragment#getUserVisibleHint() getUserVisibleHint()} allow a
260fragment to set a hint of whether or not it is currently user-visible. The
261system defers the start of fragments that are not user-visible until the loaders
262for visible fragments have run. The visibility hint is "true" by default.</li>
263</p>
264
265<h3 id="graphics">Graphics</h3>
266
267<ul>
268<li>New method {@link android.graphics.SurfaceTexture#setDefaultBufferSize(int
Dirk Dougherty8b6ed2d2011-12-16 00:01:52 -0800269width, int height)} in {@link android.graphics.SurfaceTexture} sets the default size of the image
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800270buffers. This method may be used to set the image size when producing images
271with {@link android.graphics.Canvas} (via {@link
272android.view.Surface#lockCanvas}), or OpenGL ES (via an EGLSurface).</li>
273<li>Adds definitions for the enums of the GL_OES_EGL_image_external OpenGL ES extension &mdash;
274{@link android.opengl.GLES11Ext#GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES},
275{@link android.opengl.GLES11Ext#GL_SAMPLER_EXTERNAL_OES},
276{@link android.opengl.GLES11Ext#GL_TEXTURE_BINDING_EXTERNAL_OES}, and
277{@link android.opengl.GLES11Ext#GL_TEXTURE_EXTERNAL_OES}.</li>
278</ul>
279
280<h3 id="accessibility">Accessibility</h3>
281
282<ul>
283<li>Clients of {@link android.widget.RemoteViews} can now use the method {@link
284android.widget.RemoteViews#setContentDescription(int, java.lang.CharSequence)
285setContentDescription()} to set and get the content description of any View in
286the inflated layout.</li>
287
288<li>The methods {@link android.view.accessibility.AccessibilityRecord#getMaxScrollX()},
289{@link android.view.accessibility.AccessibilityRecord#getMaxScrollY()},
290{@link android.view.accessibility.AccessibilityRecord#setMaxScrollX(int) setMaxScrollX()}, and
291{@link android.view.accessibility.AccessibilityRecord#setMaxScrollY(int) setMaxScrollY()}
292allow apps to get and set the maximum scroll offset for an
293{@link android.view.accessibility.AccessibilityRecord} object.</li>
294
295<li>When touch-exploration mode is enabled, a new secure setting
296{@link android.provider.Settings.Secure#ACCESSIBILITY_SPEAK_PASSWORD}
297indicates whether the user requests the IME to speak text entered in password fields, even when
298a headset is not in use. By default, no password text is spoken unless a headset
299is in use.</li>
300</ul>
301
302<h3 id="tts">Text-to-speech</h3>
303
304<ul>
305<li>Adds the new method {@link
306android.speech.tts.TextToSpeech.Engine#getFeatures(java.util.Locale)
307getFeatures()}for querying and enabling network TTS support.
308<li>Adds a new listener class, {@link
309android.speech.tts.UtteranceProgressListener}, that engines can register to
Scott Main611d03e2011-12-16 10:41:54 -0800310receive notification of speech-synthesis errors.</li>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800311</ul>
312
313<h3 id="database">Database</h3>
314
315<ul>
316<li>A new {@link android.database.CrossProcessCursorWrapper} class lets content
Scott Main611d03e2011-12-16 10:41:54 -0800317providers return results for a cross-process query more efficiently. The new
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800318class is a useful building block for wrapping cursors that will be sent to
319processes remotely. It can also transform normal {@link android.database.Cursor}
320objects into {@link android.database.CrossProcessCursor} objects
321transparently.
322
323<p>The {@link android.database.CrossProcessCursorWrapper} class fixes common
324performance issues and bugs that applications have encountered when
325implementing content providers.</p></li>
326
327<li>The {@link android.database.CursorWindow#CursorWindow(java.lang.String)}
328constructor now takes a name string as input. The system no longer distinguishes
329between local and remote cursor windows, so {@link
330android.database.CursorWindow#CursorWindow(boolean)} is now deprecated.</li>
331</ul>
332
333<h3 id="intents">Intents</h3>
334
Scott Main611d03e2011-12-16 10:41:54 -0800335<p>Adds new categories for targeting common types of applications on the
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800336device, such as {@link android.content.Intent#CATEGORY_APP_BROWSER}, {@link
337android.content.Intent#CATEGORY_APP_CALENDAR}, {@link
338android.content.Intent#CATEGORY_APP_MAPS}, and more.</li>
339
340<h3 id="camera">Camera</h3>
341
342<ul>
343<li>{@link android.media.MediaMetadataRetriever} adds the new constant
344{@link android.media.MediaMetadataRetriever#METADATA_KEY_LOCATION} to let apps
345access retrieve location information for an image or video. </li>
346
347<li>{@link android.media.CamcorderProfile} adds the QVGA (320x240) resolution
348profiles. Quality level is represented by the
349{@link android.media.CamcorderProfile#QUALITY_QVGA}.and
350{@link android.media.CamcorderProfile#QUALITY_TIME_LAPSE_QVGA} constants.</li>
351
352<li>New methods {@link android.hardware.Camera.Parameters#setVideoStabilization(boolean) setVideoStabilization()},
Dirk Dougherty8b6ed2d2011-12-16 00:01:52 -0800353{@link android.hardware.Camera.Parameters#getVideoStabilization() setVideoStabilization()}, and {@link android.hardware.Camera.Parameters#isVideoStabilizationSupported() isVideoStabilizationSupported()}
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800354let you check and manage video stabilization for a {@link android.hardware.Camera}.</li>
355</ul>
356
357<h3 id="Permissions">Permissions</h3>
358
359<p>The following are new permissions:</p>
360<ul>
361<li>{@link android.Manifest.permission#READ_SOCIAL_STREAM} and
362{@link android.Manifest.permission#WRITE_SOCIAL_STREAM}: Allow a sync
363adapter to read and write social stream data to a contact in the shared
Scott Main611d03e2011-12-16 10:41:54 -0800364Contacts Provider.</li>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800365</ul>
366
367
368<div class="special" style="margin-top:2em">
369<p>For a detailed view of all API changes in Android {@sdkPlatformVersion} (API Level
370{@sdkPlatformApiLevel}), see the <a
371href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API Differences Report</a>.</p>
372</div>
373
374
375<h2 id="api-level">API Level</h2>
376
377<p>The Android {@sdkPlatformVersion} API is assigned an integer
378identifier&mdash;<strong>{@sdkPlatformApiLevel}</strong>&mdash;that is stored in the system itself.
379This identifier, called the "API level", allows the system to correctly determine whether an
380application is compatible with the system, prior to installing the application. </p>
381
382<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need compile the
383application against an Android platform that supports API level {@sdkPlatformApiLevel} or
384higher. Depending on your needs, you might also need to add an
385<code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code> attribute to the
386<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code &lt;uses-sdk&gt;}</a>
387element.</p>
388
389<p>For more information, see the <a href="{@docRoot}guide/appendix/api-levels.html">API Levels</a>
390document. </p>
391
392
393<h2 id="apps">Built-in Applications</h2>
394
395<p>The system image included in the downloadable platform provides these
396built-in applications:</p>
397
398<table style="border:0;padding-bottom:0;margin-bottom:0;">
399<tr>
400<td style="border:0;padding-bottom:0;margin-bottom:0;">
401<ul>
402<li>API Demos</li>
403<li>Browser</li>
404<li>Calculator</li>
405<li>Calendar</li>
406<li>Camera</li>
407<li>Clock</li>
408<li>Custom Locale</li>
409<li>Dev Tools</li>
410<li>Downloads</li>
411<li>Email</li>
412<li>Gallery</li>
413</ul>
414</td>
415<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
416<ul>
417<li>Gestures Builder</li>
418<li>Messaging</li>
419<li>Music</li>
420<li>People</li>
421<li>Phone</li>
422<li>Search</li>
423<li>Settings</li>
424<li>Speech Recorder</li>
425<li>Widget Preview</li>
426</ul>
427</td>
428</tr>
429</table>
430
431
432<h2 id="locs" style="margin-top:.75em;">Locales</h2>
433
434<p>The system image included in the downloadable SDK platform provides a variety of built-in
435locales. In some cases, region-specific strings are available for the locales. In other cases, a
436default version of the language is used. The languages that are available in the Android 3.0 system
437image are listed below (with <em>language</em>_<em>country/region</em> locale descriptor).</p>
438
439<table style="border:0;padding-bottom:0;margin-bottom:0;">
440<tr>
441<td style="border:0;padding-bottom:0;margin-bottom:0;">
442<ul>
443<li>Arabic, Egypt (ar_EG)</li>
444<li>Arabic, Israel (ar_IL)</li>
445<li>Bulgarian, Bulgaria (bg_BG)</li>
446<li>Catalan, Spain (ca_ES)</li>
447<li>Czech, Czech Republic (cs_CZ)</li>
448<li>Danish, Denmark(da_DK)</li>
449<li>German, Austria (de_AT)</li>
450<li>German, Switzerland (de_CH)</li>
451<li>German, Germany (de_DE)</li>
452<li>German, Liechtenstein (de_LI)</li>
453<li>Greek, Greece (el_GR)</li>
454<li>English, Australia (en_AU)</li>
455<li>English, Canada (en_CA)</li>
456<li>English, Britain (en_GB)</li>
457<li>English, Ireland (en_IE)</li>
458<li>English, India (en_IN)</li>
459<li>English, New Zealand (en_NZ)</li>
460<li>English, Singapore(en_SG)</li>
461<li>English, US (en_US)</li>
Scott Mainb16965c2012-01-30 23:33:01 -0800462<li>English, South Africa (en_ZA)</li>
Dirk Dougherty9a6b4242011-12-12 13:49:31 -0800463<li>Spanish (es_ES)</li>
464<li>Spanish, US (es_US)</li>
465<li>Finnish, Finland (fi_FI)</li>
466<li>French, Belgium (fr_BE)</li>
467<li>French, Canada (fr_CA)</li>
468<li>French, Switzerland (fr_CH)</li>
469<li>French, France (fr_FR)</li>
470<li>Hebrew, Israel (he_IL)</li>
471<li>Hindi, India (hi_IN)</li>
472</ul>
473</td>
474<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
475<li>Croatian, Croatia (hr_HR)</li>
476<li>Hungarian, Hungary (hu_HU)</li>
477<li>Indonesian, Indonesia (id_ID)</li>
478<li>Italian, Switzerland (it_CH)</li>
479<li>Italian, Italy (it_IT)</li>
480<li>Japanese (ja_JP)</li>
481<li>Korean (ko_KR)</li>
482<li>Lithuanian, Lithuania (lt_LT)</li>
483<li>Latvian, Latvia (lv_LV)</li>
484<li>Norwegian bokmål, Norway (nb_NO)</li>
485<li>Dutch, Belgium (nl_BE)</li>
486<li>Dutch, Netherlands (nl_NL)</li>
487<li>Polish (pl_PL)</li>
488<li>Portuguese, Brazil (pt_BR)</li>
489<li>Portuguese, Portugal (pt_PT)</li>
490<li>Romanian, Romania (ro_RO)</li>
491<li>Russian (ru_RU)</li></li>
492<li>Slovak, Slovakia (sk_SK)</li>
493<li>Slovenian, Slovenia (sl_SI)</li>
494<li>Serbian (sr_RS)</li>
495<li>Swedish, Sweden (sv_SE)</li>
496<li>Thai, Thailand (th_TH)</li>
497<li>Tagalog, Philippines (tl_PH)</li>
498<li>Turkish, Turkey (tr_TR)</li>
499<li>Ukrainian, Ukraine (uk_UA)</li>
500<li>Vietnamese, Vietnam (vi_VN)</li>
501<li>Chinese, PRC (zh_CN)</li>
502<li>Chinese, Taiwan (zh_TW)</li>
503</td>
504</tr>
505</table>
506
507<p class="note"><strong>Note:</strong> The Android platform may support more
508locales than are included in the SDK system image. All of the supported locales
509are available in the <a href="http://source.android.com/">Android Open Source
510Project</a>.</p>
511
512<h2 id="skins">Emulator Skins</h2>
513
514<p>The downloadable platform includes the following emulator skins:</p>
515
516<ul>
517 <li>
518 QVGA (240x320, low density, small screen)
519 </li>
520 <li>
521 WQVGA400 (240x400, low density, normal screen)
522 </li>
523 <li>
524 WQVGA432 (240x432, low density, normal screen)
525 </li>
526 <li>
527 HVGA (320x480, medium density, normal screen)
528 </li>
529 <li>
530 WVGA800 (480x800, high density, normal screen)
531 </li>
532 <li>
533 WVGA854 (480x854 high density, normal screen)
534 </li>
535 <li>
536 WXGA720 (1280x720, extra-high density, normal screen)
537 </li>
538 <li>
539 WSVGA (1024x600, medium density, large screen)
540 </li>
541 <li>
542 WXGA (1280x800, medium density, xlarge screen)
543 </li>
544</ul>
545
546<p>To test your application on an emulator that represents the latest Android device, you can create
547an AVD with the new WXGA720 skin (it's an xhdpi, normal screen device). Note that the emulator
548currently doesn't support the new on-screen navigation bar for devices without hardware navigation
549buttons, so when using this skin, you must use keyboard keys <em>Home</em> for the Home button,
550<em>ESC</em> for the Back button, and <em>F2</em> or <em>Page-up</em> for the Menu button.</p>
551
552<p>However, due to performance issues in the emulator when running high-resolution screens such as
553the one for the WXGA720 skin, we recommend that you primarily use the traditional WVGA800 skin
554(hdpi, normal screen) to test your application.</p>
555