page.title=Android 2.0 Platform Highlights
sdk.date=October 2009

@jd:body


<style type="text/css">
#jd-content div.screenshot,
#jd-content div.video {
  float:right;
  clear:right;
  padding:15px 60px;
  font-size:.9em;
  font-weight:bold;
  line-height:1.7em;
}
#jd-content div.video {
  padding-top:0;
  margin-top:-15px;
}
#jd-content div.screenshot.second {
  clear:none;
  padding:15px 0 15px 60px;
}
#jd-content div.screenshot img {
  margin:0;
  border:1px solid #ccc;
}
</style>

<div class="video">
<object width="278 height="180">
<param name="movie" value="http://www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&"></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="//www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&" type="application/x-shockwave-flash" 
allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
</object>
</div>


<p>The Android 2.0 platform introduces many new and exciting features for
users and developers. This document provides a glimpse at some of the new features
and technologies in Android 2.0.</p>

<ul>
  <li><a href="#UserFeatures">New User Features</a></li>
  <li><a href="#PlatformTechnologies">New Platform Technologies</a></li>
</ul>


    
<h2 id="UserFeatures" style="clear:right">New User Features</h2>

<!-- screenshots float right -->

<div class="screenshot">
  <img src="{@docRoot}sdk/images/2.0/quick-connect.png" class="screenshot" alt="" /><br/>
  Quick Contact for Android
</div>

<div class="screenshot second">
  <img src="{@docRoot}sdk/images/2.0/multiple-accounts.png" class="screenshot" alt="" /><br/>
  Multiple Accounts
</div>

<div class="screenshot">
  <img src="{@docRoot}sdk/images/2.0/mms-search.png" class="screenshot" alt="" /><br/>
  Messaging Search
</div>

<div class="screenshot second">
  <img src="{@docRoot}sdk/images/2.0/email-inbox.png" class="screenshot" alt="" /><br/>
  Email Combined Inbox
</div>

<div class="screenshot">
  <img src="{@docRoot}sdk/images/2.0/camera-modes.png" class="screenshot" alt="" /><br/>
  Camera Modes
</div>



<h3 id="Contacts">Contacts and accounts</h3>

<ul>
  <li>Multiple accounts can be added to a device for email and contact
synchronization, including Exchange accounts. (Handset manufacturers can
choose whether to include Exchange support in their devices.)</li>
  <li>Developers can create sync adapters that provide synchronization with
additional data sources.</li>
  <li>Quick Contact for Android provides instant access to
a contact's information and communication modes. For example, a user can tap a
contact photo and select to call, SMS, or email the person. Other applications
such as Email, Messaging, and Calendar can also reveal the Quick Contact widget
when you touch a contact photo or status icon.</li>
</ul>


<!--
<ul>
  <li>Sync support for contacts from multiple data sources including Exchange. 
  Handset manufacturers can choose whether or not to include Exchange support 
  in their devices.</li>
  <li>New way to hover on a person to see more info and select communication 
  mode (for example, phone, SMS, email).</li>
</ul>
-->

<h3 id="Email">Email</h3>

<ul>
  <li>Exchange support.</li>
  <li>Combined inbox to browse email from multiple accounts in one page.</li>
</ul>


<h3 id="Messaging">Messaging</h3>

<ul>
  <li>Search functionality for all saved SMS and MMS messages.</li>
  <li>Auto delete the oldest messages
  in a conversation when a defined limit is reached.</li>
</ul>


<h3 id="Camera">Camera</h3>

<ul>
  <li>Built-in flash support</li>
  <li>Digital zoom</li>
  <li>Scene mode</li>
  <li>White balance</li>
  <li>Color effect</li>
  <li>Macro focus</li>
</ul>

<h3 id="Keyboard">Android virtual keyboard</h3>

<ul>
  <li>An improved keyboard layout to makes it easier to hit the correct characters
  and improve typing speed.</li>
  <li>The framework's multi-touch support ensures that key presses aren't missed
  while typing rapidly with two fingers.</li>
  <li>A smarter dictionary learns from word usage and automatically includes
  contact names as suggestions.</li>
</ul>


<h3 id="Browser">Browser</h3>

<ul>
  <li>Refreshed UI with actionable browser URL bar enables users to directly 
  tap the address bar for instant searches and navigation.</li>
  <li>Bookmarks with web page thumbnails.</li>
  <li>Support for double-tap zoom.</li>
  <li>Support for HTML5:</p>
    <ul>
      <li>Database API support, for client-side databases using SQL.</li>
      <li>Application cache support, for offline applications.</li>
      <li>Geolocation API support, to provide location information about the device.</li>
      <li>{@code &lt;video>} tag support in fullscreen mode.</li>
    </ul>
  </li>
</ul>


<h3 id="Calendar">Calendar</h3>
<ul>
  <li>Agenda view provides infinite scrolling.</li>
  <li>Events indicate the attending status for each invitee.</li>
  <li>Invite new guests to events.</li>
</ul>


<h2 id="PlatformTechnologies" style="clear:right">New Platform Technologies</h2>

<h3 id="MediaFramework">Media Framework</h3>

<p>Revamped graphics architecture for improved performance that enables better
hardware acceleration.</p>


<h3 id="Bluetooth">Bluetooth</h3>

<ul>
  <li>Bluetooth 2.1</li>
  <li>New BT profiles: Object Push Profile (OPP) and Phone Book Access Profile (PBAP)</li>
</ul>


<h3 id="DeveloperAPIs">New Framework APIs</h3>

<p>Android 2.0 includes several new developer APIs.
For an overview of new APIs, see the 
<a href="{@docRoot}about/versions/android-2.0.html#api">Android 2.0 version notes</a>.</p>

<p>For a complete report of all API changes, see the 
<a href="{@docRoot}sdk/api_diff/5/changes.html">API Differences Report</a>.</p>



