blob: 10fc049ea70c747c1848bf48eeff5d5fed200d43 [file] [log] [blame]
page.title=Android 2.3.3 Platform
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<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>
Differences Report &raquo;</a> </li>
<h2>See Also</h2>
<li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
<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>
<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>
<script type="text/javascript">
function toggleDiv(link) {
var toggleable = $(link).parent();
if (toggleable.hasClass("closed")) {
//$(".toggleme", toggleable).slideDown("fast");
$(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
} else {
//$(".toggleme", toggleable).slideUp("fast");
$(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
return false;
.toggleable {
padding: .25em 1em 0em 1em;
margin-bottom: 0;
.toggleme {
padding: 1em 1em 0 2em;
.toggleable a {
.toggleme a {
.toggleable.closed .toggleme {
#jd-content .toggle-img {
<div class="toggleable opened">
<a href="#" onclick="return toggleDiv(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
Android {@sdkPlatformVersion}, Revision 1</a> <em>(February 2011)</em></a>
<div class="toggleme">
<p>Requires SDK Tools r9 or higher.</p>
<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>
<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>
<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
<p>The NFC API is available in the {@link android.nfc} and
{@link} packages. The key classes are: </p>
<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_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
<li>{@link}, 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
<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
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>
<li>A new {@link} 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>A new {@link} field in {@link} 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>
<h3 id="media">Media framework</h3>
<li>A new {@link} class provides a unified
interface for retrieving frame and metadata from an input media file.</li>
<li>{@link} and {@link} include new fields for specifying AMR
Wideband and AAC formats. </li>
<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
<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;">
<td style="border:0;padding-bottom:0;margin-bottom:0;">
<li>Cusom Locale</li>
<li>Dev Tools</li>
<td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
<li>IMEs for Japanese, Chinese, and Latin text input</li>
<li>Spare Parts (developer app)</li>
<li>Speech Recorder</li>
<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
<table style="border:0;padding-bottom:0;margin-bottom:0;">
<td style="border:0;padding-bottom:0;margin-bottom:0;">
<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, Zimbabwe (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>
<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>
<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="">Android Open Source
<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>
QVGA (240x320, low density, small screen)
WQVGA400 (240x400, low density, normal screen)
WQVGA432 (240x432, low density, normal screen)
HVGA (320x480, medium density, normal screen)
WVGA800 (480x800, high density, normal screen)
WVGA854 (480x854 high density, normal screen)
<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