page.title=Android 2.3 Platform
sdk.platform.version=2.3
sdk.platform.apiLevel=9


@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>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 {@sdkPlatformVersion}, see the <a
href="http://developer.android.com/sdk/android-{@sdkPlatformVersion}-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");
    toggleable.removeClass("closed");
    toggleable.addClass("open");
    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
  } else {
    //$(".toggleme", toggleable).slideUp("fast");
    toggleable.removeClass("open");
    toggleable.addClass("closed");
    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
  }
  return false;
}
</script>
<style>
.toggleable {
  padding: .25em 1em 0em 1em;
  margin-bottom: 0;
}
.toggleme {
  padding: 1em 1em 0 2em;
  line-height:1em;
}
.toggleable a {
  text-decoration:none;
}
.toggleme a {
  text-decoration:underline;
}
.toggleable.closed .toggleme {
  display:none;
}
#jd-content .toggle-img {
  margin:0;
}
</style>

<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>(December 2010)</em></a>
  <div class="toggleme">
<dl>
<dt>Dependencies:</dt>
<dd>
<p>Requires SDK Tools r8 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="sip">SIP-based VOIP</h3>

<p>The platform now includes a SIP protocol stack and framework API that lets
developers build internet telephony applications. Using the API, applications can offer
voice calling features without having to manage sessions, transport-level
communication, or audio &mdash; these are handled
transparently by the platform's SIP API and services.</p>

<p>The SIP API is available in the {@link android.net.sip android.net.sip}
package. The key class is {@link android.net.sip.SipManager}, which applications
use to set up and manage SIP profiles, then initiate audio calls and receive
audio calls. Once an audio call is established, applications can mute calls,
turn on speaker mode, send DTMF tones, and more. Applications can also use the
{@link android.net.sip.SipManager} to create generic SIP connections.</p>

<p>The platform’s underlying SIP stack and services are available on devices at
the discretion of the manufacturer and associated carrier. For this reason,
applications should use the  {@link android.net.sip.SipManager#isApiSupported
isApiSupported()} method to check whether SIP support is available, before
exposing calling functionality to users. </p>

<p>To use the SIP API, applications must request permission from the user by
declaring <code>&lt;uses-permission
android:name="android.permission.INTERNET"&gt;</code> and <code>&lt;uses-permission
android:name="android.permission.USE_SIP"&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 include
the platform’s SIP stack and services. To request filtering, add <code>&lt;uses-feature
android:name="android.software.sip"
android:required="true"&gt;</code> and <code>&lt;uses-feature
android:name="android.software.sip.voip"&gt;</code> to the application manifest.</p>

<p class="note">To look at a sample application that uses the SIP API, see <a
href="{@docRoot}resources/samples/SipDemo/index.html">SIP Demo</a>.</p>

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

<p>Android 2.3 includes an NFC stack and framework API that lets developers
read NDEF tags that are discovered as a user touches an NFC-enabled device
to tag elements embedded in stickers, smart posters, and even other devices.</p>

<p>The platform provides the underlying NFC services that work with the device
hardware to discover tags when they come into range. On discovering a tag, the
platform notifies applications by broadcasting an Intent, appending the tag's
NDEF messages to the Intent as extras. Applications can create Intent filters to
recognize and handle targeted tags and messages. For example, after receiving a
tag by Intent, applications extract the NDEF messages, store them, alert the
user, or handle them in other ways. </p>

<p>The NFC API is available in the {@link android.nfc} package. 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. Applications can receive these messages from {@link
android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED}</code> 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>
</ul>

<p>NFC communication relies on wireless technology in the device hardware, so
support for the platform's NFC features on specific devices is determined by
their manufacturers. To determine the NFC support on the current device,
applications can call {@link android.nfc.NfcAdapter#isEnabled isEnabled()} to
query the {@link android.nfc.NfcAdapter}. 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 a sample application that uses the NFC API, see
<a href="{@docRoot}resources/samples/NFCDemo/index.html">NFCDemo</a>.</p>

<h3 id="sensors">Gyroscope and other sensors</h3>

<p>Android 2.3 adds platform and API support for several new sensor reading
types &mdash; gyroscope, rotation vector, linear acceleration, gravity, and barometer.
Developers can use the new sensor readings to create applications that respond
quickly and smoothly to precise changes in device position and motion. The
Sensor API reports gyroscope and other sensor changes to interested
applications, whether they are running on the application framework or in native
code. </p>

<p>Note that the specific set of hardware sensors available on any given device
varies at the discretion of the device manufacturer. </p>

<p>Developers can request filtering in Android Market, such that their
applications are not discoverable to users whose devices do not offer a
gyroscope sensor. To do so, add <code>&lt;uses-feature
android:name="android.hardware.sensor.gyroscope"
android:required="true"&gt;</code> to the application manifest.</p>

<p>For API details, see {@link android.hardware.Sensor}</p>


<h3 id="cameras">Multiple cameras support</h3>

<p>Applications can now make use of any cameras that are available on a device,
for either photo or video capture. The {@link android.hardware.Camera} lets
applications query for the number of cameras available and the unique
characteristics of each. </p>

<ul>
<li>New {@link android.hardware.Camera.CameraInfo} class stores a camera's
positional characteristics (orientation, front-facing or back-facing).</li>
<li>New {@link android.hardware.Camera#getNumberOfCameras()}, {@link
android.hardware.Camera#getCameraInfo(int,CameraInfo) getCameraInfo()}, and
{@link android.hardware.Camera#getNumberOfCameras()} methods in the {@link
android.hardware.Camera} class let applications query for the cameras available
and open the camera that they need.</li>
<li>New {@link android.media.CamcorderProfile get(int,int) method lets
applications retrieve a CamcorderProfile for a specific camera. </li>
<li>New {@link android media.CameraProfile#getJpegEncodingQualityParameter(int, int)
getJpegEncodingQualityParameter()} lets applications obtain the still-image
capture quality level for a specific camera.</li>
</ul>

<p class="note">To look at sample code for accessing a front-facing camera, see <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html">CameraPreview.java</a>
in the ApiDemos sample application.</p>

<p>The Camera API also adds: </p>
<ul>
<li>New parameters for cameras, including focus distance, focus mode, and
preview fps maximum/minimum. New {@link
android.hardware.Camera.Parameters#getFocusDistances(float[])
getFocusDistances()}, {@link
android.hardware.Camera.Parameters#getPreviewFpsRange(int[])
getPreviewFpsRange()}, and {@link
android.hardware.Camera.Parameters#getSupportedPreviewFpsRange()
getSupportedPreviewFpsRange()} for getting camera parameters, as well as {@link
android.hardware.Camera.Parameters#setPreviewFpsRange(int, int)
setPreviewFpsRange()} for setting preview framerate. </li>
</ul>

<h3 id="media">Mixable audio effects</h3>

<p>The platform's media framework adds support for new per-track or global audio effects,
including bass boost, headphone virtualization, equalization, and reverb.</p>
<ul>
<li>New {@link android.media.audiofx android.media.audiofx} package provides the
API to access audio effects.</li>
<li>New {@link android.media.audiofx.AudioEffect AudioEffect} is the  base class
for controlling audio effects provided by the Android audio framework.
<li>New audio session ID that lets an application associate a set of audio
effects with an instance of {@link android.media.AudioTrack} or {@link
android.media.MediaPlayer}.</li>
<li>New {@link android.media.AudioTrack#AudioTrack(int, int, int, int, int, int,
int) AudioTrack} class constructor that lets you create an {@link
android.media.AudioTrack} with a specific session ID. New {@link
android.media.AudioTrack#attachAuxEffect(int) attachAuxEffect()}, {@link
android.media.AudioTrack#getAudioSessionId() getAudioSessionId()}, and {@link
android.media.AudioTrack#setAuxEffectSendLevel(float) setAuxEffectSendLevel()}
methods.</li>
<li>New {@link android.media.MediaPlayer#attachAuxEffect(int)
attachAuxEffect()}, {@link android.media.MediaPlayer#getAudioSessionId()
getAudioSessionId()}, {@link android.media.MediaPlayer#setAudioSessionId(int)
setAudioSessionId(int)}, and {@link
android.media.MediaPlayer#setAuxEffectSendLevel(float) setAuxEffectSendLevel()}
methods and supporting types.</li>
</ul>

<p class="note">To look at sample code for audio effects, see
<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.html">AudioFxDemo.java</a>
in the ApiDemos sample application.</p>

<p>The media framework also adds:</p>
<ul>
<li>New support for altitude tag in EXIF metadata for JPEG files. New method
{@link android.media.ExifInterface#getAltitude(double) getAltitude()} method to
retrieve the value of the EXIF altitude tag.</li>
<li>New {@link android.media.MediaRecorder#setOrientationHint(int)
setOrientationHint()} method lets an application tell {@link
android.media.MediaRecorder} of the orientation during video capture.</li>
</ul>

<h3 id="download">Download manager</h3>

<p>The platform includes a new {@link android.app.DownloadManager} system service
that handles long-running HTTP downloads. Applications can request that a URI be
downloaded to a particular destination file. The <code>DownloadManager</code>
will conduct the download in the background, taking care of HTTP interactions
and retrying downloads after failures or across connectivity changes and system
reboots. </p>
<ul>
<li>Applications can obtain an instance of the {@link android.app.DownloadManager}
class by calling {@link
android.content.Context#getSystemService(String)} and passing
{@link android.content.Context#DOWNLOAD_SERVICE}. Applications that request 
downloads through this API should register a broadcast receiver for {@link
android.app.DownloadManager#ACTION_NOTIFICATION_CLICKED}, to appropriately
handle when the user clicks on a running download in a notification or from the
Downloads UI.</li>
<li>The {@link android.app.DownloadManager.Request} class lets an
application provide all the information necessary to request a new download,
such as request URI and download destination. A request URI is the only required
parameter. Note that the default download destination is a shared volume where
the system can delete your file if it needs to reclaim space for system use. For
persistent storage of a download, specify a download destination on external
storage (see {@link
android.app.DownloadManager.Request#setDestinationUri(Uri)}).</li>
<li>The {@link android.app.DownloadManager.Query} class provides methods that let
an application query for and filter active downloads.</li>
</ul>

<h3 id="strictmode">StrictMode</h3>

<p>To help developers monitor and improve the performance of their applications,
the platform offers a new system facility called {@link android.os.StrictMode}.
When implemented in an application, StrictMode catches and notifies the
developer of accidental disk or network activity that could degrade application
performance, such as activity taking place on the application's main thread
(where UI operations are received and animations are also taking place).
Developers can evaluate the network and disk usages issues raised in StrictMode
and correct them if needed, keeping the main thread more responsive and
preventing ANR dialogs from being shown to users.

<ul>
<li>{@link android.os.StrictMode} is the core class and is the main integration
point with the system and VM. The class provides convenience methods for
managing the thread and VM policies that apply to the instance.</li>
<li>{@link android.os.StrictMode.ThreadPolicy} and {@link
android.os.StrictMode.VmPolicy} hold the policies that you define and apply to
thread and VM instances.</li>
</ul>

<p>For more information about how to use StrictMode to optimize your
application, see the class documentation and sample code at {@link
android.os.StrictMode android.os.StrictMode}.</p>

<h3 id="ui">UI Framework</h3>

<ul>
<li>Support for overscroll
<ul>
<li>New support for overscroll in Views and Widgets. In Views, applications can
enable/disable overscroll for a given view, set the overscoll mode, control the
overscroll distance, and handle the results of overscrolling. </li>
<li>In Widgets, applications can control overscroll characteristics such as
animation, springback, and overscroll distance. For more information, see {@link
android.view.View android.view.View} and {@link android.widget.OverScroller
android.widget.OverScroller}. </li>
<li>{@link android.view.ViewConfiguration} also provides methods {@link
android.view.ViewConfiguration#getScaledOverflingDistance()} and {@link
android.view.ViewConfiguration#getScaledOverscrollDistance()}.</li>
<li>New <code>overScrollMode</code>, <code>overScrollFooter</code>, and
<code>overScrollHeader</code> attributes for <code>&lt;ListView&gt;</code> elements,
for controlling overscroll behavior.</li>
</ul>
</li>

<li>Support for touch filtering
<ul>
<li>New support for touch filtering, which lets an application improve the
security of Views that provide access to sensitive functionality. For example,
touch filtering is appropriate to ensure the security of user actions such as
granting a permission request, making a purchase, or clicking on an
advertisement. For details, see the <a
href="{@docRoot}reference/android/view/View.html#security">View class
documentation</a>.</li>
<li>New <code>filterTouchesWhenObscured</code> attribute for view elements,
which declares whether to filter touches when the view's window is obscured by
another visible window. When set to <code>"true"</code>, the view will not
receive touches whenever a toast, dialog or other window appears above the
view's window. Refer to <a
href="{@docRoot}reference/android/view/View.html#security">View security
documentation</a> for details.</li>
</ul>

<p class="note">To look at sample code for touch filtering, see
<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/SecureView.html">SurfaceView.java</a>
in the ApiDemos sample application.</p>
</li>

<li>Improved event management
<ul>
<li>New base class for input events, {@link android.view.InputEvent}. The class
provides methods that let applications determine the meaning of the event, such
as by querying for the InputDevice from which the event orginated. The {@link
android.view.KeyEvent} and {@link android.view.MotionEvent} are subclasses of
{@link android.view.InputEvent}.</li>
<li>New base class for input devices, {@link android.view.InputDevice}. The
class stores information about the capabilities of a particular input device and
provides methods that let applications determine how to interpret events from an
input device.</li>
</ul>
</li>

<li>Improved motion events
<ul>
<li>The {@link android.view.MotionEvent} API is extended to include "pointer ID"
information, which lets applications to keep track of individual fingers as they
move up and down. The class adds a variety of methods that let an application
work efficiently with motion events.</li>
<li>The input system now has logic to generate motion events with the new
pointer ID information, synthesizing identifiers as new pointers are down. The
system tracks multiple pointer IDs separately during a motion event, and
ensures proper continuity of pointers by evaluating at the distance
between the last and next set of pointers.</li>
</ul>
</li>

<li>Text selection controls
<ul>
<li>A new <code>setComposingRegion</code> method lets an application mark a
region of text as composing text, maintaining the current styling. A
<code>getSelectedText</code> method returns the selected text to the
application. The methods are available in {@link
android.view.inputmethod.BaseInputConnection}, {@link
android.view.inputmethod.InputConnection}, and {@link
android.view.inputmethod.InputConnectionWrapper}.</li>
<li>New <code>textSelectHandle</code>, <code>textSelectHandleLeft</code>,
<code>textSelectHandleRight</code>, and <code>textSelectHandleWindowStyle</code>
attributes for <code>&lt;TextView&gt;</code>, for referencing drawables that will be
used to display text-selection anchors and the style for the containing
window.</li>
</ul>
</li>

<li>Activity controls
<ul>
<li>{@link android.content.pm.ActivityInfo} adds new constants for managing
Activity orientation:
{@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_SENSOR},
{@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_LANDSCAPE},
{@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_PORTRAIT},
{@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_LANDSCAPE},
and
{@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_PORTRAIT}.
</li>
<li>New constant {@link
android.app.ActivityManager.RunningAppProcessInfo#IMPORTANCE_PERCEPTIBLE} for
the {@link android.app.ActivityManager.RunningAppProcessInfo#importance} field
in {@link android.app.ActivityManager.RunningAppProcessInfo}. The value
indicates that a specific process is running something that is considered to be
actively perceptible to the user. An example would be an application performing
background music playback.</li>
<li>The {@link android.app.Activity#setPersistent(boolean)} method to mark an
Activity as persistent is now deprecated and the implementation is a no-op.</li>
</ul>
</li>

<li>Notification text and icon styles
<ul>
<li>New {@link android.R.style#TextAppearance_StatusBar_EventContent
TextAppearance.StatusBar.EventContent},
{@link android.R.style#TextAppearance_StatusBar_EventContent_Title
TextAppearance.StatusBar.EventContent.Title},
{@link android.R.style#TextAppearance_StatusBar_Icon
TextAppearance.StatusBar.Icon}, and
{@link android.R.style#TextAppearance_StatusBar_Title
TextAppearance.StatusBar.Title} for managing
notification style.</li>
</ul>
</li>

<li>WebView
<ul>
<li>New {@link
android.webkit.WebSettings#setUseWebViewBackgroundForOverscrollBackground(
boolean) setUseWebViewBackgroundForOverscrollBackground()} method lets a {@link
android.webkit.WebView} specify whether to use its own background for the
overscroll background. </li>
</ul>
</li>
</ul>

<h3 id="extralargescreens">Extra Large Screens</h3>

<p>The platform now supports extra large screen sizes, such as those that might
be found on tablet devices. Developers can indicate that their applications are
designed to support extra large screen sizes by adding a <code>&lt;supports
screens ... android:xlargeScreens="true"&gt;</code> element to their manifest
files. Applications can use a new resource qualifier, <code>xlarge</code>, to
tag resources that are specific to extra large screens. For
details on how to support extra large and other screen sizes, see <a
href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
Screens</a>.</p>

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

<ul>
<li>Adds remaining OpenGL ES 2.0 methods {@link
android.opengl.GLES20#glDrawElements(int, int, int, int) glDrawElements()} and
{@link android.opengl.GLES20#glVertexAttribPointer(int, int, int, boolean, int,
int) glVertexAttribPointer()} in the {@link android.opengl.GLES20
android.opengl.GLES20} class.</li>
<li>Adds support for {@link android.graphics.ImageFormat#YV12} pixel format, a
planar 4:2:0 YCrCb format.</li>
</ul>

<h3 id="providers">Content Providers</h3>

<ul>
<li>New {@link android.provider.AlarmClock} provider class for setting an alarm
or handling an alarm. The provider contains a <code>ACTION_SET_ALARM</code> Intent
action and extras that can be used to start an Activity to set a new alarm in an
alarm clock application. Applications that wish to receive the
<code>SET_ALARM</code> Intent should create an activity that requires the
the SET_ALARM permission. Applications that wish to create a new
alarm should use {@link
android.content.Context#startActivity(android.content.Intent)
Context.startActivity()}, so that the user has the option of choosing
which alarm clock application to use.</li>

<li>{@link android.provider.MediaStore} supports a new Intent action, {@link
android.provider.MediaStore#INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
PLAY_FROM_SEARCH}, that lets an application search for music media and
automatically play content from the result when possible. For example, an
application could fire this Intent as the result of a voice recognition command
to listen to music.</li>
<li>{@link android.provider.MediaStore} also adds a new {@link
android.provider.MediaStore#MEDIA_IGNORE_FILENAME} flag that tells the media
scanner to ignore media in the containing directory and its subdirectories.
Developers can use this to avoid having graphics appear in the Gallery and
likewise prevent application sounds and music from showing up in the Music
app.</li>

<li>The {@link android.provider.Settings} provider adds the new Activity actions
{@link android.provider.Settings#ACTION_APPLICATION_DETAILS_SETTINGS
APPLICATION_DETAILS_SETTINGS} and {@link
android.provider.Settings#ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS
MANAGE_ALL_APPLICATIONS_SETTINGS}, which let an application show the details
screen for a specific application or show the Manage Applications screen. </li>

<li>The {@link android.provider.ContactsContract} provider adds the {@link
android.provider.ContactsContract.CommonDataKinds.SipAddress} data kind, for
storing a contact's SIP (Internet telephony) address. </li>
</ul>

<h3 id="location">Location</h3>

<ul>
<li>The {@link android.location.LocationManager} now tracks application
requests that result in wake locks or wifi locks according to
{@link android.os.WorkSource}, a system-managed class that identifies the
application.
<p>The <code>LocationManager</code> keeps track
of all clients requesting periodic updates, and tells its providers
about them as a <code>WorkSource</code> parameter, when setting their minimum
update times.
The network location provider uses <code>WorkSource</code> to track the
wake and wifi locks initiated by an application and adds it to the application's
battery usage reported in Manage Applications. </p></li>
<li>The {@link android.location.LocationManager} adds several new methods that
let an Activity register to receive periodic or one-time location updates based
on specified criteria (see below).</li>
<li>A new  {@link android.location.Criteria} class lets an application specify a
set of criteria for selecting a location provider. For example, providers may be
ordered according to accuracy, power usage, ability to report altitude, speed,
and bearing, and monetary cost. </li>
</ul>

<h3 id="storage">Storage</h3>

<ul>
<li>Android 2.3 adds a new {@link android.os.storage.StorageManager} that
supports OBB (Opaque Binary Blob) files. Although platform support for OBB is
available in Android 2.3, development tools for creating and managing OBB files
will not be availble until early 2011.</li>
<li>The Android 2.3 platform adds official support for devices that do not
include SD cards (although it provides virtual SD Card partition, when no
physical SD card is available). A convenience method, {@link
android.os.Environment#isExternalStorageRemovable()}, lets applications
determine whether a physical SD card is present.</li>
</ul>

<h3 id="packagemanager">Package Manager</h3>

<ul>
<li>New constants for declaring hardware and software features. See the list in
the <a href="#feature_constants">New Feature Constants</a> section, below.</li>
<li>{@link android.content.pm.PackageInfo} adds new {@link
android.content.pm.PackageInfo#firstInstallTime} and {@link
android.content.pm.PackageInfo#lastUpdateTime} fields that store the time of the
package installation and last update. </li>
<li>New {@link
android.content.pm.PackageManager#getProviderInfo(android.content.ComponentName,
int) getProviderInfo()} method for retrieving all of the information known about
a particular content provider class.</li>
</ul>

<h3 id="telephony">Telephony</h3>

<ul>
<li>The {@link android.telephony.TelephonyManager} adds the constant {@link
android.telephony.TelephonyManager#NETWORK_TYPE_EVDO_B} for specifying the CDMA
EVDO Rev B network type.</li>
<li>New {@link android.telephony.gsm.GsmCellLocation#getPsc()} method returns
the primary scrambling code of the serving cell on a UMTS network.</li>
</ul>

<h3 id="native">Native access to Activity lifecycle, windows</h3>

<p>Android 2.3 exposes a broad set of APIs to applications that use native
code. Framework classes of interest to such applications include: </p>

<ul>
<li>{@link android.app.NativeActivity} is a new type of Activity class, whose
lifecycle callbacks are implemented directly in native code. A
<code>NativeActivity</code> and its underlying native code run in the system
just as do other Activities &mdash; specifically they run in the Android
application's system process and execute on the application's main UI thread,
and they receive the same lifecycle callbacks as do other Activities. </li>
<li>New {@link android.view.InputQueue} class and callback interface lets native
code manage event queueing. </li>
<li>New {@link android.view.SurfaceHolder.Callback2} interface lets native code
manage a {@link android.view.SurfaceHolder}. </li>
<li>New {@link
android.view.Window#takeInputQueue(android.view.InputQueue.Callback)
takeInputQueue} and {@link
android.view.Window#takeSurface(android.view.SurfaceHolder.Callback2)
takeSurface()} methods in {@link android.view.Window} let native code manage
events and surfaces.</li>
</ul>

<p>For full information on working with native code or to download the NDK,
see the <a href="{@docRoot}sdk/ndk/index.html">Android NDK</a> page.</p>


<h3 id="dalvik">Dalvik Runtime</h3>

<ul>
<li>{@link dalvik.system dalvik.system}
removes several classes that were previously deprecated.</li>
<li>Dalvik core libraries:
<ul>
  <li>New collections: {@link java.util.ArrayDeque}, {@link java.util.NavigableMap},
  {@link java.util.concurrent.ConcurrentSkipListMap},
  {@link java.util.concurrent.LinkedBlockingDeque}</li>
  <li>New {@link java.util.Arrays} utilities: <code>binarySearch()</code>,
  <code>copyOf()</code>, <code>copyOfRange()</code>, and others.</li>
  <li>{@link java.net.CookieManager} for {@link java.net.HttpURLConnection}.</li>
  <li>More complete network APIs: {@link java.net.InterfaceAddress},
  {@link java.net.NetworkInterface} and {@link java.net.IDN}</li>
  <li>{@link java.io.File} read and write controls</li>
  <li>{@link java.lang.String#isEmpty() String.isEmpty()}</li>
  <li>{@link java.text.Normalizer} and {@link java.text.Normalizer.Form}</li>
  <li>Improved {@link javax.net.ssl} server sockets.</li>
</ul>
</li>
</ul>

<h3 id="manifest">New manifest elements and attributes</h3>

<ul>
<li>New <code>xlargeScreens</code> attribute for <a
href="{@docRoot}guide/topics/manifest/supports-screens.html"><code>&lt;supports-screens&gt;</code></a>
element, to indicate whether the application supports
extra large screen form-factors. For details, see <a
href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
Screens</a>.</li>
<li>New values for <code>android:screenOrientation</code> attribute of
<code>&lt;activity&gt;</code> element:
<ul>
<li><code>"reverseLandscape"</code> &mdash; The Activity would like to have the
screen in landscape orientation, turned in the opposite direction from normal
landscape.</li>
<li><code>"reversePortait"</code> &mdash; The Activity would like to have the
screen in portrait orientation, turned in the opposite direction from normal
portrait.</li>
<li><code>"sensorLandscape"</code> &mdash; The Activity would like to have the
screen in landscape orientation, but can use the sensor to change which
direction the screen is facing.</li>
<li><code>"sensorPortrait"</code> &mdash; The Activity would like to have the
screen in portrait orientation, but can use the sensor to change which direction
the screen is facing.</li>
<li><code>"fullSensor"</code> &mdash; Orientation is determined by a physical
orientation sensor: the display will rotate based on how the user moves the
device. This allows any of the 4 possible rotations, regardless of what the
device will normally do (for example some devices won't normally use 180 degree
rotation).</li>
</ul>
</li>
</ul>

<h3 id="permissions">New Permissions</h3>

<ul>
<li><code>com.android.permission.SET_ALARM</code> &mdash; Allows an application
to broadcast an Intent to set an alarm for the user. An Activity that handles
the {@link android.provider.AlarmClock#ACTION_SET_ALARM SET_ALARM} Intent action
should require this permission.</li>
<li><code>android.permission.USE_SIP</code> &mdash; Allows an application to use
the {@link android.net.sip SIP API} to make or receive internet calls.
<li><code>android.permission.NFC</code> &mdash; Allows an application to use the
{@link android.nfc NFC API} to make or receive internet calls.</li>
</ul>

<h3 id="feature_constants">New Feature Constants</h3>

<p>The platform adds several new hardware features that developers can declare
in their application manifests as being required by their applications. This
lets developers control how their application is filtered, when published on
Android Market. </p>

<ul>
<li>{@link android.content.pm.PackageManager#FEATURE_AUDIO_LOW_LATENCY
android.hardware.audio.low_latency} &mdash; The application uses a low-latency
audio pipeline on the device and is sensitive to delays or lag in sound input or
output.</li>
<li>{@link android.content.pm.PackageManager#FEATURE_CAMERA_FRONT
android.hardware.camera.front} &mdash; The application uses a front-facing
camera on the device.</li>
<li>{@link android.content.pm.PackageManager#FEATURE_NFC android.hardware.nfc}
&mdash; The application uses NFC radio features in the device.</li>
<li>{@link android.content.pm.PackageManager#FEATURE_SENSOR_BAROMETER
android.hardware.sensor.barometer} &mdash; The application uses the device's
barometer.</li>
<li>{@link android.content.pm.PackageManager#FEATURE_SENSOR_GYROSCOPE
android.hardware.sensor.gyroscope} &mdash; The application uses the device's
gyroscope sensor.</li>
<li>{@link android.content.pm.PackageManager#FEATURE_SIP android.software.sip}
&mdash; The application uses the SIP API on the device.</li>
<li>{@link android.content.pm.PackageManager#FEATURE_SIP_VOIP
android.software.sip.voip} &mdash; The application uses a SIP-based VOIP
service on the device.</li>
<li>{@link
android.content.pm.PackageManager#FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND
android.hardware.touchscreen.multitouch.jazzhand} &mdash; The application uses
advanced multipoint multitouch capabilities on the device screen, for tracking
up to five points fully independently.</li>
</ul>

<p>For full information about how to declare features and use them for
filtering, see the documentation for <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;</code></a>.</p>

<h3 id="api-diff">API differences report</h3>

<p>For a detailed view of all API changes in Android {@sdkPlatformVersion} (API
Level {@sdkPlatformApiLevel}), see the <a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</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, 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>
</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>
