page.title=Android 3.1 APIs
excludeFromSuggestions=true
sdk.platform.version=3.1
sdk.platform.apiLevel=12
@jd:body

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

<h2>In this document</h2>
<ol>
  <li><a href="#api">API Overview</a></li>
  <li><a href="#api-level">API Level</a></li>
</ol>

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

</div>
</div>


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

<p>For developers, the Android {@sdkPlatformVersion} platform
({@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}) 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>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. To get started developing or testing against Android {@sdkPlatformVersion},
use the Android SDK Manager to download the platform into your SDK.</p>



<h2 id="#api" style="margin-top:1.5em;">API Overview</h2>

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

<h3 id="usb">USB APIs</h3>

<p>Android 3.1 introduces powerful new APIs for
integrating connected peripherals with applications running on the platform.
The APIs are based on a USB (Universal Serial Bus) stack and services that are
built into the platform, including support for both USB host and device
interactions. Using the APIs, developers can create applications that are able to
discover, communicate with, and manage a variety of device types connected over
USB. </p>

<p>The stack and APIs distinguish two basic types of USB hardware, based on
whether the Android-powered device is acting as host or the external hardware
is acting as host: </p>

<ul>
<li>A <em>USB device</em> is a piece of connected hardware that depends on the
Android-powered device to serve as host. For example, most input devices, mice,
and joysticks are USB devices, as are many cameras, hubs, and so on.</li>
<li>A <em>USB accessory</em> is a piece of connected hardware that has a USB
host controller, provides power, and is designed to communicate with
Android-powered devices over USB, A variety of peripherals can connect as
accessories, from robotics controllers to musical equipment, exercise bicycles,
and more.</li>
</ul>

<p>For both types &mdash; USB devices and USB accessories &mdash; the
platform's USB APIs support discovery by intent broadcast when attached or
detached, as well as standard interfaces, endpoints, and transfer modes
(control, bulk, and interrupt).</p>

<p>The USB APIs are available in the package {@link android.hardware.usb}. The
central class is {@link android.hardware.usb.UsbManager}, which provides
helper methods for identifying and communicating with
both USB devices and USB accessories. Applications can acquire an instance of
{@link android.hardware.usb.UsbManager} and then query for the list of attached
devices or accessories and then communicate with or manage them.
{@link android.hardware.usb.UsbManager} also declares intent actions that the
system broadcasts, to announce when a USB device or accessory is attached or
detached.</p>

<p>Other classes include:</p>

<ul>
<li>{@link android.hardware.usb.UsbDevice}, a class representing external
hardware connected as a USB device (with the Android-powered device acting as
host).</li>
<li>{@link android.hardware.usb.UsbAccessory}, representing external hardware
connected as the USB host (with the Android-powered device acting as a USB
device).</li>
<li>{@link android.hardware.usb.UsbInterface} and {@link
android.hardware.usb.UsbEndpoint}, which provide access to standard USB
interfaces and endpoints for a device.</li>
<li>{@link android.hardware.usb.UsbDeviceConnection} and {@link
android.hardware.usb.UsbRequest}, for sending and receiving data and control
messages to or from a USB device, sychronously and asynchronously.
<li>{@link android.hardware.usb.UsbConstants}, which provides constants for
declaring endpoint types, device classes, and so on.</li>
</ul>

<p>Note that although the USB stack is built into the platform, actual support
for USB host and open accessory modes on specific devices is determined by
their manufacturers. In particular, host mode relies on appropriate USB
controller hardware in the Android-powered device. </p>

<p>Additionally, developers can request filtering on Google Play, such that
their applications are not availabe to users whose devices do not provide the
appropriate USB support. To request filtering, add one or both of the elements
below to the application manifest, as appropriate: </p>

<ul>
<li>If the application should only be visible to devices that support USB
host mode (connection of USB devices), declare this element:
  <p style="margin-left:1.5em;"><code>&lt;uses-feature
  android:name="android.hardware.usb.host"
  android:required="true"&gt;</code></p>
</li>
<li>If the application should only be visible to devices that support USB
accessories (connection of USB hosts), declare this element:
  <p style="margin-left:1.5em;"><code>&lt;uses-feature
  android:name="android.hardware.usb.accessory"
  android:required="true"&gt;</code></p>
</li>
</ul>

<p>For complete information about how to develop applications that interact with
USB accessories, please see the
<a href="{@docRoot}guide/topics/connectivity/usb/index.html">developer documentation</a>.</p>

<p class="note">To look at sample applications that use the USB host API, see <a
href="{@docRoot}resources/samples/USB/AdbTest/index.html">ADB Test</a> and <a
href="{@docRoot}resources/samples/USB/MissileLauncher/index.html">Missile
Launcher</a></p>

<h3>MTP/PTP API</h3>

<p>Android 3.1 exposes a new MTP API that lets applications interact directly
with connected cameras and other PTP devices. The new API makes it easy for an
application to receive notifications when devices are attached and removed,
manage files and storage on those devices, and transfer files and metadata to
and from them. The MTP API implements the PTP (Picture Transfer Protocol) subset
of the MTP (Media Transfer Protocol) specification.</p>

<p>The MTP API is available in the {@link android.mtp} package and provides
these classes: </p>

<ul>
  <li>The {@link android.mtp.MtpDevice} encapsulates an MTP device that is
connected over the USB host bus. An application can instantiate an object of
this type and then use its methods to get information about the device and
objects stored on it, as well as opening the connection and transferring data.
Some of the methods include:
    <ul>
      <li>{@link android.mtp.MtpDevice#getObjectHandles(int, int, int)
getObjectHandles()} returns a list of handles for all objects on the device that
match a specified format and parent. To get information about an object, an
application can pass a handle to {@link android.mtp.MtpDevice#getObjectInfo(int)
getObjectInfo()}.</li>
      <li>{@link android.mtp.MtpDevice#importFile(int, java.lang.String)
importFile()} lets an application copy data for an object to a file in external
storage. This call may block for an arbitrary amount of time depending on the
size of the data and speed of the devices, so should be made from a spearate
thread.</li>
      <li>{@link
android.mtp.MtpDevice#open(android.hardware.usb.UsbDeviceConnection) open()}
lets an application open a connected MTP/PTP device. </li>
      <li>{@link android.mtp.MtpDevice#getThumbnail(int) getThumbnail()} returns
the thumbnail of the object as a byte array. </li>
    </ul>
  </li>
  <li>{@link android.mtp.MtpStorageInfo} holds information about about a storage
unit on an MTP device, corresponding to the StorageInfo Dataset described in
section 5.2.2 of the MTP  specification. Methods in the class let an application
get a storage unit’s description string, free space, maximum storage capacity,
storage ID, and volume identifier.</li>
  <li>{@link android.mtp.MtpDeviceInfo}  holds information about an MTP device
corresponding to the DeviceInfo Dataset described in section 5.1.1 of the MTP
specification. Methods in the class let applications get a device’s
manufacturer, model, serial number, and version.</li>
  <li>{@link android.mtp.MtpObjectInfo} holds information about an object stored
on an MTP device, corresponding to the ObjectInfo Dataset described in section
5.3.1 of the MTP specification. Methods in the class let applications get an
object’s size, data format, association type, creation date, and thumbnail
information.</li>
  <li>{@link android.mtp.MtpConstants} provides constants for declaring MTP file
format codes, association type, and protection status.</li>
</ul>

<h3 id="motionevents">Support for new input devices and motion events</h3>

<p>Android 3.1 extends the input subsystem to support new input devices and new
types of motion events, across all views and windows. Developers can build on
these capabilities to let users interact with their applications using mice,
trackballs, joysticks, gamepads, and other devices, in addition to keyboards and
touchscreens. </p>

<p>For handling mouse, scrollwheel, and trackball input, the platform supports
two new motion event actions:</p>
<ul>
<li>{@link android.view.MotionEvent#ACTION_SCROLL}, which describes the pointer
location at which a non-touch scroll motion, such as from a mouse scroll wheel,
took place. In the MotionEvent, the value of the {@link
android.view.MotionEvent#AXIS_HSCROLL} and {@link
android.view.MotionEvent#AXIS_VSCROLL} axes specify the relative scroll
movement. </li>
<li>{@link android.view.MotionEvent#ACTION_HOVER_MOVE}, reports the current
position of the mouse when no buttons are pressed, as well as any intermediate
points since the last <code>HOVER_MOVE</code> event. Hover enter and exit
notifications are not yet supported.</li>
</ul>

<p>To support joysticks and gamepads, the {@link android.view.InputDevice} class
includes these new input device sources:</p>
<ul>
<li>{@link android.view.InputDevice#SOURCE_CLASS_JOYSTICK} &mdash; the source
device has joystick axes.</li>
<li>{@link android.view.InputDevice#SOURCE_CLASS_BUTTON} &mdash; the source
device has buttons or keys.</li>
<li>{@link android.view.InputDevice#SOURCE_GAMEPAD}  &mdash;  the source device
has gamepad buttons such as {@link android.view.KeyEvent#KEYCODE_BUTTON_A}
or {@link android.view.KeyEvent#KEYCODE_BUTTON_B}. Implies
{@link android.view.InputDevice#SOURCE_CLASS_BUTTON}</li>
<li>{@link android.view.InputDevice#SOURCE_JOYSTICK} &mdash; the source device
has joystick axes.  Implies SOURCE_CLASS_JOYSTICK.</li>
</ul>

<p>To describe motion events from these new sources, as well as those from mice
and trackballs, the platform now defines axis codes on {@link
android.view.MotionEvent}, similar to how it defines key codes on {@link
android.view.KeyEvent}. New axis codes for joysticks
and game controllers include
{@link android.view.MotionEvent#AXIS_HAT_X}, {@link
android.view.MotionEvent#AXIS_HAT_Y}, {@link
android.view.MotionEvent#AXIS_RTRIGGER}, {@link
android.view.MotionEvent#AXIS_ORIENTATION}, {@link
android.view.MotionEvent#AXIS_THROTTLE}, and many others. 
Existing {@link android.view.MotionEvent} axes are represented by {@link
android.view.MotionEvent#AXIS_X}, {@link android.view.MotionEvent#AXIS_Y},
{@link android.view.MotionEvent#AXIS_PRESSURE}, {@link
android.view.MotionEvent#AXIS_SIZE}, {@link
android.view.MotionEvent#AXIS_TOUCH_MAJOR}, {@link
android.view.MotionEvent#AXIS_TOUCH_MINOR}, {@link
android.view.MotionEvent#AXIS_TOOL_MAJOR}, {@link
android.view.MotionEvent#AXIS_TOOL_MINOR}, and {@link
android.view.MotionEvent#AXIS_ORIENTATION}.</p>

<p>Additionally, {@link android.view.MotionEvent} defines a number of generic
axis codes that are used when the framework does not know how to map a
particular axis. Specific devices can use the generic axis codes to pass custom
motion data to applications. For a full list of axes and their intended
interpretations, see the {@link android.view.MotionEvent} class documentation.
</p>

<p>The platform provides motion events to applications in batches, so a single
event may contain a current position and multiple so-called historical movements.
Applications should use {@link android.view.MotionEvent#getHistorySize()} to get
the number of historical samples, then retrieve and process all historical
samples in order using {@link
android.view.MotionEvent#getHistoricalAxisValue(int, int, int)
getHistoricalAxisValue()}.  After that, applications should process the current
sample using {@link android.view.MotionEvent#getAxisValue(int) getAxisValue()}.
</p>

<p>Some axes can be retrieved using special accessor methods.  For example,
instead of calling {@link android.view.MotionEvent#getAxisValue(int)
getAxisValue()}, applications can call {@link android.view.MotionEvent#getX(int)
getX()}.  Axes that have built-in accessors include {@link
android.view.MotionEvent#AXIS_X}, {@link android.view.MotionEvent#AXIS_Y},
{@link android.view.MotionEvent#AXIS_PRESSURE}, {@link
android.view.MotionEvent#AXIS_SIZE}, {@link
android.view.MotionEvent#AXIS_TOUCH_MAJOR}, {@link
android.view.MotionEvent#AXIS_TOUCH_MINOR}, {@link
android.view.MotionEvent#AXIS_TOOL_MAJOR}, {@link
android.view.MotionEvent#AXIS_TOOL_MINOR}, and {@link
android.view.MotionEvent#AXIS_ORIENTATION}.</p>

<p>Each input device has a unique, system-assigned ID and may also provide
multiple sources. When a device provides multiple sources, more than one source
can provide axis data using the same axis. For example, a touch event coming
from the touch source uses the X axis for screen position data, while a joystick
event coming from the joystick source will use the X axis for the stick position
instead. For this reason, it's important for applications to interpret axis
values according to the source from which they originate. When handling a motion
event, applications should use methods on the {@link android.view.InputDevice}
class to determine the axes supported by a device or source. Specifically,
applications can use {@link android.view.InputDevice#getMotionRanges()
getMotionRanges()} to query for all axes of a device or all axes of a given
source of the device. In both cases, the range information for axes returned in
the {@link android.view.InputDevice.MotionRange} object specifies the source for
each axis value.</p>

<p>Finally, since the motion events from joysticks, gamepads, mice, and
trackballs are not touch events, the platform adds a new callback method for
passing them to a {@link android.view.View} as "generic" motion events.
Specifically, it reports the non-touch motion events to 
{@link android.view.View}s through a call to {@link
android.view.View#onGenericMotionEvent(android.view.MotionEvent)
onGenericMotionEvent()}, rather than to {@link
android.view.View#onTouchEvent(android.view.MotionEvent)
onTouchEvent()}.</p>

<p>The platform dispatches generic motion events differently, depending on the
event source class. {@link android.view.InputDevice#SOURCE_CLASS_POINTER} events
go to the {@link android.view.View} under the pointer, similar to how touch
events work.  All others go to the currently focused {@link android.view.View}.
For example, this means a {@link android.view.View} must take focus in order to
receive joystick events. If needed, applications can handle these events at the
level of Activity or Dialog by implementing {@link
android.view.View#onGenericMotionEvent(android.view.MotionEvent)
onGenericMotionEvent()} there instead.</p>

<p class="note">To look at a sample application that uses joystick motion
events, see <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html">GameControllerInput</a> 
and <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameView.html">GameView</a>.</p>

<h3>RTP API</h3>

<p>Android 3.1 exposes an API to its built-in RTP (Real-time Transport Protocol)
stack, which applications can use to manage on-demand or interactive data
streaming. In particular, apps that provide VOIP, push-to-talk, conferencing,
and audio streaming can use the API to initiate sessions and transmit or receive
data streams over any available network.</p>

<p>The RTP API is available in the {@link android.net.rtp} package. Classes
include: </p>
<ul>
<li>{@link android.net.rtp.RtpStream}, the base class of streams that send and
receive network packets with media payloads over RTP.</li>
<li>{@link android.net.rtp.AudioStream}, a subclass of {@link
android.net.rtp.RtpStream} that carries audio payloads over RTP.</li>
<li>{@link android.net.rtp.AudioGroup}, a local audio hub for managing and
mixing the device speaker, microphone, and {@link android.net.rtp.AudioStream}.</li>
<li>{@link android.net.rtp.AudioCodec}, which holds a collection of codecs that
you define for an {@link android.net.rtp.AudioStream}.</li>
</ul>

<p>To support audio conferencing and similar usages, an application instantiates
two classes as endpoints for the stream:</p>

<ul>
<li>{@link android.net.rtp.AudioStream} specifies a remote endpoint and consists
of network mapping and a configured {@link android.net.rtp.AudioCodec}.</li>
<li>{@link android.net.rtp.AudioGroup} represents the local endpoint for one
or more {@link android.net.rtp.AudioStream}s. The {@link android.net.rtp.AudioGroup} mixes
all the {@link android.net.rtp.AudioStream}s and optionally interacts with the device
speaker and the microphone at the same time.</li>
</ul>

<p>The simplest usage involves a single remote endpoint and local endpoint.
For more complex usages, please refer to the limitations described for
{@link android.net.rtp.AudioGroup}.</p>

<p>To use the RTP API, applications must request permission from the user by
declaring <code>&lt;uses-permission
android:name="android.permission.INTERNET"&gt;</code>
in their manifest files. To acquire the device microphone, the <code>&lt;uses-permission
android:name="android.permission.RECORD_AUDIO"&gt;</code> permission is also required.</p>

<h3 id="resizewidgets">Resizable app widgets</h3>

<p>Starting in Android 3.1, developers can make their homescreen widgets
resizeable &mdash; horizontally, vertically, or on both axes. Users touch-hold a
widget to show its resize handles, then drag the horizontal and/or vertical
handles to change the size on the layout grid. </p>

<p>Developers can make any Home screen widget resizeable by defining a
<code>resizeMode</code> attribute in the widget's {@link
android.appwidget.AppWidgetProviderInfo} metadata. Values for the
<code>resizeMode</code> attribute include "horizontal", "vertical", and "none".
To declare a widget as resizeable horizontally and vertically, supply the value
"horizontal|vertical".

<p>Here's an example: </p>

<pre>&lt;appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="86400000"
    android:previewImage="@drawable/preview"
    android:initialLayout="@layout/example_appwidget"
    android:configure="com.example.android.ExampleAppWidgetConfigure"
    android:resizeMode="horizontal|vertical" >
&lt;/appwidget-provider></pre>

<p>For more information about Home screen widgets, see the <a
href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a>
documentation.</p>

<h3 id="animation" style="margin-top:1.25em;">Animation framework</h3>

<ul>
<li>New ViewPropertyAnimator class
  <ul>
    <li>A new {@link android.view.ViewPropertyAnimator} class provides a
convenient
way for developers to animate select properties on {@link android.view.View} objects. The class
automaties and optimizes the animation of the properties and makes it easier to
manage multiple simulataneous animations on a {@link android.view.View} object.
<p>Using the {@link android.view.ViewPropertyAnimator} is straightforward. To animate properties for
a {@link android.view.View}, call {@link android.view.View#animate()} to
construct a {@link android.view.ViewPropertyAnimator} object for that {@link android.view.View}. Use the
methods on the {@link android.view.ViewPropertyAnimator} to specify what property to
animate and how to animate it. For example, to fade the {@link android.view.View} to transparent,
call <code>alpha(0);</code>. The {@link android.view.ViewPropertyAnimator} object
handles the details of configuring the underlying {@link
android.animation.Animator} class and starting it, then rendering the
animation.</p></li>
  </ul>
</li>
<li>Animation background color
  <ul>
    <li>New {@link android.view.animation.Animation#getBackgroundColor()} and
    {@link android.view.animation.Animation#setBackgroundColor(int)} methods let
    you get/set the background color behind animations, for window animations
only. Currently the background must be black, with any desired alpha level.</li>
  </ul>
</li>
<li>Getting animated fraction from <code>ViewAnimator</code>
  <ul>
    <li>A new {@link android.animation.ValueAnimator#getAnimatedFraction()}
method
lets you get the current animation fraction &mdash; the elapsed/interpolated
fraction used in the most recent frame update &mdash; from a {@link
android.animation.ValueAnimator}.</li>
  </ul>
</li>
</ul>

<h3 "ui">UI framework</h3>
<ul>
<li>Forced rendering of a layer
  <ul>
    <li>A new {@link android.view.View#buildLayer()} method lets an application
force a View's layer to be created and the View rendered into it immediately.
For example, an application could use this method to render a View into its
layer before starting an animation. If the View is complex, rendering it into
the layer before starting the animation will avoid skipping frames.</li>
  </ul>
</li>
<li>Camera distance
  <ul>
    <li>Applications can use a new method
{@link android.view.View#setCameraDistance(float)} to set the distance from the
camera
to a View. This gives applications improved control over 3D transformations of
the View, such as rotations. </li>
  </ul>
</li>
<li>Getting a calendar view from a DatePicker
  <ul>
    <li>A new {@link android.widget.DatePicker#getCalendarView()} method
    lets you get a {@link android.widget.CalendarView} from a {@link
android.widget.DatePicker}
    instance.</li>
  </ul>
</li>
<li>Getting callbacks when views are detached
  <ul>
    <li>A new {@link android.view.View.OnAttachStateChangeListener} lets you
receive
callbacks when a View is attached or detached from its window. Use {@link
android.view.View#addOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener) addOnAttachStateChangeListener()}
to add a listener and {@link
android.view.View#removeOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener) addOnAttachStateChangeListener()} to remove it.</li>
  </ul>
</li>
<li>Fragment breadcrumb listener, new onInflate() signature
  <ul>
    <li>A new method, {@link
android.app.FragmentBreadCrumbs#setOnBreadCrumbClickListener(android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener) setOnBreadCrumbClickListener()},
provides a hook to let
applications intercept fragment-breadcrumb clicks and take any action needed
before going to the backstack entry or fragment that was clicked. </li>
    <li>In the {@link android.app.Fragment} class, {@link
android.app.Fragment#onInflate(android.util.AttributeSet, android.os.Bundle)
onInflate(attrs, savedInstanceState)} is deprecated. Please use {@link
android.app.Fragment#onInflate(android.app.Activity, android.util.AttributeSet,
android.os.Bundle) onInflate(activity, attrs, savedInstanceState)} instead.</li>
  </ul>
</li>
<li>Display search result in new tab
  <ul>
    <li>An {@link android.app.SearchManager#EXTRA_NEW_SEARCH} data key for {@link
android.content.Intent#ACTION_WEB_SEARCH} intents lets you open a search in a
new browser tab, rather than in an existing one.</li>
  </ul>
</li>

<li>Drawable text cursor
  <ul>
<li>You can now specify a drawable to use as the text cursor using the new
resource attribute {@link android.R.attr#textCursorDrawable}.</li>
  </ul>
</li>
<li>Setting displayed child in remote views
  <ul>
    <li>A new convenience method, {@link
android.widget.RemoteViews#setDisplayedChild(int, int) setDisplayedChild(viewId,
childIndex)}, is available in {@link android.widget.RemoteViews} subclasses, to
let you set the child displayed in {@link android.widget.ViewAnimator} and
{@link android.widget.AdapterViewAnimator} subclasses such as {@link
android.widget.AdapterViewFlipper}, {@link android.widget.StackView}, {@link
android.widget.ViewFlipper}, and {@link android.widget.ViewSwitcher}.</li>
  </ul>
</li>
<li>Generic keys for gamepads and other input devices
  <ul>
    <li>{@link android.view.KeyEvent} adds a range of generic keycodes to
    accommodate gamepad buttons. The class also adds
    {@link android.view.KeyEvent#isGamepadButton(int)} and several other
    helper methods for working with keycodes.</li>
  </ul>
</li>
</ul>

<h3 id="graphics" style="margin-top:1.3em;">Graphics</h3>

<ul>
<li>Helpers for managing bitmaps
  <ul>
  <li>{@link android.graphics.Bitmap#setHasAlpha(boolean)} lets an app indicate that
all of the pixels in a Bitmap are known to be opaque (false) or that some of the
pixels may contain non-opaque alpha values (true). Note, for some configs (such
as RGB_565) this call is ignored, since it does not support per-pixel alpha
values. This is meant as a drawing hint, as in some cases a bitmap that is known
to be opaque can take a faster drawing case than one that may have non-opaque
per-pixel alpha values. </li>
  <li>{@link android.graphics.Bitmap#getByteCount()} gets a Bitmap's size in
bytes.</li>
  <li>{@link android.graphics.Bitmap#getGenerationId()} lets an application find
out whether a Bitmap has been modified, such as for caching.</li>
  <li>{@link android.graphics.Bitmap#sameAs(android.graphics.Bitmap)} determines
whether a given Bitmap differs from the current Bitmap, in dimension,
configuration, or pixel data. </li>
  </ul>
</li>
<li>Setting camera location and rotation
  <ul>
  <li>{@link android.graphics.Camera} adds two new methods {@link
android.graphics.Camera#rotate(float, float, float) rotate()} and {@link
android.graphics.Camera#setLocation(float, float, float) setLocation()} for
control of the
camera's location, for 3D transformations.</li>
</ul>
</li>
</ul>

<h3 id="network" style="margin-top:1.25em;">Network</h3>

<ul>
<li>High-performance Wi-Fi lock
  <ul>
    <li>A new high-performance Wi-Fi lock lets applications maintain
high-performance Wi-Fi connections even when the device screen is off.
Applications that stream music, video, or voice for long periods can acquire the
high-performance Wi-Fi lock to ensure streaming performance even when the screen
is off. Because it uses more power, applications should acquire the
high-performance Wi-Fi when there is a need for a long-running active
connection.
<p>To create a high-performance lock, pass {@link
android.net.wifi.WifiManager#WIFI_MODE_FULL_HIGH_PERF} as the lock mode in a
call to {@link android.net.wifi.WifiManager#createWifiLock(int,
java.lang.String) createWifiLock()}.</p></li>
  </ul>
</li>
<li>More traffic stats
  <ul>
    <li>Applications can now access statistics about more types of network usage
using new methods in {@link android.net.TrafficStats}. Applications can use the
methods to get UDP stats, packet count, TCP transmit/receive payload bytes and
segments for a given UID.</li>
  </ul>
</li>
<li>SIP auth username
  <ul>
    <li>Applications can now get and set the SIP auth username for a profile
using
the new methods {@link android.net.sip.SipProfile#getAuthUserName()
getAuthUserName()} and {@link
android.net.sip.SipProfile.Builder#setAuthUserName(java.lang.String)
setAuthUserName()}.</li>
  </ul>
</li>
</ul>


<h3 id="download" style="margin-top:1.25em;">Download Manager</h3>
<ul>
<li>Handling of completed downloads
  <ul>
    <li>Applications can now initiate downloads that notify users only on
completion. To initiate this type of download, applications pass {@link
android.app.DownloadManager.Request#VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION}
in the {@link
android.app.DownloadManager.Request#setNotificationVisibility(int)
setNotificationVisibility()} method of
the a request object.</li>
    <li>A new method, {@link
android.app.DownloadManager#addCompletedDownload(java.lang.String,
java.lang.String, boolean, java.lang.String, java.lang.String, long, boolean)
addCompletedDownload()}, lets an application add a file to the
downloads database, so that it can be managed by the Downloads application.</li>
  </ul>
</li>
<li>Show downloads sorted by size
  <ul>
    <li>Applications can start the Downloads application in sort-by-size mode by
adding the new extra {@link
android.app.DownloadManager#INTENT_EXTRAS_SORT_BY_SIZE} to an {@link
android.app.DownloadManager#ACTION_VIEW_DOWNLOADS} intent.</li>
    </ul>
</li>
</ul>

<h3 id="ime" style="margin-top:1.25em;">IME framework</h3>

<ul>
<li>Getting an input method's extra value key
  <ul><li>The {@link android.view.inputmethod.InputMethodSubtype} adds the
method
{@link
android.view.inputmethod.InputMethodSubtype#containsExtraValueKey(java.lang.String) containsExtraValueKey()} to check whether an ExtraValue string is stored
for the subtype and
the method {@link
android.view.inputmethod.InputMethodSubtype#getExtraValueOf(java.lang.String)
getExtraValueOf()} to extract a specific key value from the ExtraValue hashmap.
</li>
  </ul>
</li>
</ul>

<h3 id="media" style="margin-top:1.25em;">Media</h3>

<ul>
<li>New streaming audio formats
  <ul>
    <li>The media framework adds built-in support for raw ADTS AAC content, for
improved streaming audio, as well as support for FLAC audio, for highest quality
(lossless) compressed audio content. See the <a
href="{@docRoot}guide/appendix/media-formats.html">Supported Media Formats</a>
document for more information.</p></li>
  </ul>
</li>
</ul>

<h3 id="launchcontrols" style="margin-top:1.25em;">Launch controls on stopped
applications</h3>

<p>Starting from Android 3.1, the system's package manager keeps track of
applications that are in a stopped state and provides a means of controlling
their launch from background processes and other applications.</p>

<p>Note that an application's stopped state is not the same as an Activity's
stopped state. The system manages those two stopped states separately.</p>

<p>The platform defines two new intent flags that let a sender specify
whether the Intent should be allowed to activate components in stopped
application.</p>

<ul>
<li>{@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES} &mdash;
Include intent filters of stopped applications in the list of potential targets
to resolve against. </li>
<li>{@link android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES} &mdash;
Exclude intent filters of stopped applications from the list of potential
targets.</li>
</ul>

<p>When neither or both of these flags is defined in an intent, the default
behavior is to include filters of stopped applications in the list of
potential targets.</p>

<p>Note that the system adds {@link
android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES} <em>to all broadcast
intents</em>. It does this to prevent broadcasts from background services from
inadvertently or unnecessarily launching components of stoppped applications.
A background service or application can override this behavior by adding the
{@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES} flag to broadcast
intents that should be allowed to activate stopped applications.</p>

<p>Applications are in a stopped state when they are first installed but are not
yet launched and when they are manually stopped by the user (in Manage
Applications).</p>

<h3 id="installnotification">Notification of application first launch and upgrade</h3>

<p>The platform adds improved notification of application first launch and
upgrades through two new intent actions:</p>

<ul>
<li>{@link android.content.Intent#ACTION_PACKAGE_FIRST_LAUNCH} &mdash; Sent to
the installer package of an application when that application is first launched
(that is, the first time it is moved out of a stopped state). The data
contains the name of the package. </li>

<li>{@link android.content.Intent#ACTION_MY_PACKAGE_REPLACED} &mdash; Notifies
an application that it was updated, with a new version was installed over
an existing version.  This is only sent to the application that was replaced. It
does not contain any additional data. To receive it, declare an intent filter
for this action. You can use the intent to trigger code that helps get your
application back in proper running shape after an upgrade.

<p>This intent is sent directly to the application, but only if the application
was upgraded while it was in started state (not in a stopped state).</p></li>

</ul>

<h3 id="other">Core utilities</h3>

<ul>
<li>LRU cache
  <ul>
    <li>A new {@link android.util.LruCache} class lets your applications benefit
from efficient caching. Applications can use the class to reduce the time spent
computing or downloading data from the network, while maintaining a sensible
memory footprint for the cached data.{@link android.util.LruCache} is a cache
that holds strong references to a limited number of values. Each time a value is
accessed, it is moved to the head of a queue. When a value is added to a full
cache, the value at the end of that queue is evicted and may become eligible for
garbage collection.</li>
  </ul>
</li>
<li>File descriptor as <code>int</code>
  <ul>
    <li>You can now get the native file descriptor int for a {@link
android.os.ParcelFileDescriptor} using either of the new methods {@link
android.os.ParcelFileDescriptor#getFd()} or {@link
android.os.ParcelFileDescriptor#detachFd()}. </li>
  </ul>
</li>
</ul>






<h3 id="webkit" style="margin-top:1.25em;">WebKit</h3>

<ul>

<li>File scheme cookies
  <ul>
    <li>The {@link android.webkit.CookieManager} now supports cookies that use
the
<code>file:</code> URI scheme. You can use {@link
android.webkit.CookieManager#setAcceptFileSchemeCookies(boolean)
setAcceptFileSchemeCookies()} to
enable/disable support for file scheme cookies, before constructing an instance
of <code>WebView</code> or <code>CookieManager</code>. In a
<code>CookieManager</code> instance, you can check whether file scheme cookies
is enabled by calling {@link
android.webkit.CookieManager#allowFileSchemeCookies()}.</li>
  </ul>
</li>
<li>Notification of login request
  <ul>
  <li>To support the browser autologin features introduced in Android 3.0, the
new
method {@link
android.webkit.WebViewClient#onReceivedLoginRequest(android.webkit.WebView,java.lang.String, java.lang.String, java.lang.String) onReceivedLoginRequest()}
notifies the host
application that an autologin request for the user was processed. </li>
  </ul>
</li>
<li>Removed classes and interfaces
  <ul>
    <li>Several classes and interfaces were removed from the public API, after
previously being in deprecated state. See the <a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a> for more information.</p></li>
  </ul>
  </li>
</ul>



<h3 id="browser" style="margin-top:1.25em;">Browser</h3>

<p>The Browser application adds the following features to support web
applications:</p>

<ul>
<li>Support for inline playback of video embedded in HTML5
<code>&lt;video&gt;</code> tag. Playback is hardware-accelerated where possible.
</li>
<li>Layer support for fixed position elements for all sites (mobile and
desktop).</li>
</ul>





<h3 id="features">New feature constants</h3>

<p>The platform adds new hardware feature constants that developers can declare
in their application manifests, to inform external entities such as Google
Play of the application's requirement for new hardware capabilities supported
in this version of the platform. Developers declare these and other feature
constants in <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
&lt;uses-feature&gt;}</a> manifest elements.

<ul>
  <li>{@link android.content.pm.PackageManager#FEATURE_USB_ACCESSORY
android.hardware.usb.accessory} &mdash; The application uses the <a href="#usb">USB
API</a> to communicate with external hardware devices connected over USB and
function as hosts.</li>
  <li>{@link android.content.pm.PackageManager#FEATURE_USB_HOST
android.hardware.usb.host} &mdash; The application uses the <a href="#usb">USB API</a>
to communicate with external hardware devices connected over USB and function as
devices.</li>
</ul>

<p>Google Play filters applications based on features declared in <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
&lt;uses-feature&gt;}</a> manifest elements. For more information about
declaring features in an application manifest, read <a
href="{@docRoot}google/play/filters.html">Google Play
Filters</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.</p>

<p>For more information, read <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">What is API
Level?</a></p>
