page.title=Android 2.3 Platform sdk.platform.version=2.3 sdk.platform.apiLevel=9 @jd:body
API Level: {@sdkPlatformApiLevel}
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.
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 Adding SDK Components. If you are new to Android, download the SDK Starter Package first.
For a high-level introduction to Android {@sdkPlatformVersion}, see the Platform Highlights.
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.
Requires SDK Tools r8 or higher.
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.
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 — these are handled transparently by the platform's SIP API and services.
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.
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.
To use the SIP API, applications must request permission from the user by
declaring <uses-permission
android:name="android.permission.INTERNET">
and <uses-permission
android:name="android.permission.USE_SIP">
in their manifest files.
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 <uses-feature
android:name="android.software.sip"
android:required="true">
and <uses-feature
android:name="android.software.sip.voip">
to the application manifest.
To look at a sample application that uses the SIP API, see SIP Demo.
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.
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.
The NFC API is available in the {@link android.nfc} package. The key classes are:
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.
To use the NFC API, applications must request permission from the user by
declaring <uses-permission
android:name="android.permission.NFC">
in their manifest files.
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
<uses-feature android:name="android.hardware.nfc"
android:required="true">
to the application's manifest.
To look at a sample application that uses the NFC API, see NFCDemo.
Android 2.3 adds platform and API support for several new sensor reading types — 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.
Note that the specific set of hardware sensors available on any given device varies at the discretion of the device manufacturer.
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 <uses-feature
android:name="android.hardware.sensor.gyroscope"
android:required="true">
to the application manifest.
For API details, see {@link android.hardware.Sensor}.
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.
To look at sample code for accessing a front-facing camera, see CameraPreview.java in the ApiDemos sample application.
The Camera API also adds:
The platform's media framework adds support for new per-track or global audio effects, including bass boost, headphone virtualization, equalization, and reverb.
To look at sample code for audio effects, see AudioFxDemo.java in the ApiDemos sample application.
The media framework also adds:
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 DownloadManager
will conduct the download in the background, taking care of HTTP interactions
and retrying downloads after failures or across connectivity changes and system
reboots.
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.
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}.
overScrollMode
, overScrollFooter
, and
overScrollHeader
attributes for <ListView>
elements,
for controlling overscroll behavior.filterTouchesWhenObscured
attribute for view elements,
which declares whether to filter touches when the view's window is obscured by
another visible window. When set to "true"
, the view will not
receive touches whenever a toast, dialog or other window appears above the
view's window. Refer to View security
documentation for details.To look at sample code for touch filtering, see SecureView.java in the ApiDemos sample application.
setComposingRegion
method lets an application mark a
region of text as composing text, maintaining the current styling. A
getSelectedText
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}.textSelectHandle
, textSelectHandleLeft
,
textSelectHandleRight
, and textSelectHandleWindowStyle
attributes for <TextView>
, for referencing drawables that will be
used to display text-selection anchors and the style for the containing
window.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 <supports
screens ... android:xlargeScreens="true">
element to their manifest
files. Applications can use a new resource qualifier, xlarge
, to
tag resources that are specific to extra large screens. For
details on how to support extra large and other screen sizes, see Supporting Multiple
Screens.
ACTION_SET_ALARM
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
SET_ALARM
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.The LocationManager
keeps track
of all clients requesting periodic updates, and tells its providers
about them as a WorkSource
parameter, when setting their minimum
update times.
The network location provider uses WorkSource
to track the
wake and wifi locks initiated by an application and adds it to the application's
battery usage reported in Manage Applications.
Android 2.3 exposes a broad set of APIs to applications that use native code. Framework classes of interest to such applications include:
NativeActivity
and its underlying native code run in the system
just as do other Activities — 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. For full information on working with native code or to download the NDK, see the Android NDK page.
binarySearch()
,
copyOf()
, copyOfRange()
, and others.xlargeScreens
attribute for {@code
<supports-screens>}
element, to indicate whether the application supports
extra large screen form-factors. For details, see Supporting Multiple
Screens.android:screenOrientation
attribute of
<activity>
element:
"reverseLandscape"
— The Activity would like to have the
screen in landscape orientation, turned in the opposite direction from normal
landscape."reversePortrait"
— The Activity would like to have the
screen in portrait orientation, turned in the opposite direction from normal
portrait."sensorLandscape"
— The Activity would like to have the
screen in landscape orientation, but can use the sensor to change which
direction the screen is facing."sensorPortrait"
— The Activity would like to have the
screen in portrait orientation, but can use the sensor to change which direction
the screen is facing."fullSensor"
— 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).com.android.permission.SET_ALARM
— 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.android.permission.USE_SIP
— Allows an application to use
the {@link android.net.sip SIP API} to make or receive internet calls.
android.permission.NFC
— Allows an application to use the
{@link android.nfc NFC API} to read NFC tags.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.
For full information about how to declare features and use them for
filtering, see the documentation for <uses-feature>
.
For a detailed view of all API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), see the API Differences Report.
The Android {@sdkPlatformVersion} platform delivers an updated version of the framework API. The Android {@sdkPlatformVersion} API is assigned an integer identifier — {@sdkPlatformApiLevel} — 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.
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 android:minSdkVersion="{@sdkPlatformApiLevel}"
attribute to the <uses-sdk>
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.
For more information about how to use API Level, see the API Levels document.
The system image included in the downloadable platform provides these built-in applications:
|
|
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 language_country/region locale descriptor).
|
|
Note: The Android platform may support more locales than are included in the SDK system image. All of the supported locales are available in the Android Open Source Project.
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:
For more information about how to develop an application that displays and functions properly on all Android-powered devices, see Supporting Multiple Screens.