page.title=Ice Cream Sandwich

@jd:body


<style type="text/css">
#jd-content {
  max-width:1024px;
}
#jd-content div.screenshot {
  float:left;
  clear:left;
  padding:15px 30px 15px 0;
}
#jd-content div.video {
  float:right;
  padding:0 0 40px 60px;
}
#jd-content table.columns {
  margin:0 0 1em 0;
}
#jd-content table.columns td {
  padding:0;
}
#jd-content table.columns td+td {
  padding:0 2em;
}
#jd-content table.columns td img {
  margin:0;
}
#jd-content table.columns td+td>*:first-child {
  margin-top:-2em;
}
.green {
  color:#8db529;
  font-weight:bold;
}
</style>

<p>Welcome to Android 4.0!</p>

<p>Android 4.0 delivers a refined, unified UI for phones and tablets and
introduces innovative features for users and developers. This document provides
a glimpse of the many new features and technologies that make Android 4.0
simple, beautiful, and beyond smart. <!--For technical details about
new developer APIs described below, see the <a
href="{@docRoot}about/versions/android-4.0.html">Android 4.0 API Overview</a>
document.--></p>

<ul>
  <li><a href="#UserFeatures">Android 4.0 for Users</a></li>
  <li><a href="#DeveloperApis">Android 4.0 for Developers</a></li>
</ul>

<h2 id="UserFeatures" style="clear:right">Android 4.0 for Users</h2>

<div style="padding-bottom:0em;">
<a href="{@docRoot}sdk/images/4.0/home-lg.png" target="_android"><img
style="margin-left:10px;float:right;xborder:1px solid #ddd;border-radius: 5px;"
src="{@docRoot}sdk/images/4.0/home.png" alt="" height="300" width="180" /></a>
<a href="{@docRoot}sdk/images/4.0/lock-lg.png" target="_android"><img
style="margin-left:20px;float:right;border:1px solid #ddd;border-radius: 5px;"
src="{@docRoot}sdk/images/4.0/lock.png" alt="" height="300" width="180" /></a>
</div>


<h3 id="simple" style="color:#258AAF">Simple, beautiful, beyond smart</h3>

<p>Android 4.0 builds on the things people love most about Android &mdash; easy
multitasking, rich notifications, customizable home screens, resizable widgets,
and deep interactivity &mdash; and adds powerful new ways of communicating and
sharing.</p>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Refined, evolved UI</strong></p>

<p>Focused on bringing the power of Android to the surface, Android 4.0 makes
<strong>common actions more visible</strong> and lets users navigate with
simple, intuitive gestures. Refined <strong>animations</strong> and feedback
throughout the system make interactions engaging and interesting. An entirely
<strong>new typeface</strong> optimized for high-resolution screens improves
readability and brings a polished, modern feel to the user interface.</p>

<p>Virtual buttons in the System Bar let users navigate instantly to Back, Home,
and Recent Apps. The <strong>System Bar</strong> and virtual buttons are present
across all apps, but can be dimmed by applications for full-screen viewing.
Users can access each application's contextual options in the <strong>Action
Bar</strong>, displayed at the top (and sometimes also at the bottom) of the
screen.</p>

<p><strong>Multitasking</strong> is a key strength of Android and it's made even
easier and more visual on Android 4.0. The Recent Apps button lets users jump
instantly from one task to another using the list in the System Bar. The list
pops up to show thumbnail images of apps used recently &mdash; tapping a
thumbnail switches to the app.</p>

<div  style="padding-top:0em;">
<div style="margin-right:.5em;float:left;width:182px;padding-top:.5em;">
<a href="{@docRoot}sdk/images/4.0/tasks-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/tasks.png" alt="" height="240" width="144" style="border:1px
solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1em;font-size:.9em;padding-right:1em;">The Recent Apps list makes
multitasking simple.</div>
<a href="{@docRoot}sdk/images/4.0/lock-camera-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/lock-camera.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1em;font-size:.9em;padding-right:1.75em;">Jump to the camera or see
notifications without unlocking.</div>
<a href="{@docRoot}sdk/images/4.0/contact-call-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/contact-call.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;padding:0" /></a>
<!--<a href="{@docRoot}sdk/images/4.0/quick-response-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/quick-responses-new.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;" /></a>-->
<div style="padding-bottom:.5em;font-size:.9em;padding-right:1.75em;">For incoming calls, you can
respond instantly by&nbsp;text.</div>
</div>
</div>

<p>Rich and interactive <strong>notifications</strong> let users keep in
constant touch with incoming messages, play music tracks, see real-time updates
from apps, and much more. On smaller-screen devices, notifications appear at the
top of the screen, while on larger-screen devices they appear in the System
Bar.</p>

<div  style="padding-top:0em;">
<div
style="float:right;margin-left:20px;margin-top:.5em;margin-bottom:0;padding-bottom:
0 ; width:326px">
<a href="{@docRoot}sdk/images/4.0/allapps-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/allapps.png" alt="" height="240" width="144" style="border:1px
solid #ddd;border-radius: 6px;" /></a>
<a href="{@docRoot}sdk/images/4.0/calendar-widget-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/calendar-widget.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1em;margin-top:0;padding-top:0;font-size:.9em"><!--<strong>Figure
3.</strong>-->The All Apps launcher (left) and resizable widgets (right) give you apps and rich
content from the home screen.</div>
</div>
</div>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Home screen folders and
favorites tray</strong></p>

<p>New home screen <strong>folders</strong> offer a new way for users to group
their apps and shortcuts logically, just by dragging one onto another. Also, 
in All Apps launcher, users can now simply <strong>drag an app</strong> to get
information about it or immediately uninstall it, or disable a pre-installed app.</p>

<p>On smaller-screen devices, the home screen now includes a customizable
<strong>favorites tray</strong> visible from all home screens. Users can drag
apps, shortcuts, folders, and other priority items in or out of the favorites
tray for instant access from any home screen.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Resizable
widgets</strong></p>

<p>Home screens in Android 4.0 are designed to be content-rich and customizable.
Users can do much more than add shortcuts &mdash; they can embed live
application content directly through interactive <strong>widgets</strong>.
Widgets let users check email, flip through a calendar, play music, check social
streams, and more &mdash; right from the home screen, without having to launch
apps. Widgets are resizable, so users can expand them to show more content or
shrink them to save space.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>New lock screen
actions</strong></p>

<p>The lock screens now let users do more without unlocking. From the slide lock
screen, users can <strong>jump directly to the camera</strong> for a picture or
<strong>pull down the notifications window</strong> to check for messages. When
listening to music, users can even manage music tracks and see album art. </p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Quick responses for
incoming calls</strong></p>

<p>When an incoming call arrives, users can now quickly <strong>respond by text
message</strong>, without needing to pick up the call or unlock the device. On
the incoming call screen, users simply slide a control to see a list of text
responses and then tap to send and end the call. Users can add their own
responses and manage the list from the Settings app.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Swipe to dismiss
notifications, tasks, and browser tabs</strong></p>

<p>Android 4.0 makes managing notifications, recent apps, and browser tabs even
easier. Users can now dismiss individual notifications, apps from the Recent
Apps list, and browser tabs with a simple swipe of a finger. </p>

<div  style="padding-top:0em;">
<div
style="float:right;margin-left:20px;margin-top:1.5em;margin-bottom:0;padding-bottom
: 0 ; width:200px">
<a href="{@docRoot}sdk/images/4.0/text-replace-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/text-replace.png" alt="" width="190" style="border:1px solid
#ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1.25em;margin-top:0;padding-top:0;font-size:.9em"><!--<strong>Figure
3.</strong>-->A spell-checker lets you find errors and fix them faster. </div>
<a href="{@docRoot}sdk/images/4.0/tts-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/tts.png" alt="" width="190" style="border:1px solid
#ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1.25em;margin-top:0;padding-top:0;font-size:.9em">A powerful voice input
engine lets you dictate continously.</div>
</div>
</div>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Improved text input and
spell-checking</strong></p>
  
<p>The soft keyboard in Android 4.0 makes text input even faster and more
accurate. Error correction and word suggestion are improved through a new set of
default dictionaries and more accurate heuristics for handling cases such as
double-typed characters, skipped letters, and omitted spaces. Word suggestion
is also improved and the suggestion strip is simplified to show only three
words at a time.</p>

<p>To fix misspelled words more easily, Android 4.0 adds a
<strong>spell-checker</strong> that locates and underlines errors and suggests
replacement words. With one tap, users can choose from multiple spelling
suggestions, delete a word, or add it to the dictionary. Users can even tap to
see replacement suggestions for words that are spelled correctly. For
specialized features or additional languages, users can now download and install
third-party dictionaries, spell-checkers, and other text services.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Powerful voice input
engine</strong></p>

<p>Android 4.0 introduces a powerful new voice input engine that offers a
continuous "open microphone" experience and streaming voice recognition. The new
voice input engine lets users dictate the text they want, for as long as they
want, using the language they want. Users can <strong>speak continously</strong> for a prolonged
time, even pausing for intervals if needed, and dictate punctuation to create
correct sentences. As the voice input engine enters text, it underlines possible
dictation errors in gray. After dictating, users can tap the underlined words to
quickly replace them from a list of suggestions.</p>

<div  style="padding-top:0em;">
<div style="margsin-right:.8em;float:left;width:350px;padding-top:1em;">
<a href="{@docRoot}sdk/images/4.0/usage-all-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/usage-all.png" alt="" height="240" width="144" style="border:1px
solid #ddd;border-radius: 6px;" /></a>
<a href="{@docRoot}sdk/images/4.0/usage-maps-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/usage-maps.png" alt="" height="240" width="144" style="border:1px
solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1em;font-size:.9em;padding-right:1.75em;"><!--<strong>Figure
3.</strong>--> Data usage controls let you monitor total usage by network type and application and
then set limits if needed.</div>
</div>
</div>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Control over network
data</strong></p>

<p>Mobile devices can make extensive use of network data for streaming content,
synchronizing data, downloading apps, and more. To meet the needs of users with
<strong>tiered or metered data plans</strong>, Android 4.0 adds new controls for
managing network data usage.</p>

<p>In the Settings app, colorful charts show the total data usage on each
network type (mobile or Wi-Fi), as well as amount of data used by each running
application. Based on their data plans, users can optionally set warning levels
or hard limits on data usage or disable mobile data altogether. Users can also
manage the background data used by individual applications as needed.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Designed for
accessibility</strong></p>

<p>A variety of new features greatly enhance the accessibility of Android 4.0
for blind or visually impaired users. Most important is a new
<strong>explore-by-touch mode</strong> that lets users navigate without having
to see the screen. Touching the screen once triggers audible feedback that
identifies the UI component below; a second touch in the same component
activates it with a full touch event. The new mode is especially important to
support users on new devices that use virtual buttons in the System Bar, rather
than dedicated hardware buttons or trackballs. Also, standard apps are updated
to offer an improved accessibility experience. The <strong>Browser</strong>
supports a script-based screen reader for reading favorite web content and
navigating sites. For improved readability, users can also increase the default
font size used across&nbsp;the&nbsp;system.</p>

<p>The accessibility experience begins at first setup &mdash; a simple
<strong>touch gesture</strong> during setup (clockwise square from upper left)
activates all accessibility features and loads a setup tutorial. Once
accessibility features are active, everything visible on the screen can be
spoken aloud by the standard screen reader.</p>


<h3 id="comms" style="color:#258AAF">Communication and sharing</h3>

<div  style="padding-top:0em;">
<div
style="float:right;margin-left:20px;margin-top:1.5em;margin-bottom:0;padding-bottom
: 0 ; width:490px">
<!--<img src="{@docRoot}sdk/images/4.0/contact-call.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;" />-->
<a href="{@docRoot}sdk/images/4.0/contact-faves-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/contact-faves.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;padding:0" /></a>
<a href="{@docRoot}sdk/images/4.0/contact-connect-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/contact-connect.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;padding:0" /></a>
<a href="{@docRoot}sdk/images/4.0/contact-email-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/contact-email.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;padding:0" /></a>

<div style="padding-bottom:1.25em;margin-top:0;padding-top:0;font-size:.9em"><!--<strong>Figure
3.</strong>-->Contacts and profiles are integrated across apps and social networks, for a
consistent, personal experience everywhere &mdash; from incoming calls to emails.</div>
</div>
</div>

<p>Designed for the way people live, Android 4.0 integrates rich social
communication and sharing touchpoints across the system, making it easy to talk,
email, text, and share.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>People and
profiles</strong></p>

<p>Throughout the system, a user’s social groups, profiles, and contacts are
linked together and integrated for easy accessibility. At the center is a new
<strong>People app</strong> that offers richer profile information, including a
large profile picture, phone numbers, addresses and accounts, status updates,
events, stream items, and a new button for connecting on integrated social networks. </p>

<p>The user's own contact information is stored in a new <strong>"Me"
profile</strong>, allowing easier sharing with apps and people. All of the
user's integrated contacts are displayed in an easy to manage list, including
controls over which contacts are shown from any integrated account or social
network. Wherever the user navigates across the system, tapping a profile photo
displays Quick Contacts, with large profile pictures, shortcuts to phone numbers,
text messaging, and more. </p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Unified calendar, visual
voicemail</strong></p>

<p>To help organize appointments and events, an updated <strong>Calendar
app</strong> brings together personal, work, school, and social agendas. With
user permission, other applications can contribute events to the calendar and
manage reminders, for an integrated view across multiple calendar providers. The
app is redesigned to let users manage events more easily. Calendars are
color-coded and users can <strong>swipe left or right</strong> to change dates
and pinch to zoom in or out agendas. </p>

<p>In the phone app, a new <strong>visual voicemail</strong> features integrates
incoming messages, voice transcriptions, and audio files from one or more
providers. Third-party applications can integrate with the Phone app to add
their own voice messages, transcriptions, and more to the visual voicemail
inbox. </p>

<div  style="padding-top:0em;">
<div style="margin-right:0em;float:left;width:282px;padding-top:1em;">
<a href="{@docRoot}sdk/images/4.0/camera-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/camera.png" alt="" width="240" height="144" style="border:1px
solid #ddd;border-radius: 6px;" /></a>
<a href="{@docRoot}sdk/images/4.0/gallery-edit-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/gallery-edit.png" alt="" width="240" height="144"
style="border:1px solid #ddd;border-radius: 6px;" /></a>
<a href="{@docRoot}sdk/images/4.0/gallery-share-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/gallery-share.png" alt="" width="240" height="144"
style="border:1px solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1em;font-size:.9em;padding-right:2.75em;">Capture the picture you want,
edit, and share instantly. </div>
</div>
</div>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Rich and versatile camera
capabilities</strong></p>

<p>The Camera app includes many new features that let users capture special moments
with great photos and videos. After capturing images, they can edit and share
them easily with friends. </p>

<p>When taking pictures, <strong>continuous focus</strong>, <strong>zero shutter
lag exposure</strong>, and decreased shot-to-shot speed help capture clear,
precise images. <strong>Stabilized image zoom</strong> lets users compose photos
and video in the way they want, including while video is recording. For new
flexibility and convenience while shooting video, users can now take
<strong>snapshots at full video resolution</strong> just by tapping the screen
as video continues to record.</p>

<p>To make it easier to take great pictures of people, built-in <strong>face
detection</strong> locates faces in the frame and automatically sets focus. For
more control, users can <strong>tap to focus</strong> anywhere in the preview
image. </p>

<p>For capturing larger scenes, the Camera introduces a <strong>single-motion
panorama</strong> mode. In this mode, the user starts an exposure and then
slowly turns the Camera to encompass as wide a perspective as needed. The Camera
assembles the full range of continuous imagery into a single panoramic
photo.</p>

<p>After taking a picture or video, users can quickly share it by email, text
message, bluetooth, social networks, and more, just by tapping the thumbnail in
the camera controls. </p>


<div  style="padding-top:0em;">
<div
style="float:right;margin-left:20px;padding-top:1em;margin-bottom:1em;padding-
bottom : 0 ;width:160px">
<img src="{@docRoot}sdk/images/4.0/gallery-widget.png" alt="" width="144" style="border:1px solid
#ddd;border-radius: 6px;" />
<div style="padding-bottom:1.25em;margin-top:0;padding-top:0;font-size:.9em">A Photo Gallery widget
on the home screen.</div>
</div>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Redesigned Gallery app
with photo editor</strong></p>

<p>The Gallery app now makes it easier to manage, show, and share photos and
videos. For managing collections, a <strong>redesigned album layout</strong>
shows many more albums and offers larger thumbnails. There are many ways to sort
albums, including by time, location, people, and tags. To help pictures look
their best, the Gallery now includes a powerful <strong>photo editor</strong>.
Users can crop and rotate pictures, set levels, remove red eyes, add effects,
and much more. After retouching, users can select one or multiple pictures or
videos to share instantly over email, text messaging, bluetooth, social
networks, or other apps.</p>

<p>An improved <strong>Picture Gallery widget</strong> lets users look at
pictures directly on their home screen. The widget can display pictures from a
selected album, shuffle pictures from all albums, or show a single image. After
adding the widget to the home screen, users can flick through the photo stacks
to locate the image they want, then tap to load it in Gallery. </p>

<div  style="padding-top:0em;clear:right;">
<div
style="float:right;margin-left:20px;padding-top:1em;margin-bottom:1em;padding-
bottom : 0 ;width:320px">
<img src="{@docRoot}sdk/images/4.0/live-effects.png" alt="" width="297" style="border:1px solid
#ddd;border-radius: 6px;" />
<div style="padding-bottom:1em;margin-top:0;padding-top:0;font-size:.9em">Live Effects let you
change backgrounds and use Silly Faces during video.</div>
</div>
</div>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Live Effects for transforming
video</strong></p>

<p>Live Effects is a collection of graphical transformations that add interest
and fun to videos captured in the Camera app. For example, users can
<strong>change the background</strong> behind them to any stock or custom image,
for just the right setting when shooting videeo. Also available for video is
Silly Faces, a set of morphing effects that use state-of-the-art face
recognition and GPU filters to transform facial features. For example, you can
use effects such as small eyes, big mouth, big nose, face squeeze, and more.
Outside of the Camera app, Live Effects is available during video chat in the
Google Talk app.</p>

<div  style="padding-top:0em;">
<div style="margsin-right:.8em;float:left;width:186px;padding-top:1em;">
<a href="{@docRoot}sdk/images/4.0/screenshot-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/screenshot.png" alt="" height="240"  width="144"
style="border:1px solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1.25em;margin-top:0;padding-top:0;font-size:.9em"> Snapping a
screenshot.</div>
</div>
</div>
</div>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Sharing with screenshots</strong></p>

<p>Users can now share what's on their screens more easily by taking
screenshots. Hardware buttons let them snap a <strong>screenshot</strong> and
store it locally. Afterward, they can view, edit, and share the screen shot in
Gallery or a similar app.</p>


<h3 id="cloud" style="color:#258AAF">Cloud-connected experience</h3>

<div  style="padding-top:0em;">
<div
style="float:right;margin-left:20px;padding-top:1em;margin-bottom:0;padding-bottom:
0 ; width:326px">
<a href="{@docRoot}sdk/images/4.0/browser-tabs-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/browser-tabs.png" alt="" height="240" width="144"
style="border:1px solid #ddd;border-radius: 6px;" /></a>
<a href="{@docRoot}sdk/images/4.0/browser-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/browser.png" alt="" height="240" width="144" style="border:1px
solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1.25em;margin-top:0;padding-top:0;font-size:.9em"><!--<strong>Figure
3.</strong>-->The Browser tabs menu <em>(left)</em> lets you quickly switch browser tabs. The
options menu <em>(right)</em> gives you new ways to manage your browsing experience.</div>
<img src="{@docRoot}sdk/images/4.0/bbench.png" alt="" width="310" />
<div style="padding-bottom:1em;margin-top:0;padding-top:0;font-size:.9em">Benchmark comparisons of
Android Browser.</div>
</div>
</div>

<p>Android has always been cloud-connected, letting users browse the web and
sync photos, apps, games, email, and contacts &mdash; wherever they are and
across all of their devices. Android 4.0 adds new browsing and email
capabilities to let users take even more with them and keep communication
organized.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Powerful web
browsing</strong></p>

<p>The Android Browser offers an experience that’s as rich and convenient as a
desktop browser. It lets users instantly sync and manage <strong>Google Chrome
bookmarks</strong> from all of their accounts, jump to their favorite content
faster, and even save it for reading later in case there's no network
available.</p>

<p>To get the most out of web content, users can now request full
<strong>desktop versions</strong> of web sites, rather than their mobile
versions. Users can set their preference for web sites separately for each
<strong>browser tab</strong>. For longer content, users can save a copy for
<strong>offline reading</strong>. To find and open saved pages, users can browse
a visual list that’s included with browser bookmarks and history.  For better
readability and accessibility, users can increase the browser’s <strong>zoom
levels</strong> and override the system default <strong>text sizes</strong>.</p>

<p>Across all types of content, the Android Browser offers dramatically improved
<strong>page rendering performance</strong> through updated versions of the
WebKit core and the V8 Crankshaft compilation engine for JavaScript. In
benchmarks run on a Nexus S device, the Android 4.0 browser showed an
improvement of nearly 220% over the Android 2.3 browser in the V8 Benchmark
Suite and more than 35% in the SunSpider 9.1 JavaScript Benchmark. When run on a
Galaxy Nexus device, the Android 4.0 browser showed improvement of nearly 550%
in the V8 benchmark and nearly 70% in the SunSpider benchmark.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Improved
email</strong></p>

<p>In Android 4.0, email is easier to send, read, and manage. For composing
email, <strong>improved auto-completion</strong> of recipients helps with
finding and adding frequent contacts more quickly. For easier input of frequent
text, users can now create <strong>quick responses</strong> and store them in
the app, then enter them from a convenient menu when composing. When replying to
a message, users can now toggle the message to Reply All and Forward without
changing screens.</p>

<p>For easier browsing across accounts and labels, the app adds an
<strong>integrated menu</strong> of accounts and recent labels. To help users
locate and organize IMAP and Exchange email, the Email app now supports
<strong>nested mail subfolders</strong>, each with synchronization rules. Users
can also search across folders on the server, for faster results. </p>

<p>For <strong>enterprises</strong>, the Email app supports EAS v14. It supports
EAS certificate authentication, provides ABQ strings for device type and mode,
and allows automatic sync to be disabled while roaming. Administrators can also
limit attachment size or disable attachments.</p>

<p>For keeping track of incoming email more easily, a <strong>resizable Email
widget</strong> lets users flick through recent email right from the home
screen, then jump into the Email app to compose or reply.</p>


<div  style="padding-top:0em;">
<div style="margsin-right:.8em;float:left;width:186px;padding-top:1em;">
<a href="{@docRoot}sdk/images/4.0/beam-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/beam.png" alt="" height="240" width="144" style="border:1px solid
#ddd;border-radius: 6px;" /></a>
<div
style="padding-bottom:1em;margin-top:0;padding-top:0;font-size:.9em;padding-right:1.5em;">Android
Beam lets users share what they are using with a single tap.</div>
</div>
</div>

<h3 id="innovation" style="color:#258AAF">Innovation</h3>

<p>Android is continously driving innovation forward, pushing the boundaries of
communication and sharing with new capabilities and interactions.</p>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Android Beam for
NFC-based sharing</strong></p>

<p>Android Beam is an innovative, convenient feature for sharing across two
NFC-enabled devices, It lets people instantly exchange favorite apps, contacts,
music, videos &mdash; almost anything. It’s incredibly simple and convenient to
use &mdash; there’s no menu to open, application to launch, or pairing needed.
Just touch one Android-powered phone to another, then tap to send.</p>

<p>For sharing apps, Android Beam pushes a link to the app's details page in
Google Play. On the other device, the Google Play client app launches and loads the
details page, for easy downloading of the app. Individual apps can build on
Android Beam to add other types of interactions, such as passing game scores,
initiating a multiplayer game or chat, and more.</p>

<div  style="padding-top:0em;">
<div
style="float:right;margin-left:20px;margin-top:.5em;margin-bottom:0;padding-bottom:
0 ; width:160px">
<a href="{@docRoot}sdk/images/4.0/face-unlock-lg.png" target="_android">
<img src="{@docRoot}sdk/images/4.0/face-unlock.png" alt="" height="240" width="144" style="border:1px solid #ddd;border-radius: 6px;" /></a>
<div style="padding-bottom:1em;margin-top:0;padding-top:0;font-size:.9em">Face recognition lets you
unlock your phone with your face.</div>
</div>
</div>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Face Unlock</strong></p>

<p>Android 4.0 introduces a completely new approach to securing a device, making
each person's device even more personal &mdash; Face Unlock is a new screen-lock
option that lets users unlock their devices with their faces. It takes advantage
of the device front-facing camera and state-of-the-art facial recognition
technology to register a face during setup and then to recognize it again when
unlocking the device. Users just hold their devices in front of their faces to
unlock, or use a backup PIN or pattern. </p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Wi-Fi P2P and Bluetooth HDP</strong></p>

<p>Support for <strong>Wi-Fi peer-to-peer (P2P)</strong> lets users connect directly to nearby peer
devices over Wi-Fi, for more reliable, higher-speed communication (in compliance with the Wi-Fi
Alliance's <a href="http://www.wi-fi.org/discover-and-learn/wi-fi-direct"
 class="external-link">Wi-Fi Direct&trade;</a>
certification program). No internet connection or tethering is needed. Through third-party apps,
users can connect to compatible devices to take advantage of new features such as instant sharing
of files, photos, or other media; streaming video or audio from another device; or connecting to
compatible printers or other devices.</p>


<p>Android 4.0 also introduces built-in support for connecting to <strong>Bluetooth Health Device Profile (HDP)</strong> devices. With support from third-party apps, users can connect to wireless medical devices and sensors in hospitals, fitness centers, homes, and elsewhere.</p>


<h2 id="DeveloperApis" style="clear:right">New Developer Features</h2>

<!-- <ul>
<li><a href="#ui-dev">Unified UI framework for phones, tablets, and more</a></li>
<li><a href="#communication-dev">Communication and sharing</a></li>
<li><a href="#media-dev">New media capabilities</a></li>
<li><a href="#connectivity-dev">New types of connectivity</a></li>
<li><a href="#uicomp-dev">New UI components and capabilities</a></li>
<li><a href="input-dev">New input types and text services</a></li>
<li><a href="#accessibility-dev">Enhanced accessibility APIs</a></li>
<li><a href="#data-dev">Efficient network usage</a></li>
<li><a href="#security-dev">Security for apps and content</a></li>
<li><a href="#enterprise-dev">Enhancements for Enterprise</a></li>
</ul>-->

<h3 id="ui-dev">Unified UI framework for phones, tablets, and more</h3>

<p>Android 4.0 brings a unified UI framework that lets developers create
elegant, innovative apps for phones, tablets, and more. It includes all of the
familiar Android 3.x interface elements and APIs &mdash; fragments, content
loaders, Action Bar, rich notifications, resizable home screen widgets, and more
&mdash; as well as new elements and APIs.</p>

<p>For developers, the unified UI framework in Android 4.0 means new UI tools,
consistent design practices, simplified code and resources, and streamlined
development across the range of Android-powered devices.</p>

<div class="sidebox-wrapper">
<div class="sidebox">
  <h3>Key Honeycomb developer features, <br>now for phones too</h3>

<p>Core UI</p>
<ul>
<li>Fragments and content loaders</li>
<li>Resizeable home screen widgets</li>
<li>Rich notifications</li>
<li>Multi-selection, drag-drop, clipboard</li>
<li>Improved screen-support API</li>
<li>Hardware-accelerated 2D graphics</li>
</ul>

<p>Graphics and animation</p>
<ul>
<li>Property-based animation</li>
<li>Renderscript 3D graphics</li>
</ul>

<p>Media and connectivity</p>
<ul>
<li>HTTP Live streaming</li>
<li>Bluetooth A2DP and HSP devices</li>
<li>Support for RTP</li>
<li>MTP/PTP file transfer</li>
<li>DRM framework</li>
<li>Input from keyboard, mouse, gamepad, joystick</li>
</ul>

<p>Enterprise</p>
<ul>
<li>Full device encryption</li>
<li>DPM policies for encrypted storage and passwords</li>
</ul>
</div>
</div>

<h3 id="communication-dev">Communication and sharing</h3>

<p>Android 4.0 extends social and sharing features to any application on the
device. Applications can integrate contacts, profile data, stream items, 
and calendar events from any of the user’s activities or social networks.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Social API</strong></p>

<p>A shared social provider and API provide a new unified store for contacts,
profile data, stream items, and photos. Any app or social network with user
permission can contribute raw contacts and make them accessible to other apps
and networks. Applications with user permission can also read profile data from
the provider and display it in their applications.</p>

<p>The social API lets applications store standard contact data as well as new
types of content for any given contact, including large profile photos, stream
items, and recent activity feedback. Recent activity feedback is a standard way for
applications to “tag” a contact with common activity, such as when the user
calls the contact or sends an email or SMS message. The social provider uses the
recent activity feedback as a new signal in ranking, such as for name
auto-complete, to keep the most relevant contacts ranked closest to the top.</p>

<p>Applications can also let users set up a social connection to a contact from
the People app. When the user touches Add Connection in a contact, the app
sends a public intent that other apps can handle, displaying any UI needed
to create the social connection.</p>

<p>Building on the social API, developers can add powerful new interactions that
span multiple social networks and contacts sources.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Calendar API</strong></p>

<p>A shared calendar content provider and framework API make it easier for
developers to add calendar services to their apps.</p>

<p>With user permission, any application can add events to the shared database
and manage dates, attendees, alerts, and reminders. Applications can also read
entries from the database, including events contributed by other applications,
and handle the display of event alerts and reminders. Using the calendar
provider, applications can take advantage of event data sourced from a variety
of apps and protocols, to offer innovative ways of viewing and managing a user’s
events. Apps can also use calendar data to improve the relevance of their
other content.</p>

<p>For lighter-weight access to calendar services, the Calendar app defines a
set of public Intents for creating, viewing, and editing events. Rather than
needing to implement a calendar UI and integrate directly with the calendar
provider, applications can simply broadcast calendar Intents. When the Calendar
app receives the Intents, it launches the appropriate UI and stores any event
data entered. Using calendar Intents, for example, apps can let users add events
directly from lists, dialogs, or home screen widgets, such as for making
restaurant reservations or booking time with friends.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Visual voicemail
API</strong></p>

<p>A shared Voicemail provider and API allow developers to build applications
that contribute to a unified voicemail store.  Voicemails are displayed and
played in the call log tab of the platform’s Phone app.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Android Beam</strong></p>

<p>Android Beam is an NFC-based feature that lets users instantly share
information about the apps they are using, just by touching two NFC-enabled
phones together. When the devices are in range &mdash; within a few centimeters
&mdash; the system sets up an NFC connection and displays a sharing UI. To share
whatever they are viewing with the other device, users just touch the screen.
</p>

<p>For developers, Android Beam is a new way of triggering almost any type of
proximity-based interaction. For example, it can let users instantly exchange
contacts, set up multiplayer gaming, join a chat or video call, share a photo or
video, and more. The system provides the low-level NFC support and the sharing
UI, while the foreground app provides lightweight data to transfer to the other
device. Developers have complete control over the data that is shared and how it
is handled, so almost any interaction is possible. For larger payloads,
developers can even use Android Beam to initiate a connection and transfer the
data over Bluetooth, without the need for user-visible pairing.</p>

<p>Even if developers do not add custom interactions based on Android Beam they
can still benefit from it being deeply integrated into Android. By default the
system shares the app’s Google Play URL, so it’s easy for the user to
download or purchase the app right away.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Modular sharing
widget</strong></p>

<p>The UI framework includes a new widget, ShareActionProvider, that lets
developers quickly embed standard share functionality and UI in the Action Bar
of their applications. Developers simply add ShareActionProvider to the menu and
set an intent that describes the desired sharing action. The system handles the
rest, building up the list of applications that can handle the share intent and
dispatching the intent when the user chooses from the menu.</p>


<h3 id="media-dev">New media capabilities</h3>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Low-level streaming
multimedia</strong></p>

<p>Android 4.0 provides a direct, efficient path for low-level streaming
multimedia. The new path is ideal for applications that need to maintain
complete control over media data before passing it to the platform for
presentation. For example, media applications can now retrieve data from any
source, apply proprietary encryption/decryption, and then send the data to the
platform for display.</p>

<p>Applications can now send processed data to the platform as a multiplexed
stream of audio/video content in MPEG-2 transport stream format. The platform
de-muxes, decodes, and renders the content. The audio track is rendered to the
active audio device, while the video track is rendered to either a Surface or a
SurfaceTexture. When rendering to a SurfaceTexture, the application can apply
subsequent graphics effects to each frame using OpenGL.</p>

<p>To support this low-level streaming, the platform introduces a new native API
based on <a href="http://www.khronos.org/openmax/al/" target="_top">Khronos
OpenMAX AL 1.0.1</a>. The  API is implemented on the same underlying services as
the platform’s existing OpenSL ES API, so developers can make use of both APIs
together if needed. Tools support for low-level streaming multimedia will be
available in an upcoming release of the Android NDK.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>New camera
capabilities</strong></p>

<p>Developers can take advantage of a variety of new camera features in Android
4.0. ZSL exposure, continuous focus, and image zoom let apps capture better
still and video images, including during video capture. Apps can even capture
full-resolution snapshots while shooting video. Apps can now set custom metering
regions in a camera preview, then manage white balance and exposure dynamically
for those regions. For easier focusing and image processing, a face-detection
service identifies and tracks faces in a preview and returns their screen
coordinates.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Media effects for
transforming images and video</strong></p>

<p>A set of high-performance transformation filters let developers apply rich
effects to any image passed as an OpenGL ES 2.0 texture. Developers can adjust
color levels and brightness, change backgrounds, sharpen, crop, rotate, add lens
distortion, and apply other effects. The transformations are processed by the
GPU, so they are fast enough for processing image frames loaded from disk,
camera, or video stream.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Audio remote
controls</strong></p>

<p>Android 4.0 adds a new audio remote control API that lets media applications
integrate with playback controls that are displayed in a remote view. Media
applications can integrate with a remote music playback control that’s built
into in the platform’s lock screen, allowing users to control song selection and
playback without having to unlock and navigate to the music app.</p>

<p>Using the audio remote control API, any music or media app can register to
receive media button events from the remote control and then manage play state
accordingly. The application can also supply metadata to the remote control,
such as album art or image, play state, track number and description, duration,
genre, and more.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>New media codecs and
containers</strong></p>

<p>Android 4.0 adds support for additional media types and containers to give
developers access to the formats they need. For high-quality compressed images,
the media framework adds support for WebP content. For video, the framework now
supports streaming VP8 content. For streaming multimedia, the framework supports
HTTP Live streaming protocol version 3 and encoding of ADTS-contained AAC
content. Additionally, developers can now use Matroska containers for Vorbis and
VP8 content.</p>


<h3 id="connectivity-dev">New types of connectivity</h3>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Wi-Fi P2P</strong></p>

<p>Developers can use a framework API to discover and connect directly to nearby devices over a
high-performance, secure Wi-Fi peer-to-peer (P2P) connection. No internet connection or hotspot is
needed. Android's Wi-Fi P2P framework complies with the Wi-Fi Alliance's <a href=
"http://www.wi-fi.org/discover-and-learn/wi-fi-direct" class="external-link">Wi-Fi Direct&trade;</a>
certification program.</p>


<p>Wi-Fi peer-to-peer (P2P) opens new opportunities for developers to add innovative
features to their applications. Applications can use Wi-Fi P2P to share
files, photos, or other media between devices or between a desktop computer and
an Android-powered device. Applications could also use Wi-Fi P2P to stream
media content from a peer device such as a digital television or audio player,
connect a group of users for gaming, print files, and more.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Bluetooth Health Device
Profile (HDP)</strong></p>

<p>Developers can now build powerful medical applications that use Bluetooth to
communicate with wireless devices and sensors in hospitals, fitness centers,
homes, and elsewhere. Applications can collect and manage data from HDP source
devices and transmit it to backend medical applications such as records systems,
data analysis services, and others.</p>

<p>Using a framework API, applications can use Bluetooth to discover nearby
devices, establish reliable or streaming data channels, and manage data
transmission. Applications can supply any IEEE 11073 Manager to retrieve and
interpret health data from Continua-certified devices such as heart-rate
monitors, blood meters, thermometers, and scales. </p>


<h3 id="uicomp-dev">New UI components and capabilities</h3>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Layout
enhancements</strong></p>

<p>A new layout, GridLayout, improves the performance of Android applications by
supporting flatter view hierarchies that are faster to layout and render.
Because hierarchies are flatter, developers can also manage alignments between
components that are visually related to each other even when they are not
logically related, for precise control over application UI. GridLayout is also
specifically designed to be configured by drag-and-drop design tools such as the
ADT Plug-in for Eclipse.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>OpenGL ES texture
views</strong></p>

<p>A new TextureView object lets developers directly integrate OpenGL ES
textures as rendering targets in a UI hierarchy. The object lets developers
display and manipulate OpenGL ES rendering just as they would a normal view
object in the hierarchy, including moving, transforming, and animating the view
as needed. The TextureView object makes it easy for developers to embed camera
preview, decoded video, OpenGL game scenes, and more. TextureView can be viewed
as a more powerful version of the existing SurfaceView object, since it offers
the same benefits of access to a GL rendering surface, with the added advantage
of having that surface participate fully in the normal view hierarchy.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Hardware-accelerated 2D
drawing</strong></p>

<p>All Android-powered devices running Android 4.0 are required to support
hardware-accelerated 2D drawing. Developers can take advantage of this to add
great UI effects while maintaining optimal performance on high-resolution
screens, even on phones. For example, developers can rely on accelerated
scaling, rotation, and other 2D operations, as well as accelerated UI components
such as TextureView and compositing modes such as filtering, blending, and
opacity.</p>


<h3 id="input-dev">New input types and text services</h3>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Stylus input, button
support, hover events</strong></p>

<p>Android 4.0 includes full support for stylus input events, including tilt and
distance axes, pressure, and related motion event properties. To help
applications distinguish motion events from different sources, the platform adds
distinct tool types for stylus, finger, mouse, and eraser. For improved input
from multi-button pointing devices, the platform now provides distinct primary,
secondary, and tertiary buttons, as well as back and forward buttons.
Hover-enter and hover-exit events are also added, for improved navigation and
accessibility. Developers can build on these new input features to add powerful
interactions to their apps, such as precise drawing and gesturing, handwriting
and shape recognition, improved mouse input, and others.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Text services API for
integrating spelling checkers</strong></p>

<p>Android 4.0 lets applications query available text services such as
dictionaries and spell checkers for word suggestions, corrections, and similar
data. The text services are external to the active IME, so developers can create
and distribute dictionaries and suggestion engines that plug into the platform.
When an application receives results from a text service &mdash; for example,
word suggestions &mdash; it can display them in a dedicated suggestion popup
window directly inside the text view, rather than relying on the IME to display
them. </p>


<h3 id="accessibility-dev">Enhanced accessibility APIs</h3>

<p>Android 4.0 adds new accessibility features and an enhanced API to let
developers improve the user experience in their apps, especially on devices that
don’t have hardware buttons. For accessibility services such as screen readers
in particular, the platform offers new APIs to query window content, for easier
navigation, better feedback, and richer user interfaces.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Accessibility
API</strong></p>

<p>To let applications manage interactions more effectively when accessibility
features are enabled, the platform adds accessibility events for
explore-by-touch mode, scrolling, and text selection. For these and other
events, the platform can attach a new object called an accessibility record that
provides extra information about the event context.</p>

<p>Using the accessibility record and related APIs, applications can now access
the view hierarchy associated with an event. Applications can query for key
properties such as parent and child nodes, available states, supported actions,
screen position, and more. Applications can also request changes to certain
properties to help manage focus and selected state. For example, an
accessibility service could use these new capabilities to add convenient
features such as screen-search by text. </p> 


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Text-to-speech
API</strong></p>

<p>A new framework API lets developers write text-to-speech engines and make
them available to any app requesting TTS capabilities.</p>


<h3 id="data-dev">Efficient network usage</h3>

<p>In Android 4.0, users can see how much network data their running apps are
using. They can also set limits on data usage by network type and disable
background data usage for specific applications. In this context, developers
need to design their apps to run efficiently and follow best practices for
checking the network connection. Android 4.0 provides network APIs to let
applications meet those goals.</p>

<p>As users move between networks or set limits on network data, the platform
lets applications query for connection type and availability. Developers can use
this information to dynamically manage network requests to ensure the best
experience for users. Developers can also build custom network and data-usage
options into their apps, then expose them to users directly from Settings by
means of a new system Intent.</p>


<h3 id="security-dev">Security for apps and content</h3>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>Secure management of
credentials</strong></p>

<p>Android 4.0 makes it easier for applications to manage authentication and
secure sessions. A new keychain API and underlying encrypted storage let
applications store and retrieve private keys and their corresponding certificate
chains. Any application can use the keychain API to install and store user
certificates and CAs securely.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Address Space Layout
Randomization</strong></p>

<p>Android 4.0 now provides address space layout randomization (ASLR) to help
protect system and third party applications from exploitation due to
memory-management issues.</p>


<h3 id="enterprise-dev">Enhancements for Enterprise</h3>

<p style="margin-top:1em;margin-bottom:.75em;"><strong>VPN client
API</strong></p>

<p>Developers can now build or extend their own VPN solutions on the platform
using a new VPN API and underlying secure credential storage. With user
permission, applications can configure addresses and routing rules, process
outgoing and incoming packets, and establish secure tunnels to a remote server.
Enterprises can also take advantage of a standard VPN client built into the
platform that provides access to L2TP and IPSec protocols.</p>


<p style="margin-top:1em;margin-bottom:.75em;"><strong>Device policy management
for camera</strong></p>

<p>The platform adds a new policy control for administrators who manage devices
using an installed Device Policy Manager. Administrators can now remotely
disable the camera on a managed device for users working in sensitive
environments.</p>





