summaryrefslogtreecommitdiffstats
path: root/docs/html/sdk/android-2.3.3.jd
blob: 023e2e41294af5ce17264c1c58932a1c9ec155c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
page.title=Android 2.3.3 Platform
sdk.platform.version=2.3.3
sdk.platform.apiLevel=10


@jd:body

<div id="qv-wrapper">
<div id="qv">

<h2>In this document</h2>
<ol>
  <li><a href="#relnotes">Revisions</a></li>
  <li><a href="#api">API Overview</a></li>
  <li><a href="#api-level">API Level</a></li>
  <li><a href="#apps">Built-in Applications</a></li>
  <li><a href="#locs">Locales</a></li>
  <li><a href="#skins">Emulator Skins</a></li>
</ol>

<h2>Reference</h2>
<ol>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report &raquo;</a> </li>
</ol>

<h2>See Also</h2>
<ol>
  <li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
</ol>

</div>
</div>

<p>
<em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>

<p>Android 2.3.3 is a small feature release that adds several improvements
and APIs to the Android 2.3 platform.</p>

<p>For developers, the Android {@sdkPlatformVersion} platform is available as a
downloadable component for the Android SDK. The downloadable platform includes 
an Android library and system image, as well as a set of emulator
skins and more. The downloadable platform
includes no external libraries.</p>

<p>To get started developing or testing against Android
{@sdkPlatformVersion}, use the Android SDK Manager to
download the platform into your SDK. For more information,
see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
Components</a>. If you are new to Android, <a
href="{@docRoot}sdk/index.html">download the SDK Starter Package</a>
first.</p>

<p>For a high-level introduction to Android 2.3, see the <a
href="{@docRoot}sdk/android-2.3-highlights.html">Platform Highlights</a>.</p>


<h2 id="relnotes">Revisions</h2>

<p>The sections below provide notes about successive releases of
the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
revision number. To determine what revision(s) of the Android
{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
the "Installed Packages" listing in the Android SDK and AVD Manager.</p>


<div class="toggle-content opened" style="padding-left:1em;">

<p><a href="#" onclick="return toggleContent(this)">
  <img src="{@docRoot}assets/images/triangle-opened.png"
class="toggle-content-img" alt="" />
  Android {@sdkPlatformVersion}, Revision 2</a> <em>(July 2011)</em>
</a></p>

<div class="toggle-content-toggleme" style="padding-left:2em;">

<dl>
<dt>Dependencies:</dt>
<dd>
<p>Requires <a href="{@docRoot}sdk/tools-notes.html">SDK Tools r12</a> or
higher.</p>
</dd>
<dt>Notes:</dt>
<dd>
<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
bugs in the previous rendering library. It also unlocks several editor features that were added in
ADT 12.</p>
</dd>
</dl>

</div>
</div>

<div class="toggle-content closed" style="padding-left:1em;">

<p><a href="#" onclick="return toggleContent(this)">
  <img src="{@docRoot}assets/images/triangle-closed.png"
class="toggle-content-img" alt="" />
  Android {@sdkPlatformVersion}, Revision 1</a> <em>(February 2011)</em>
</a></p>

<div class="toggle-content-toggleme" style="padding-left:2em;">
<dl>
<dt>Dependencies:</dt>
<dd>
<p>Requires SDK Tools r9 or higher.</p>
</dd>
</dl>

</div>
</div>


<h2 id="api">API Overview</h2>

<p>The sections below provide a technical overview of what's new for developers
in {@sdkPlatformVersion}, including new features and changes in the framework
API since the previous version.</p>

<h3 id="nfc">Near Field Communications (NFC)</h3>

<p>Android 2.3.3 provides improved and extended support for NFC, to allow
applications to interact with more types of tags in new ways.</p>

<p>A new, comprehensive set of APIs give applications read and write access
to a wider range of standard tag technologies, including:</p>

<ul>
<li>NFC-A (ISO 14443-3A)</li>
<li>NFC-B (ISO 14443-3B)</li>
<li>NFC-F (JIS 6319-4)</li>
<li>NFC-V (ISO 15693)</li>
<li>ISO-DEP (ISO 14443-4)</li>
<li>MIFARE Classic</li>
<li>MIFARE Ultralight</li>
<li>NFC Forum NDEF tags</li>
</ul>

<p>The platform also provides a limited peer-to-peer communication protocol
and API. Foreground Activities can use the API to register an NDEF
message that will get pushed to other NFC devices when they connect.</p>

<p>Advanced tag dispatching now gives applications more control over how and
when they are launched, when an NFC tag is discovered. Previously, the platform
used a single-step intent dispatch to notify interested applications that a tag
was discovered. The platform now uses a four-step process that enables the
foreground application to take control of a tag event before it is passed to any
other applications (<code>android.nfc.NfcAdapter.enableForegroundDispatch()</code>).

The new dispatch process also lets apps listen for specific tag content and
tag technologies, based on two new intent actions &mdash;
<code>android.nfc.action.NDEF_DISCOVERED</code> and
<code>android.nfc.action.TECH_DISCOVERED</code>.</p>

<p>The NFC API is available in the {@link android.nfc} and 
{@link android.nfc.tech} packages. The key classes are: </p>

<ul>
<li>{@link android.nfc.NfcAdapter}, which represents the NFC hardware on the device.</li>
<li>{@link android.nfc.NdefMessage}, which represents an NDEF data message,
the standard format in which "records" carrying data are transmitted between
devices and tags. An NDEF message certain many NDEF records of different types.
Applications can receive these messages from 
{@link android.nfc.NfcAdapter#ACTION_NDEF_DISCOVERED NDEF_DISCOVERED},
{@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED TECH_DISCOVERED}, or
{@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED TAG_DISCOVERED} Intents.</li>
<li>{@link android.nfc.NdefRecord}, delivered in an
{@link android.nfc.NdefMessage}, which describes the type of data being shared
and carries the data itself.</li>
<li>{@link android.nfc.Tag}, which represents a tag scanned by the device.
Multiple types of tags are supported, based on the underlying tag
technology.</li>
<li>{@link android.nfc.tech.TagTechnology}, an interface that gives applications
access to tag properties and I/O operations based on the technologies present
in the tag. For a full list of tag technologies supported in Android 2.3.3, see
{@link android.nfc.tech}.</li>
</ul>

<p>NFC communication relies on wireless technology in the device hardware, and
is not present in all Android devices. Android devices that do not support
NFC will return a null object when
{@link android.nfc.NfcAdapter#getDefaultAdapter(android.content.Context)
getDefaultAdapter(Context)} is called, and
<code>context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)</code>
will return <code>false</code>. The NFC API is always present, however, regardless of
underlying hardware support.</p>

<p>To use the NFC API, applications must request permission from the user by
declaring <code>&lt;uses-permission
android:name="android.permission.NFC"&gt;</code> in their manifest files.</p>

<p>Additionally, developers can request filtering on Android Market, such that
their applications are not discoverable to users whose devices do not support
NFC. To request filtering, add
<code>&lt;uses-feature android:name="android.hardware.nfc"
android:required="true"&gt;</code> to the application's manifest.</p>

<p class="note">To look at sample code for NFC, see
<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>

<h3 id="bluetooth">Bluetooth</h3>

<p>Android 2.3.3 adds platform and API support for Bluetooth nonsecure socket
connections. This lets applications communicate with simple devices that may not
offer a UI for authentication. See 
{@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and 
{@link android.bluetooth.BluetoothAdapter#listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID)}
for more information. </p>

<h3 id="graphics">Graphics</h3>

<ul>
<li>A new {@link android.graphics.BitmapRegionDecoder} class lets applications
decode a rectangle region from an image. The API is particularly useful when an
original image is large and and the application only need parts of the image.
</li>
<li>A new {@link
android.graphics.BitmapFactory.Options#inPreferQualityOverSpeed} field in {@link
android.graphics.BitmapFactory.Options} allows applications to use a more accurate
but slightly slower IDCT method in JPEG decode. This in turn improves the
quality of the reconstructed image.</li>
</ul>


<h3 id="media">Media framework</h3>

<ul>
<li>A new {@link android.media.MediaMetadataRetriever} class provides a unified
interface for retrieving frame and metadata from an input media file.</li>
<li>{@link android.media.MediaRecorder.AudioEncoder} and {@link
android.media.MediaRecorder.OutputFormat} include new fields for specifying AMR
Wideband and AAC formats. </li>
</ul>


<h3 id="speech">Speech recognition</h3>

<p>The speech-recognition API includes new constants to let you manage voice
search results in new ways. Although the new constants are not needed for normal
use of speech recognition, you could use them to offer a different view of voice
search results in your application. For information, see {@link
android.speech.RecognizerResultsIntent}.</p>


<h2 id="api-level">API Level</h2>

<p>The Android {@sdkPlatformVersion} platform delivers an updated version of
the framework API. The Android {@sdkPlatformVersion} API
is assigned an integer identifier &mdash;
<strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
stored in the system itself. This identifier, called the "API Level", allows the
system to correctly determine whether an application is compatible with
the system, prior to installing the application. </p>

<p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
you need compile the application against the Android library that is provided in
the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might 
also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
manifest. If your application is designed to run only on Android 2.3 and higher,
declaring the attribute prevents the application from being installed on earlier
versions of the platform.</p>

<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>

<h2 id="apps">Built-in Applications</h2>

<p>The system image included in the downloadable platform provides these
built-in applications:</p>

<table style="border:0;padding-bottom:0;margin-bottom:0;">
<tr>
<td style="border:0;padding-bottom:0;margin-bottom:0;">
<ul>
<li>Browser</li>
<li>Calculator</li>
<li>Camera</li>
<li>Clock</li>
<li>Contacts</li>
<li>Cusom Locale</li>
<li>Dev Tools</li>
<li>Downloads</li>
<li>Email</li>
</ul>
</td>
<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
<ul>
<li>Gallery</li>
<li>IMEs for Japanese, Chinese, and Latin text input</li>
<li>Messaging</li>
<li>Music</li>
<li>Phone</li>
<li>Search</li>
<li>Settings</li>
<li>Spare Parts (developer app)</li>
<li>Speech Recorder</li>
</ul>
</td>
</tr>
</table>


<h2 id="locs" style="margin-top:.75em;">Locales</h2>

<p>The system image included in the downloadable SDK platform provides a variety of
built-in locales. In some cases, region-specific strings are available for the
locales. In other cases, a default version of the language is used. The
languages that are available in the Android {@sdkPlatformVersion} system
image are listed below (with <em>language</em>_<em>country/region</em> locale
descriptor).</p>

<table style="border:0;padding-bottom:0;margin-bottom:0;">
<tr>
<td style="border:0;padding-bottom:0;margin-bottom:0;">
<ul>
<li>Arabic, Egypt (ar_EG)</li>
<li>Arabic, Israel (ar_IL)</li>
<li>Bulgarian, Bulgaria (bg_BG)</li>
<li>Catalan, Spain (ca_ES)</li>
<li>Czech, Czech Republic (cs_CZ)</li>
<li>Danish, Denmark(da_DK)</li>
<li>German, Austria (de_AT)</li>
<li>German, Switzerland (de_CH)</li>
<li>German, Germany (de_DE)</li>
<li>German, Liechtenstein (de_LI)</li>
<li>Greek, Greece (el_GR)</li>
<li>English, Australia (en_AU)</li>
<li>English, Canada (en_CA)</li>
<li>English, Britain (en_GB)</li>
<li>English, Ireland (en_IE)</li>
<li>English, India (en_IN)</li>
<li>English, New Zealand (en_NZ)</li>
<li>English, Singapore(en_SG)</li>
<li>English, US (en_US)</li>
<li>English, South Africa (en_ZA)</li>
<li>Spanish (es_ES)</li>
<li>Spanish, US (es_US)</li>
<li>Finnish, Finland (fi_FI)</li>
<li>French, Belgium (fr_BE)</li>
<li>French, Canada (fr_CA)</li>
<li>French, Switzerland (fr_CH)</li>
<li>French, France (fr_FR)</li>
<li>Hebrew, Israel (he_IL)</li>
<li>Hindi, India (hi_IN)</li>
</ul>
</td>
<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
<li>Croatian, Croatia (hr_HR)</li>
<li>Hungarian, Hungary (hu_HU)</li>
<li>Indonesian, Indonesia (id_ID)</li>
<li>Italian, Switzerland (it_CH)</li>
<li>Italian, Italy (it_IT)</li>
<li>Japanese (ja_JP)</li>
<li>Korean (ko_KR)</li>
<li>Lithuanian, Lithuania (lt_LT)</li>
<li>Latvian, Latvia (lv_LV)</li>
<li>Norwegian-Bokmol, Norway(nb_NO)</li>
<li>Dutch, Belgium (nl_BE)</li>
<li>Dutch, Netherlands (nl_NL)</li>
<li>Polish (pl_PL)</li>
<li>Portuguese, Brazil (pt_BR)</li>
<li>Portuguese, Portugal (pt_PT)</li>
<li>Romanian, Romania (ro_RO)</li>
<li>Russian (ru_RU)</li></li>
<li>Slovak, Slovakia (sk_SK)</li>
<li>Slovenian, Slovenia (sl_SI)</li>
<li>Serbian (sr_RS)</li>
<li>Swedish, Sweden (sv_SE)</li>
<li>Thai, Thailand (th_TH)</li>
<li>Tagalog, Philippines (tl_PH)</li>
<li>Turkish, Turkey (tr_TR)</li>
<li>Ukrainian, Ukraine (uk_UA)</li>
<li>Vietnamese, Vietnam (vi_VN)</li>
<li>Chinese, PRC (zh_CN)</li>
<li>Chinese, Taiwan (zh_TW)</li>
</td>
</tr>
</table>

<p class="note"><strong>Note:</strong> The Android platform may support more
locales than are included in the SDK system image. All of the supported locales
are available in the <a href="http://source.android.com/">Android Open Source
Project</a>.</p>

<h2 id="skins">Emulator Skins</h2>

<p>The downloadable platform includes a set of emulator skins that you can use
for modeling your application in different screen sizes and resolutions. The
emulator skins are:</p>

<ul>
  <li>
    QVGA (240x320, low density, small screen)
  </li>
  <li>
    WQVGA400 (240x400, low density, normal screen)
  </li>
  <li>
    WQVGA432 (240x432, low density, normal screen)
  </li>
  <li>
    HVGA (320x480, medium density, normal screen)
  </li>
  <li>
    WVGA800 (480x800, high density, normal screen)
  </li>
  <li>
    WVGA854 (480x854 high density, normal screen)
  </li>
</ul>

<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>