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