blob: 7a5b044c968784ea171571b391810e0f97f342a5 [file] [log] [blame]
Dirk Doughertyfefa95a2011-02-07 17:32:11 -08001page.title=Android 2.3.3 Platform
2sdk.platform.version=2.3.3
3sdk.platform.apiLevel=10
4
5
6@jd:body
7
8<div id="qv-wrapper">
9<div id="qv">
10
11<h2>In this document</h2>
12<ol>
13 <li><a href="#relnotes">Revisions</a></li>
14 <li><a href="#api">API Overview</a></li>
15 <li><a href="#api-level">API Level</a></li>
16 <li><a href="#apps">Built-in Applications</a></li>
17 <li><a href="#locs">Locales</a></li>
18 <li><a href="#skins">Emulator Skins</a></li>
19</ol>
20
21<h2>Reference</h2>
22<ol>
23<li><a
24href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
25Differences Report &raquo;</a> </li>
26</ol>
27
28<h2>See Also</h2>
29<ol>
30 <li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
31</ol>
32
33</div>
34</div>
35
36<p>
37<em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
38
39<p>Android 2.3.3 is a small feature release that adds several improvements
40and APIs to the Android 2.3 platform.</p>
41
42<p>For developers, the Android {@sdkPlatformVersion} platform is available as a
43downloadable component for the Android SDK. The downloadable platform includes
44an Android library and system image, as well as a set of emulator
45skins and more. The downloadable platform
46includes no external libraries.</p>
47
48<p>To get started developing or testing against Android
49{@sdkPlatformVersion}, use the Android SDK Manager to
50download the platform into your SDK. For more information,
51see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
52Components</a>. If you are new to Android, <a
53href="{@docRoot}sdk/index.html">download the SDK Starter Package</a>
54first.</p>
55
56<p>For a high-level introduction to Android 2.3, see the <a
Scott Mainea723292011-02-09 16:01:04 -080057href="{@docRoot}sdk/android-2.3-highlights.html">Platform Highlights</a>.</p>
Dirk Doughertyfefa95a2011-02-07 17:32:11 -080058
59
60<h2 id="relnotes">Revisions</h2>
61
62<p>The sections below provide notes about successive releases of
63the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
64revision number. To determine what revision(s) of the Android
65{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
66the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
67
Dirk Doughertyfefa95a2011-02-07 17:32:11 -080068
Scott Main5465e052011-07-26 18:29:44 -070069<div class="toggle-content opened" style="padding-left:1em;">
70
71<p><a href="#" onclick="return toggleContent(this)">
72 <img src="{@docRoot}assets/images/triangle-opened.png"
73class="toggle-content-img" alt="" />
74 Android {@sdkPlatformVersion}, Revision 2</a> <em>(July 2011)</em>
75</a></p>
76
77<div class="toggle-content-toggleme" style="padding-left:2em;">
78
79<dl>
80<dt>Dependencies:</dt>
81<dd>
82<p>Requires <a href="{@docRoot}sdk/tools-notes.html">SDK Tools r12</a> or
83higher.</p>
84</dd>
85<dt>Notes:</dt>
86<dd>
87<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
88Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
89bugs in the previous rendering library. It also unlocks several editor features that were added in
90ADT 12.</p>
91</dd>
92</dl>
93
94</div>
95</div>
96
97<div class="toggle-content closed" style="padding-left:1em;">
98
99<p><a href="#" onclick="return toggleContent(this)">
100 <img src="{@docRoot}assets/images/triangle-closed.png"
101class="toggle-content-img" alt="" />
102 Android {@sdkPlatformVersion}, Revision 1</a> <em>(February 2011)</em>
103</a></p>
104
105<div class="toggle-content-toggleme" style="padding-left:2em;">
Dirk Doughertyfefa95a2011-02-07 17:32:11 -0800106<dl>
107<dt>Dependencies:</dt>
108<dd>
109<p>Requires SDK Tools r9 or higher.</p>
110</dd>
Dirk Doughertyfefa95a2011-02-07 17:32:11 -0800111</dl>
Scott Main5465e052011-07-26 18:29:44 -0700112
113</div>
Dirk Doughertyfefa95a2011-02-07 17:32:11 -0800114</div>
115
116
117<h2 id="api">API Overview</h2>
118
119<p>The sections below provide a technical overview of what's new for developers
120in {@sdkPlatformVersion}, including new features and changes in the framework
121API since the previous version.</p>
122
123<h3 id="nfc">Near Field Communications (NFC)</h3>
124
125<p>Android 2.3.3 provides improved and extended support for NFC, to allow
126applications to interact with more types of tags in new ways.</p>
127
128<p>A new, comprehensive set of APIs give applications read and write access
129to a wider range of standard tag technologies, including:</p>
130
131<ul>
132<li>NFC-A (ISO 14443-3A)</li>
133<li>NFC-B (ISO 14443-3B)</li>
134<li>NFC-F (JIS 6319-4)</li>
135<li>NFC-V (ISO 15693)</li>
136<li>ISO-DEP (ISO 14443-4)</li>
Jeff Hamilton734e9b02011-05-25 17:37:51 -0500137<li>MIFARE Classic</li>
138<li>MIFARE Ultralight</li>
Dirk Doughertyfefa95a2011-02-07 17:32:11 -0800139<li>NFC Forum NDEF tags</li>
140</ul>
141
142<p>The platform also provides a limited peer-to-peer communication protocol
143and API. Foreground Activities can use the API to register an NDEF
144message that will get pushed to other NFC devices when they connect.</p>
145
146<p>Advanced tag dispatching now gives applications more control over how and
147when they are launched, when an NFC tag is discovered. Previously, the platform
148used a single-step intent dispatch to notify interested applications that a tag
149was discovered. The platform now uses a four-step process that enables the
150foreground application to take control of a tag event before it is passed to any
151other applications (<code>android.nfc.NfcAdapter.enableForegroundDispatch()</code>).
152
153The new dispatch process also lets apps listen for specific tag content and
154tag technologies, based on two new intent actions &mdash;
155<code>android.nfc.action.NDEF_DISCOVERED</code> and
156<code>android.nfc.action.TECH_DISCOVERED</code>.</p>
157
158<p>The NFC API is available in the {@link android.nfc} and
159{@link android.nfc.tech} packages. The key classes are: </p>
160
161<ul>
162<li>{@link android.nfc.NfcAdapter}, which represents the NFC hardware on the device.</li>
163<li>{@link android.nfc.NdefMessage}, which represents an NDEF data message,
164the standard format in which "records" carrying data are transmitted between
165devices and tags. An NDEF message certain many NDEF records of different types.
166Applications can receive these messages from
167{@link android.nfc.NfcAdapter#ACTION_NDEF_DISCOVERED NDEF_DISCOVERED},
168{@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED TECH_DISCOVERED}, or
169{@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED TAG_DISCOVERED} Intents.</li>
170<li>{@link android.nfc.NdefRecord}, delivered in an
171{@link android.nfc.NdefMessage}, which describes the type of data being shared
172and carries the data itself.</li>
173<li>{@link android.nfc.Tag}, which represents a tag scanned by the device.
174Multiple types of tags are supported, based on the underlying tag
175technology.</li>
176<li>{@link android.nfc.tech.TagTechnology}, an interface that gives applications
177access to tag properties and I/O operations based on the technologies present
178in the tag. For a full list of tag technologies supported in Android 2.3.3, see
179{@link android.nfc.tech}.</li>
180</ul>
181
182<p>NFC communication relies on wireless technology in the device hardware, and
183is not present in all Android devices. Android devices that do not support
184NFC will return a null object when
185{@link android.nfc.NfcAdapter#getDefaultAdapter(android.content.Context)
186getDefaultAdapter(Context)} is called, and
187<code>context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)</code>
188will return <code>false</code>. The NFC API is always present, however, regardless of
189underlying hardware support.</p>
190
191<p>To use the NFC API, applications must request permission from the user by
192declaring <code>&lt;uses-permission
193android:name="android.permission.NFC"&gt;</code> in their manifest files.</p>
194
195<p>Additionally, developers can request filtering on Android Market, such that
196their applications are not discoverable to users whose devices do not support
197NFC. To request filtering, add
198<code>&lt;uses-feature android:name="android.hardware.nfc"
199android:required="true"&gt;</code> to the application's manifest.</p>
200
201<p class="note">To look at sample code for NFC, see
202<a href="{@docRoot}resources/samples/NFCDemo/index.html">NFCDemo app</a>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.html">filtering by tag technology</a></li>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html">using foreground dispatch</a>, and <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.html">foreground NDEF push (P2P)</a>.</p>
203
204<h3 id="bluetooth">Bluetooth</h3>
205
206<p>Android 2.3.3 adds platform and API support for Bluetooth nonsecure socket
207connections. This lets applications communicate with simple devices that may not
208offer a UI for authentication. See
209{@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and
210{@link android.bluetooth.BluetoothAdapter#listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID)}
211for more information. </p>
212
213<h3 id="graphics">Graphics</h3>
214
215<ul>
216<li>A new {@link android.graphics.BitmapRegionDecoder} class lets applications
217decode a rectangle region from an image. The API is particularly useful when an
218original image is large and and the application only need parts of the image.
219</li>
220<li>A new {@link
221android.graphics.BitmapFactory.Options#inPreferQualityOverSpeed} field in {@link
222android.graphics.BitmapFactory.Options} allows applications to use a more accurate
223but slightly slower IDCT method in JPEG decode. This in turn improves the
224quality of the reconstructed image.</li>
225</ul>
226
227
228<h3 id="media">Media framework</h3>
229
230<ul>
231<li>A new {@link android.media.MediaMetadataRetriever} class provides a unified
232interface for retrieving frame and metadata from an input media file.</li>
233<li>{@link android.media.MediaRecorder.AudioEncoder} and {@link
234android.media.MediaRecorder.OutputFormat} include new fields for specifying AMR
235Wideband and AAC formats. </li>
236</ul>
237
238
239<h3 id="speech">Speech recognition</h3>
240
241<p>The speech-recognition API includes new constants to let you manage voice
242search results in new ways. Although the new constants are not needed for normal
243use of speech recognition, you could use them to offer a different view of voice
244search results in your application. For information, see {@link
245android.speech.RecognizerResultsIntent}.</p>
246
247
248<h2 id="api-level">API Level</h2>
249
250<p>The Android {@sdkPlatformVersion} platform delivers an updated version of
251the framework API. The Android {@sdkPlatformVersion} API
252is assigned an integer identifier &mdash;
253<strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
254stored in the system itself. This identifier, called the "API Level", allows the
255system to correctly determine whether an application is compatible with
256the system, prior to installing the application. </p>
257
258<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
259you need compile the application against the Android library that is provided in
260the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
261also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
262attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
263manifest. If your application is designed to run only on Android 2.3 and higher,
264declaring the attribute prevents the application from being installed on earlier
265versions of the platform.</p>
266
267<p>For more information about how to use API Level, see the <a
268href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
269
270<h2 id="apps">Built-in Applications</h2>
271
272<p>The system image included in the downloadable platform provides these
273built-in applications:</p>
274
275<table style="border:0;padding-bottom:0;margin-bottom:0;">
276<tr>
277<td style="border:0;padding-bottom:0;margin-bottom:0;">
278<ul>
279<li>Browser</li>
280<li>Calculator</li>
281<li>Camera</li>
282<li>Clock</li>
283<li>Contacts</li>
284<li>Cusom Locale</li>
285<li>Dev Tools</li>
286<li>Downloads</li>
287<li>Email</li>
288</ul>
289</td>
290<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
291<ul>
292<li>Gallery</li>
293<li>IMEs for Japanese, Chinese, and Latin text input</li>
294<li>Messaging</li>
295<li>Music</li>
296<li>Phone</li>
297<li>Search</li>
298<li>Settings</li>
299<li>Spare Parts (developer app)</li>
300<li>Speech Recorder</li>
301</ul>
302</td>
303</tr>
304</table>
305
306
307<h2 id="locs" style="margin-top:.75em;">Locales</h2>
308
309<p>The system image included in the downloadable SDK platform provides a variety of
310built-in locales. In some cases, region-specific strings are available for the
311locales. In other cases, a default version of the language is used. The
312languages that are available in the Android {@sdkPlatformVersion} system
313image are listed below (with <em>language</em>_<em>country/region</em> locale
314descriptor).</p>
315
316<table style="border:0;padding-bottom:0;margin-bottom:0;">
317<tr>
318<td style="border:0;padding-bottom:0;margin-bottom:0;">
319<ul>
320<li>Arabic, Egypt (ar_EG)</li>
321<li>Arabic, Israel (ar_IL)</li>
322<li>Bulgarian, Bulgaria (bg_BG)</li>
323<li>Catalan, Spain (ca_ES)</li>
324<li>Czech, Czech Republic (cs_CZ)</li>
325<li>Danish, Denmark(da_DK)</li>
326<li>German, Austria (de_AT)</li>
327<li>German, Switzerland (de_CH)</li>
328<li>German, Germany (de_DE)</li>
329<li>German, Liechtenstein (de_LI)</li>
330<li>Greek, Greece (el_GR)</li>
331<li>English, Australia (en_AU)</li>
332<li>English, Canada (en_CA)</li>
333<li>English, Britain (en_GB)</li>
334<li>English, Ireland (en_IE)</li>
335<li>English, India (en_IN)</li>
336<li>English, New Zealand (en_NZ)</li>
337<li>English, Singapore(en_SG)</li>
338<li>English, US (en_US)</li>
339<li>English, Zimbabwe (en_ZA)</li>
340<li>Spanish (es_ES)</li>
341<li>Spanish, US (es_US)</li>
342<li>Finnish, Finland (fi_FI)</li>
343<li>French, Belgium (fr_BE)</li>
344<li>French, Canada (fr_CA)</li>
345<li>French, Switzerland (fr_CH)</li>
346<li>French, France (fr_FR)</li>
347<li>Hebrew, Israel (he_IL)</li>
348<li>Hindi, India (hi_IN)</li>
349</ul>
350</td>
351<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
352<li>Croatian, Croatia (hr_HR)</li>
353<li>Hungarian, Hungary (hu_HU)</li>
354<li>Indonesian, Indonesia (id_ID)</li>
355<li>Italian, Switzerland (it_CH)</li>
356<li>Italian, Italy (it_IT)</li>
357<li>Japanese (ja_JP)</li>
358<li>Korean (ko_KR)</li>
359<li>Lithuanian, Lithuania (lt_LT)</li>
360<li>Latvian, Latvia (lv_LV)</li>
361<li>Norwegian-Bokmol, Norway(nb_NO)</li>
362<li>Dutch, Belgium (nl_BE)</li>
363<li>Dutch, Netherlands (nl_NL)</li>
364<li>Polish (pl_PL)</li>
365<li>Portuguese, Brazil (pt_BR)</li>
366<li>Portuguese, Portugal (pt_PT)</li>
367<li>Romanian, Romania (ro_RO)</li>
368<li>Russian (ru_RU)</li></li>
369<li>Slovak, Slovakia (sk_SK)</li>
370<li>Slovenian, Slovenia (sl_SI)</li>
371<li>Serbian (sr_RS)</li>
372<li>Swedish, Sweden (sv_SE)</li>
373<li>Thai, Thailand (th_TH)</li>
374<li>Tagalog, Philippines (tl_PH)</li>
375<li>Turkish, Turkey (tr_TR)</li>
376<li>Ukrainian, Ukraine (uk_UA)</li>
377<li>Vietnamese, Vietnam (vi_VN)</li>
378<li>Chinese, PRC (zh_CN)</li>
379<li>Chinese, Taiwan (zh_TW)</li>
380</td>
381</tr>
382</table>
383
384<p class="note"><strong>Note:</strong> The Android platform may support more
385locales than are included in the SDK system image. All of the supported locales
386are available in the <a href="http://source.android.com/">Android Open Source
387Project</a>.</p>
388
389<h2 id="skins">Emulator Skins</h2>
390
391<p>The downloadable platform includes a set of emulator skins that you can use
392for modeling your application in different screen sizes and resolutions. The
393emulator skins are:</p>
394
395<ul>
396 <li>
397 QVGA (240x320, low density, small screen)
398 </li>
399 <li>
400 WQVGA400 (240x400, low density, normal screen)
401 </li>
402 <li>
403 WQVGA432 (240x432, low density, normal screen)
404 </li>
405 <li>
406 HVGA (320x480, medium density, normal screen)
407 </li>
408 <li>
409 WVGA800 (480x800, high density, normal screen)
410 </li>
411 <li>
412 WVGA854 (480x854 high density, normal screen)
413 </li>
414</ul>
415
416<p>For more information about how to develop an application that displays
417and functions properly on all Android-powered devices, see <a
418href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
419Screens</a>.</p>