am 1eb4a9d8: am 44108b54: Doc change: Move framework api change info higher in platform notes documents. Small adjustment to compatibility doc.

Merge commit '1eb4a9d8e97252427b785525f17b370b1ea5fe07' into kraken

* commit '1eb4a9d8e97252427b785525f17b370b1ea5fe07':
  Doc change: Move framework api change info higher in platform notes documents.
This commit is contained in:
Dirk Dougherty
2010-05-19 18:59:57 -07:00
committed by Android Git Automerger
6 changed files with 694 additions and 683 deletions

View File

@@ -36,15 +36,16 @@ exchange, however, it also means that your apps will have to cope with that same
variety of hardware.</p>
<p>Fortunately, Android has built-in tools and support that make it easy for
your apps to do that, while at the same time maintaining control of what types
of devices your app is available to. If you do your work properly, users
your apps to do that, while at the same time letting you maintain control of
what types of devices your app is available to. With a bit of forethought and
some minor changes in your app's manifest file, you can ensure that users
whose devices cant run your app will never see it in the Android Market, and
will not get in trouble by downloading it. This page explains how you can
control which devices have access to your apps, and how to prepare your apps to
make sure they reach the right audience.</p>
<h3 id="defined">What does “Compatibility” mean?</h3>
<h3 id="defined">What does “compatibility” mean?</h3>
<p>A device is “Android compatible” if it can correctly run apps written for the
<em>Android execution environment</em>. The exact details of the Android execution

View File

@@ -171,7 +171,9 @@ device screen, and adapts them to the actual pixel map of the screen.</p>
<p>The table below lists some of the more common screens supported
by Android and illustrates how the platform maps them to generalized screen
configurations.</p>
configurations. Some devices use screens that are not specifically listed
in the table &mdash; the platform maps those to the same set generalized
screen configurations. </p>
<p class="table-caption" id="screens-table"><strong>Table 1.</strong> Examples of
device screens supported by Android.</p>

View File

@@ -10,25 +10,31 @@ sdk.platform.deployableDate=May 2009
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#features">Platform Highlights</a></li>
<li><a href="#relnotes">Revisions</a></li>
<li><a href="#apps">Built-in Applications</a></li>
<li><a href="#locs">Locales</a></li>
<li><a href="#skins">Emulator Skins</a></li>
<li><a href="#api">Framework API</a>
<ol>
<li><a href="#api-level">API level</a></li>
<li><a href="#api-changes">API changes summary</a></li>
<li><a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API differences report &raquo;</a> </li>
</ol></li>
</ol>
<h2>In this document</h2>
<ol>
<li><a href="#features">Platform Highlights</a></li>
<li><a href="#relnotes">Revisions</a></li>
<li><a href="#api-level">API Level</a></li>
<li><a href="#api">Framework API Changes</a>
<li><a href="#apps">Built-in Applications</a></li>
<li><a href="#locs">Locales</a></li>
<li><a href="#skins">Emulator Skins</a></li>
<h2>See Also</h2>
<ol>
<li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
</ol>
</ol>
</li>
</ol>
<h2>Reference</h2>
<ol>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report &raquo;</a> </li>
</ol>
<h2>See Also</h2>
<ol>
<li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
</ol>
</div>
</div>
@@ -87,7 +93,8 @@ function toggleDiv(link) {
</script>
<style>
.toggleable {
padding: .25em 1em;
padding: .25em 1em 0em 1em;
margin-bottom: 0;
}
.toggleme {
padding: 1em 1em 0 2em;
@@ -162,6 +169,106 @@ padding: .25em 1em;
</div>
</div>
<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 to set the proper value, "{@sdkPlatformApiLevel}", in the
<code>android:minSdkVersion</code> attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h2 id="api">Framework API Changes</h2>
<p>The sections below provide information about the application framework API provided by the Android {@sdkPlatformVersion} platform. </p>
<h3>UI framework</h3>
<ul>
<li>Framework for easier background/UI thread interaction</li>
<li>New {@link android.widget.SlidingDrawer SlidingDrawer} widget</li>
<li>New {@link android.widget.HorizontalScrollView HorizontalScrollview} widget</li>
</ul>
<h3>AppWidget framework</h3>
<ul>
<li>APIs for creating secure home screen {@link android.appwidget
AppWidgets}. For information about how to use AppWidgets, see the Developer's
Guide <a href="{@docRoot}guide/topics/appwidgets/index.html">AppWidgets</a>
documentation. Also see <a
href="http://android-developers.blogspot.com/2009/04/introducing-home-screen-widgets-and.html">
Introducing home screen widgets and the AppWidget
framework</a> on the Android Developer's Blog.</li>
<li>APIs for populating {@link android.provider.LiveFolders Live Folders}
with custom content.</li>
</ul>
<h3>Media framework</h3>
<ul>
<li>Raw audio recording and playback APIs</li>
<li>Interactive MIDI playback engine</li>
<li>Video recording APIs for developers (3GP format)</li>
<li>Video and photo sharing Intents</li>
<li>Media search Intent</li>
</ul>
<h3>Input Method framework </h3>
<ul>
<li>{@link android.inputmethodservice.InputMethodService Input Method
Service} framework</li>
<li>Text-prediction engine</li>
<li>Ability to provide downloadable IMEs to users</li>
</ul>
<h3>Application-defined hardware requirements</h3>
<p>Applications can now use a new element in their manifest files, <a
href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><code>&lt;uses-configuration&gt;</code></a>
to indicate to the Android system what hardware features
they require in order to function properly. For example, an application might
use the element to specify that it requires a physical keyboard or a particular
navigation device, such as a trackball. Prior to installing the application, the
Android system checks the attributes defined for the
<code>&lt;uses-configuration&gt;</code> element and allows the installation to
continue only if the required hardware is present.</p>
<h3>Speech recognition framework</h3>
<ul>
<li>Support for using speech recognition libraries via Intent. See {@link
android.speech.RecognizerIntent RecognizerIntent}.</li>
</ul>
<h3>Miscellaneous API additions</h3>
<ul>
<li>LocationManager - Applications can get location change updates via
Intent</li>
<li>WebView - Touch start/end/move/cancel DOM event support</li>
<li>Redesigned {@link android.hardware.SensorManager Sensor Manager
APIs}</li>
<li>GLSurfaceView - convenience framework for creating OpenGL
applications</li>
<li>Broadcast Intent for app update install succeeded - for smoother app
upgrade experience</li>
</ul>
<h3 id="api-diff">API differences report</h3>
<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</p>
<h2 id="apps">Built-in Applications</h2>
<p>The system image included in the downloadable platform provides these
@@ -268,101 +375,3 @@ through Settings.</p>
</ul>
<p>For more information about how to develop an application that displays and functions properly on all Android-powered devices, see <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.</p>
<h2 id="api">Framework API</h2>
<p>The sections below provide information about the application framework API provided by the Android {@sdkPlatformVersion} platform. </p>
<h3 id="api-level">API level</h3>
<p>The Android {@sdkPlatformVersion} platform delivers an updated version of the framework
API. As with previous versions, 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 to
set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h3 id="api-changes">API changes summary</h3>
<h4>UI framework</h4>
<ul>
<li>Framework for easier background/UI thread interaction</li>
<li>New {@link android.widget.SlidingDrawer SlidingDrawer} widget</li>
<li>New {@link android.widget.HorizontalScrollView HorizontalScrollview} widget</li>
</ul>
<h4>AppWidget framework</h4>
<ul>
<li>APIs for creating secure home screen {@link android.appwidget
AppWidgets}. For information about how to use AppWidgets, see the Developer's
Guide <a href="{@docRoot}guide/topics/appwidgets/index.html">AppWidgets</a>
documentation. Also see <a
href="http://android-developers.blogspot.com/2009/04/introducing-home-screen-widgets-and.html">
Introducing home screen widgets and the AppWidget
framework</a> on the Android Developer's Blog.</li>
<li>APIs for populating {@link android.provider.LiveFolders Live Folders}
with custom content.</li>
</ul>
<h4>Media framework</h4>
<ul>
<li>Raw audio recording and playback APIs</li>
<li>Interactive MIDI playback engine</li>
<li>Video recording APIs for developers (3GP format)</li>
<li>Video and photo sharing Intents</li>
<li>Media search Intent</li>
</ul>
<h4>Input Method framework </h4>
<ul>
<li>{@link android.inputmethodservice.InputMethodService Input Method
Service} framework</li>
<li>Text-prediction engine</li>
<li>Ability to provide downloadable IMEs to users</li>
</ul>
<h4>Application-defined hardware requirements</h4>
<p>Applications can now use a new element in their manifest files, <a
href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><code>&lt;uses-configuration&gt;</code></a>
to indicate to the Android system what hardware features
they require in order to function properly. For example, an application might
use the element to specify that it requires a physical keyboard or a particular
navigation device, such as a trackball. Prior to installing the application, the
Android system checks the attributes defined for the
<code>&lt;uses-configuration&gt;</code> element and allows the installation to
continue only if the required hardware is present.</p>
<h4>Speech recognition framework</h4>
<ul>
<li>Support for using speech recognition libraries via Intent. See {@link
android.speech.RecognizerIntent RecognizerIntent}.</li>
</ul>
<h4>Miscellaneous API additions</h4>
<ul>
<li>LocationManager - Applications can get location change updates via
Intent</li>
<li>WebView - Touch start/end/move/cancel DOM event support</li>
<li>Redesigned {@link android.hardware.SensorManager Sensor Manager
APIs}</li>
<li>GLSurfaceView - convenience framework for creating OpenGL
applications</li>
<li>Broadcast Intent for app update install succeeded - for smoother app
upgrade experience</li>
</ul>
<h3 id="api-diff">API differences report</h3>
<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</p>

View File

@@ -10,25 +10,31 @@ sdk.platform.deployableDate=October 2009
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#features">Platform Highlights</a></li>
<li><a href="#relnotes">Revisions</a></li>
<li><a href="#apps">Built-in Applications</a></li>
<li><a href="#locs">Locales</a></li>
<li><a href="#skins">Emulator Skins</a></li>
<li><a href="#api">Framework API</a>
<ol>
<li><a href="#api-level">API level</a></li>
<li><a href="#api-changes">API changes summary</a></li>
<li><a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API differences report &raquo;</a> </li>
</ol></li>
</ol>
<h2>In this document</h2>
<ol>
<li><a href="#features">Platform Highlights</a></li>
<li><a href="#relnotes">Revisions</a></li>
<li><a href="#api-level">API Level</a></li>
<li><a href="#api">Framework API Changes</a>
<li><a href="#apps">Built-in Applications</a></li>
<li><a href="#locs">Locales</a></li>
<li><a href="#skins">Emulator Skins</a></li>
<h2>See Also</h2>
<ol>
<li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
</ol>
</ol>
</li>
</ol>
<h2>Reference</h2>
<ol>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report &raquo;</a> </li>
</ol>
<h2>See Also</h2>
<ol>
<li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
</ol>
</div>
</div>
@@ -89,7 +95,8 @@ function toggleDiv(link) {
</script>
<style>
.toggleable {
padding: .25em 1em;
padding: .25em 1em 0em 1em;
margin-bottom: 0;
}
.toggleme {
padding: 1em 1em 0 2em;
@@ -186,6 +193,212 @@ available Android-powered devices.</li>
</div>
</div>
<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 to set the proper value, "{@sdkPlatformApiLevel}", in the
<code>android:minSdkVersion</code> attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h2 id="api">Framework API Changes</h2>
<p>The sections below provide information about the application framework API provided by the Android {@sdkPlatformVersion} platform. </p>
<h3 id="UIFramework">UI framework</h3>
<ul>
<li>New classes in {@link android.view.animation}
to control the behavior of animations:
<ul>
<li><code>AnticipateInterpolator</code></li>
<li><code>AnticipateOvershootInterpolator</code></li>
<li><code>BounceInterpolator</code></li>
<li><code>OvershootInterpolator</code></li>
</ul>
</li>
<li>New XML attribute <code>android:onClick</code> to specify a View's
<a href="/reference/android/view/View.OnClickListener.html">View.OnClickListener</a>
from a layout file.
</li>
<li>New support for dealing with varying screen densities. Density
information is associated with Bitmap and Canvas for performing the
correct scaling. The framework will automatically scale bitmaps and
nine-patches based on the density the resource was found under and the
density of the screen, etc.
</li><p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to
set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
</ul>
<h3>Search framework</h3>
<ul>
<li>Applications can now expose relevant content to users as search
suggestions in the Quick Search Box, a new device-wide search capability that is
accessible from the home screen. To support this, the search framework adds new
attributes to the searchable metadata file. For complete information, see the
{@link android.app.SearchManager SearchManager} documentation.
</li>
</ul>
<h3>Accessibility framework</h3>
<ul>
<li>New {@link android.view.accessibility android.accessibility} package
that includes classes for capturing accessibility events and forwarding them to
an {@link android.accessibilityservice AccessibilityService} handler. </li>
<li>New {@link android.accessibilityservice AccessibilityService} package
that lets your application track user events and provide visual, audible, or
haptic feedback to the user. </li>
</ul>
<h3>Gesture input</h3>
<ul>
<li>New {@link android.gesture gesture} API for creating, recognizing,
loading, and saving gestures.</li>
</ul>
<h3>Text-to-speech</h3>
<ul>
<li>New {@link android.speech.tts android.speech.tts} package provides
classes for synthesizing speech from text, for immediate playback or to create a
sound file.</li>
</ul>
<h3>Graphics</h3>
<ul>
<li>Classes in {@link android.graphics android.graphics} now support scaling
for different screen densities.</li>
</ul>
<h3>Telephony</h3>
<ul>
<li>New {@link android.telephony.SmsManager SmsManager} and other classes
for sending and receiving SMS messages.</li>
</ul>
<h3>Utilities</h3>
<ul>
<li>New {@link android.util.DisplayMetrics DisplayMetrics} fields for
determining the density of the current device screen.</li>
</ul>
<h3 id="AndroidManifest">Android Manifest elements</h3>
<ul>
<li>New <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code
&lt;supports-screens>}</a> element lets you specify the device screen sizes that your
application is designed and tested to support, where "size" is a combination
of resolution and density. If your application is run on a device whose screen
size is not specified in the <code>&lt;supports-screen&gt;</code> element, the system
displays the application in <em>compatibility mode</em>, which performs best-effort scaling
of the application UI to match the resolution and density of the screen.
<p>The attributes available for defining an application's screen support are:
<ul>
<li><code>smallScreen</code>: Boolean value that indicates whether the
application is designed to run on devices with small screens.
Examples: QVGA low density; VGA high density.
</li>
<li><code>normalScreens</code>: Boolean value that indicates whether
the application is designed to run on devices with normal screens.
Examples: WQVGA low density; HVGA medium density; WVGA high density.
</li>
<li><code>largeScreens</code>: Boolean value that indicates whether
the application is designed to run on devices with significantly
larger screens, such that special care may be required on
the application's part to make proper use of the screen area.
Examples: VGA medium density; WVGA medium density.
</li>
<li><code>anyDensity</code>: Boolean value that indicates whether
the application can accommodate any screen density.
</li>
<li><code>resizable</code>: Boolean value that indicates whether
the application can expand its layout to fit slightly larger screens.
</li>
</ul>
</p>
</li>
<li>New <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature>}</a>
element lets an application specify hardware (or other)
features that it requires to function normally. When an application
specifies such features, the system allows the application to be installed only
on devices that offer the required features. The element supports these
attributes:
<ul>
<li><code>name</code>: The name of the feature required by the application. Currently accepts
"android.hardware.camera" and "android.hardware.camera.autofocus" values, which specify that a
camera and camera autofocus are required, respectively.</li>
<li><code>glEsVersion</code>: Indicates the minimum version of OpenGL ES required.</li>
</ul>
</li>
<li>New attributes for the
<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code &lt;uses-sdk>}</a> element:
<ul>
<li><code>targetSdkVersion</code>: Indicates the API Level that the application is targeting.
It is able to run on older versions (down to minSdkVersion), but was explicitly tested to
work with the version specified here. Specifying this version allows the platform to
disable compatibility code that is not required or enable newer features that are not
available to older applications. </li>
<li><code>maxSdkVersion</code>: Indicates the maximum API Level on which an application is
designed to run. <strong>Important:</strong> Please read the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
documentation before using this attribute. </li>
</ul>
</li>
</li>
</ul>
<h3>New permissions</h3>
<ul>
<li>{@link android.Manifest.permission#CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_MULTICAST_STATE}: Allows applications to enter Wi-Fi
Multicast mode.
</li>
<li>{@link android.Manifest.permission#GLOBAL_SEARCH}: Allows the
global search system to access the data of a specified content provider.
</li>
<li>{@link android.Manifest.permission#INSTALL_LOCATION_PROVIDER INSTALL_LOCATION_PROVIDER}:
Allows an application to install a location provider into the Location Manager.
</li>
<li>{@link android.Manifest.permission#READ_HISTORY_BOOKMARKS READ_HISTORY_BOOKMARKS}:
Allows an application to read (but not write) the user's browsing history
and bookmarks.
</li>
<li>{@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS WRITE_HISTORY_BOOKMARKS}:
Allows an application to write (but not read) the user's browsing history
and bookmarks.
</li>
<li>{@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE}:
Allows an application to write to external storage. Applications using API Level 3
and lower will be implicitly granted this permission (and this will be visible to
the user); Applications using API Level 4 or higher must explicitly request this
permission.
</li>
</ul>
<h3 id="api-diff">API differences report</h3>
<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</p>
<h2 id="apps">Built-in Applications</h2>
<p>The system image included in the downloadable platform provides these
@@ -292,209 +505,3 @@ The emulator skins are: </p>
</ul>
<p>For more information about how to develop an application that displays and functions properly on all Android-powered devices, see <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.</p>
<h2 id="api">Framework API</h2>
<p>The sections below provide information about the application framework API provided by the Android {@sdkPlatformVersion} platform. </p>
<h3 id="api-level">API level</h3>
<p>The Android {@sdkPlatformVersion} platform delivers an updated version of the framework
API. As with previous versions, 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 to
set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h3 id="api-changes">API changes summary</h3>
<h4 id="UIFramework">UI framework</h4>
<ul>
<li>New classes in {@link android.view.animation}
to control the behavior of animations:
<ul>
<li><code>AnticipateInterpolator</code></li>
<li><code>AnticipateOvershootInterpolator</code></li>
<li><code>BounceInterpolator</code></li>
<li><code>OvershootInterpolator</code></li>
</ul>
</li>
<li>New XML attribute <code>android:onClick</code> to specify a View's
<a href="/reference/android/view/View.OnClickListener.html">View.OnClickListener</a>
from a layout file.
</li>
<li>New support for dealing with varying screen densities. Density
information is associated with Bitmap and Canvas for performing the
correct scaling. The framework will automatically scale bitmaps and
nine-patches based on the density the resource was found under and the
density of the screen, etc.
</li><p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to
set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
</ul>
<h4>Search framework</h4>
<ul>
<li>Applications can now expose relevant content to users as search
suggestions in the Quick Search Box, a new device-wide search capability that is
accessible from the home screen. To support this, the search framework adds new
attributes to the searchable metadata file. For complete information, see the
{@link android.app.SearchManager SearchManager} documentation.
</li>
</ul>
<h4>Accessibility framework</h4>
<ul>
<li>New {@link android.view.accessibility android.accessibility} package
that includes classes for capturing accessibility events and forwarding them to
an {@link android.accessibilityservice AccessibilityService} handler. </li>
<li>New {@link android.accessibilityservice AccessibilityService} package
that lets your application track user events and provide visual, audible, or
haptic feedback to the user. </li>
</ul>
<h4>Gesture Input</h4>
<ul>
<li>New {@link android.gesture gesture} API for creating, recognizing,
loading, and saving gestures.</li>
</ul>
<h4>Text-to-speech</h4>
<ul>
<li>New {@link android.speech.tts android.speech.tts} package provides
classes for synthesizing speech from text, for immediate playback or to create a
sound file.</li>
</ul>
<h4>Graphics</h4>
<ul>
<li>Classes in {@link android.graphics android.graphics} now support scaling
for different screen densities.</li>
</ul>
<h4>Telephony</h4>
<ul>
<li>New {@link android.telephony.SmsManager SmsManager} and other classes
for sending and receiving SMS messages.</li>
</ul>
<h4>Utilities</h4>
<ul>
<li>New {@link android.util.DisplayMetrics DisplayMetrics} fields for
determining the density of the current device screen.</li>
</ul>
<h4 id="AndroidManifest">Android Manifest elements</h4>
<ul>
<li>New <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code
&lt;supports-screens>}</a> element lets you specify the device screen sizes that your
application is designed and tested to support, where "size" is a combination
of resolution and density. If your application is run on a device whose screen
size is not specified in the <code>&lt;supports-screen&gt;</code> element, the system
displays the application in <em>compatibility mode</em>, which performs best-effort scaling
of the application UI to match the resolution and density of the screen.
<p>The attributes available for defining an application's screen support are:
<ul>
<li><code>smallScreen</code>: Boolean value that indicates whether the
application is designed to run on devices with small screens.
Examples: QVGA low density; VGA high density.
</li>
<li><code>normalScreens</code>: Boolean value that indicates whether
the application is designed to run on devices with normal screens.
Examples: WQVGA low density; HVGA medium density; WVGA high density.
</li>
<li><code>largeScreens</code>: Boolean value that indicates whether
the application is designed to run on devices with significantly
larger screens, such that special care may be required on
the application's part to make proper use of the screen area.
Examples: VGA medium density; WVGA medium density.
</li>
<li><code>anyDensity</code>: Boolean value that indicates whether
the application can accommodate any screen density.
</li>
<li><code>resizable</code>: Boolean value that indicates whether
the application can expand its layout to fit slightly larger screens.
</li>
</ul>
</p>
</li>
<li>New <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature>}</a>
element lets an application specify hardware (or other)
features that it requires to function normally. When an application
specifies such features, the system allows the application to be installed only
on devices that offer the required features. The element supports these
attributes:
<ul>
<li><code>name</code>: The name of the feature required by the application. Currently accepts
"android.hardware.camera" and "android.hardware.camera.autofocus" values, which specify that a
camera and camera autofocus are required, respectively.</li>
<li><code>glEsVersion</code>: Indicates the minimum version of OpenGL ES required.</li>
</ul>
</li>
<li>New attributes for the
<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code &lt;uses-sdk>}</a> element:
<ul>
<li><code>targetSdkVersion</code>: Indicates the API Level that the application is targeting.
It is able to run on older versions (down to minSdkVersion), but was explicitly tested to
work with the version specified here. Specifying this version allows the platform to
disable compatibility code that is not required or enable newer features that are not
available to older applications. </li>
<li><code>maxSdkVersion</code>: Indicates the maximum API Level on which an application is
designed to run. <strong>Important:</strong> Please read the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
documentation before using this attribute. </li>
</ul>
</li>
</li>
</ul>
<h4>New Permissions</h4>
<ul>
<li>{@link android.Manifest.permission#CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_MULTICAST_STATE}: Allows applications to enter Wi-Fi
Multicast mode.
</li>
<li>{@link android.Manifest.permission#GLOBAL_SEARCH}: Allows the
global search system to access the data of a specified content provider.
</li>
<li>{@link android.Manifest.permission#INSTALL_LOCATION_PROVIDER INSTALL_LOCATION_PROVIDER}:
Allows an application to install a location provider into the Location Manager.
</li>
<li>{@link android.Manifest.permission#READ_HISTORY_BOOKMARKS READ_HISTORY_BOOKMARKS}:
Allows an application to read (but not write) the user's browsing history
and bookmarks.
</li>
<li>{@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS WRITE_HISTORY_BOOKMARKS}:
Allows an application to write (but not read) the user's browsing history
and bookmarks.
</li>
<li>{@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE}:
Allows an application to write to external storage. Applications using API Level 3
and lower will be implicitly granted this permission (and this will be visible to
the user); Applications using API Level 4 or higher must explicitly request this
permission.
</li>
</ul>
<h3 id="api-diff">API differences report</h3>
<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</p>

View File

@@ -13,20 +13,23 @@ sdk.platform.deployableDate=January 2010
<ol>
<li><a href="#features">Platform Highlights</a></li>
<li><a href="#relnotes">Revisions</a></li>
<li><a href="#api-level">API Level</a></li>
<li><a href="#api">Framework API Changes</a>
<li><a href="#apps">Built-in Applications</a></li>
<li><a href="#locs">Locales</a></li>
<li><a href="#skins">Emulator Skins</a></li>
<li><a href="#api">Framework API</a>
<ol>
<li><a href="#api-level">API level</a></li>
<li><a href="#api-changes">API changes summary</a></li>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
differences report &raquo;</a> </li>
</ol>
</li>
</ol>
<h2>Reference</h2>
<ol>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report &raquo;</a> </li>
</ol>
<h2>See Also</h2>
<ol>
<li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
@@ -90,7 +93,8 @@ function toggleDiv(link) {
</script>
<style>
.toggleable {
padding: .25em 1em;
padding: .25em 1em 0em 1em;
margin-bottom: 0;
}
.toggleme {
padding: 1em 1em 0 2em;
@@ -147,6 +151,115 @@ padding: .25em 1em;
</div>
</div>
<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 to set the proper value, "{@sdkPlatformApiLevel}", in the
<code>android:minSdkVersion</code> attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h2 id="api">Framework API Changes</h2>
<p>The sections below provide information about changes made to the application
framework API provided by the Android {@sdkPlatformVersion} platform.</p>
<h3>Live Wallpapers</h3>
<p>The following additions provide APIs for you to develop animated wallpapers:</p>
<ul>
<li>New {@link android.service.wallpaper} package.</li>
<li>New {@link android.app.WallpaperInfo} class.</li>
<li>Updated {@link android.app.WallpaperManager}.</li>
</ul>
<p>Additionally, if your application uses or provides Live Wallpapers, you must
remember to add a <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature></code></a>
element to the application's manifest, declaring the attribute
<code>android:name="android.software.live_wallpaper"</code>. For example:</p>
<pre class="no-pretty-print">
&lt;uses-feature android:name="android.software.live_wallpaper" />
</pre>
<p>When you've published your application, Android Market checks for the
presence of this element and uses it as a filter, ensuring that your application
is not made available to users whose devices do not support Live Wallpapers.
</p>
<h3>Telephony</h3>
<ul>
<li>New {@link android.telephony.SignalStrength} class provides information
about the device's current network signal. This can be acquired from the
new {@link
android.telephony.PhoneStateListener#onSignalStrengthsChanged(SignalStrength)}
callback.</li>
<li>New {@link
android.telephony.PhoneStateListener#onDataConnectionStateChanged(int,int)}
callback.</li>
</ul>
<h3>Views</h3>
<ul>
<li>New {@link android.view.View} methods {@link android.view.View#isOpaque()}
and {@link android.view.View#onDrawScrollBars(Canvas)}.</li>
<li>New {@link android.widget.RemoteViews} methods {@link
android.widget.RemoteViews#addView(int,RemoteViews)} and {@link
android.widget.RemoteViews#removeAllViews(int)}.</li>
<li>New {@link android.view.ViewGroup} methods {@link
android.view.ViewGroup#isChildrenDrawingOrderEnabled()} and {@link
android.view.ViewGroup#setChildrenDrawingOrderEnabled(boolean)}.</li>
</ul>
<h3>WebKit</h3>
<ul>
<li>New {@link android.webkit.WebStorage} methods to manipulate web
storage databases.</li>
<li>New {@link android.webkit.GeolocationPermissions} methods to
get Geolocation permissions from, and set them on the WebView.</li>
<li>New {@link android.webkit.WebSettings} methods to manage settings for
app cache, web storage, and zooming based on screen density.</li>
<li>New {@link android.webkit.WebChromeClient} methods for handling video,
browsing history, custom Views, app cache limits, and more.</li>
</ul>
</ul>
<!--
<h3 id="behavior-changes">Behavior changes</h3>
<h3 id="bug-fixes">Bug fixes</h3>
-->
<h3 id="api-diff">API differences report</h3>
<p>For a detailed view of all API changes in Android {@sdkPlatformVersion} (API
Level {@sdkPlatformApiLevel}), as compared to API Level 6, see the <a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</p>
<h2 id="apps">Built-in Applications</h2>
<p>The system image included in the downloadable platform provides these
@@ -262,117 +375,3 @@ emulator skins are:</p>
and functions properly on all Android-powered devices, see <a
href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
Screens</a>.</p>
<h2 id="api">Framework API</h2>
<p>The sections below provide information about changes made to the application
framework API provided by the Android {@sdkPlatformVersion} platform.</p>
<h3 id="api-level">API level</h3>
<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 to set the proper value, "{@sdkPlatformApiLevel}", in the
attributes of the <code>&lt;uses-sdk&gt;</code> element in your application's
manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h3 id="api-changes">API changes summary</h3>
<p>The following is a summary of some notable changes to the framework APIs.</p>
<h4>Live Wallpapers</h4>
<p>The following additions provide APIs for you to develop animated wallpapers:</p>
<ul>
<li>New {@link android.service.wallpaper} package.</li>
<li>New {@link android.app.WallpaperInfo} class.</li>
<li>Updated {@link android.app.WallpaperManager}.</li>
</ul>
<p>Additionally, if your application uses or provides Live Wallpapers, you must
remember to add a <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature></code></a>
element to the application's manifest, declaring the attribute
<code>android:name="android.software.live_wallpaper"</code>. For example:</p>
<pre class="no-pretty-print">
&lt;uses-feature android:name="android.software.live_wallpaper" />
</pre>
<p>When you've published your application, Android Market checks for the
presence of this element and uses it as a filter, ensuring that your application
is not made available to users whose devices do not support Live Wallpapers.
</p>
<h4>Telephony</h4>
<ul>
<li>New {@link android.telephony.SignalStrength} class provides information
about the device's current network signal. This can be acquired from the
new {@link
android.telephony.PhoneStateListener#onSignalStrengthsChanged(SignalStrength)}
callback.</li>
<li>New {@link
android.telephony.PhoneStateListener#onDataConnectionStateChanged(int,int)}
callback.</li>
</ul>
<h4>Views</h4>
<ul>
<li>New {@link android.view.View} methods {@link android.view.View#isOpaque()}
and {@link android.view.View#onDrawScrollBars(Canvas)}.</li>
<li>New {@link android.widget.RemoteViews} methods {@link
android.widget.RemoteViews#addView(int,RemoteViews)} and {@link
android.widget.RemoteViews#removeAllViews(int)}.</li>
<li>New {@link android.view.ViewGroup} methods {@link
android.view.ViewGroup#isChildrenDrawingOrderEnabled()} and {@link
android.view.ViewGroup#setChildrenDrawingOrderEnabled(boolean)}.</li>
</ul>
<h4>WebKit</h4>
<ul>
<li>New {@link android.webkit.WebStorage} methods to manipulate web
storage databases.</li>
<li>New {@link android.webkit.GeolocationPermissions} methods to
get Geolocation permissions from, and set them on the WebView.</li>
<li>New {@link android.webkit.WebSettings} methods to manage settings for
app cache, web storage, and zooming based on screen density.</li>
<li>New {@link android.webkit.WebChromeClient} methods for handling video,
browsing history, custom Views, app cache limits, and more.</li>
</ul>
</ul>
<!--
<h3 id="behavior-changes">Behavior changes</h3>
<h3 id="bug-fixes">Bug fixes</h3>
-->
<h3 id="api-diff">API differences report</h3>
<p>For a detailed view of all API changes in Android {@sdkPlatformVersion} (API
Level {@sdkPlatformApiLevel}), as compared to API Level 6, see the <a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report</a>.</p>

View File

@@ -13,20 +13,23 @@ sdk.platform.deployableDate=May 2010
<ol>
<li><a href="#features">Platform Highlights</a></li>
<li><a href="#relnotes">Revisions</a></li>
<li><a href="#api-level">API Level</a></li>
<li><a href="#api">Framework API Changes</a>
<li><a href="#apps">Built-in Applications</a></li>
<li><a href="#locs">Locales</a></li>
<li><a href="#skins">Emulator Skins</a></li>
<li><a href="#api">Framework API</a>
<ol>
<li><a href="#api-level">API level</a></li>
<li><a href="#api-changes">API changes summary</a></li>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
differences report &raquo;</a> </li>
</ol>
</li>
</ol>
<h2>Reference</h2>
<ol>
<li><a
href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report &raquo;</a> </li>
</ol>
<h2>See Also</h2>
<ol>
<li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
@@ -91,7 +94,8 @@ function toggleDiv(link) {
</script>
<style>
.toggleable {
padding: .25em 1em;
padding: .25em 1em 0em 1em;
margin-bottom: 0;
}
.toggleme {
padding: 1em 1em 0 2em;
@@ -131,6 +135,201 @@ padding: .25em 1em;
</div>
</div>
<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 to set the proper value, "{@sdkPlatformApiLevel}", in the
<code>android:minSdkVersion</code> attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h2 id="api">Framework API Changes</h2>
<p>The sections below provide information about changes made to the application
framework API provided by the Android {@sdkPlatformVersion} platform.</p>
<h3 id="install-loc">App installation on external storage media</h3>
<p>The Android platform now allows applications to request installation onto the
device's external storage media (such as the SD card), as an alternative to
installation onto the device's internal memory. </p>
<p>Application developers can express the preferred installation location for
their applications by means of a new attribute of <code>&lt;manifest&gt;</code>
in the manifest file, <a
href="{@docRoot}guide/topics/manifest/manifest-element.html#install"><code>
android:installLocation</code></a>. The attribute supports three values:
<code>"internalOnly"</code>, <code>"preferExternal"</code>, and
<code>"auto"</code>. At install time, the system checks the value of
<code>android:installLocation</code> and installs the application
<code>.apk</code> according to the preferred location, if possible. If the
application has requested external installation, the system installs it into a
private, encrypted partition in the external media. Once an application .apk is
installed externally, the system lets the user change the storage location of
the .apk and move it onto the device's internal memory if needed (and vice
versa), through Manage Applications in the user settings.</p>
<p>By default, the system installs all applications onto the device's internal
memory, except for those that explicitly request external installation. This
means that the system will always install legacy applications onto internal
memory, since they do not have access to the
<code>android:installLocation</code> attribute. However, it is possible to
configure and compile a legacy application such that it is installed internally
on older versions of the platform and externally on Android 2.2 and later
platforms, if necessary. </p>
<p>Note that requesting installation onto the device's external media is not
suitable for all applications, particularly because the external media may be
removable and unmounting/remounting may disrupt the user experience and system
settings.</p>
<p>For more information about setting a preferred install location for your
application, including a discussion of what types of applications should and
should not request external installation, please read the <a
href="{@docRoot}guide/appendix/install-location.html">App Install Location</a>
document. </p>
<h3 id="backup-manager">Data backup</h3>
<p>The platform now provides a generalized backup service that
applications can use to backup and restore user data, to ensure that users can
maintain their data when switching devices or reinstalling the application. The
Backup Manager handles the work of transporting the application data to and from
the backup storage area in the cloud. The Backup Manager can store any type of
data, from arbitrary data to files, and manages backup and restore operations
in an atomic manner. For more information, see <a
href="{@docRoot}guide/topics/data/backup.html">Data Backup</a>.</p>
<h3>Graphics</h3>
<ul>
<li>New OpenGL ES 2.0 APIs in {@link android.opengl.GLES20 android.opengl.GLES20}.</li>
<li>New {@link android.opengl.ETC1}, {@link android.opengl.ETC1Util}, and {@link android.opengl.ETC1Util.ETC1Texture} classes and utility methods for using ETC1 for texture compression.</li>
<li>New {@link android.graphics.ImageFormat} class.</li>
<li>New {@link android.graphics.YuvImage YUV image format API} to enable compression from YUV to JPEG and manipulation of YUV data.</li>
</ul>
<h3>Media</h3>
<ul>
<li>New APIs in {@link android.media.AudioManager android.media.AudioManager} for managing audio focus, transport control, transient loss of audio focus, ducking.</li>
<li>New broadcast intent for routing audio to SCO &mdash; {@link android.media.AudioManager#ACTION_SCO_AUDIO_STATE_CHANGED} with extras indicating new state.</li>
<li>New APIs in {@link android.media.SoundPool} to detect completion of sound-loading.</li>
<li>New APIs in {@link android.media.SoundPool} for auto pause and resume.</li>
<li>New APIs in {@link android.media.MediaRecorder} for specifying audio settings for number of channels, encoding and sampling rates, sampling rate.</li>
<li>New APIs for adding files to the media database, so that they are automatically scanned. See {@link android.media.MediaScannerConnection#scanFile(Context, String[], String[], OnScanCompletedListener) MediaScannerConnection.scanFile} and {@link android.media.MediaScannerConnection.OnScanCompletedListener MediaScannerConnection.OnScanCompletedListener}.</li>
</ul>
<h3>Speech recognition and third-party recognition engines</h3>
<ul>
<li>The platform provides new speech-recognition APIs that allow applications to have a richer interaction with the available voice recognizer. For example, the APIs are sufficient to integrate voice recognition deeply into an IME.</li>
<li>The platform also provides a {@link android.speech.RecognitionService} base class that lets third-party developers create plug-in recognition engines. </li>
<li>New {@link android.speech.RecognitionListener} interface to receive callbacks.</li>
<li>New {@link android.speech.RecognizerIntent} extras that let a requester app specify details as preferred language, minimum length in milliseconds, and so on.</li>
</ul>
<h3>Camera and camcorder</h3>
<ul>
<li>Changes to camera preview API to improve efficieny of preview pipeline. </li>
<li>New display orientation for camera (it can now work in portrait orientation).</li>
<li>New APIs in {@link android.hardware.Camera android.hardware.Camera} for managing zoom level.</li>
<li>New APIs {@link android.hardware.Camera.Parameters android.hardware.Camera.Parameters} for querying and setting device camera settings such as focal length, exposure, zoom level, view angle, and others.</li>
<li>New {@link android.media.ThumbnailUtils thumbnail} utility for video and image thumbnails.</li>
<li>New {@link android.media.CamcorderProfile} and {@link android.media.CamcorderProfile} classes enable apps to determine device hardware camera capablities.</li>
<li>New support in {@link android.media.ExifInterface android.media.ExifInterface} for retrieving GPS and focal length.</li>
</ul>
<h3>Device policy manager</h3>
<p>New device policy management APIs allow developers to write "device
administrator" applications that can control security features of the device,
such as the minimum password strength, data wipe, and so on. Users can select
the administrators that are enabled on their devices. For more information, see
the {@link android.app.admin android.app.admin} classees or the example
application code in <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html">DeviceAdminSample.java</a>.</p>
<h3>UI Framework</h3>
<ul>
<li>New UI modes "car mode" and "night mode" and {@link android.app.UiModeManager} let applications adjust their application UI for specific user modes. </li>
<li>New {@link android.view.ScaleGestureDetector} that lets Views detect and handle transformation gestures that involve more than one pointer (multitouch) using the supplied MotionEvents. </li>
<li>Improvements in the way that multitouch events are reported in {@link android.view.MotionEvent} objects.</li>
<li>The layout attribute <code>fill_parent</code> is renamed to <code>match_parent</code>. This affects both XML and Java code (see {@link android.view.ViewGroup.LayoutParams}). Note that the platform will continue to honor uses of <code>fill_parent</code> in legacy applications. </li>
<li>New layout attributes {@link android.R.attr#tabStripEnabled}, {@link android.R.attr#tabStripRight}, and {@link android.R.attr#tabStripLeft} let developers customize the bottom strip of TabWidgets.</li>
<li>Better support for managed dialogs in Activity.</li>
</ul>
<h3>Accounts and sync</h3>
<ul>
<li>New method {@link android.content.ContentResolver#addPeriodicSync(Account, String, Bundle, long) AddPeriodicSync()} lets you schedule a periodic sync with a specific account, authority, and extras at the given frequency.</li>
</ul>
<h3>New manifest elements and attributes</h3>
<ul>
<li>For specifying the application's preferred install location (see <a href="#install-loc">App Installation on External Storage Media</a>, above):
<ul>
<li>New <code>android:installLocation</code> attribute of the <code>&lt;manifest&gt;</code> element. Specifies the default install location defined by an application.</li>
</ul>
</li>
<li>For managing user data backup (see <a href="#backup-manager">Backup manager</a>, above, for more information):
<ul>
<li> New <code>android:backupAgent</code> attribute of the
<code>&lt;application&gt;</code> element. Specifies the component name of the
BackupAgent subclass provided by the application to handle backup/restore
operations, if any.</li>
<li> New <code>android:restoreAnyVersion</code> attribute of the
<code>&lt;application&gt;</code> element. Boolean value that indicates whether
the application is prepared to attempt a restore of any backed-up dataset, even
if the backup is apparently from a newer version of the application than is
currently installed on the device.</li>
</ul>
</li>
<li>For managing the platform's JIT compiler:
<ul>
<li>New <code>android:vmSafeMode</code> attribute of the <code>&lt;application&gt;</code> element. Boolean value that specifies whether to disable JIT compiler optimizations when running the application.</li>
</ul>
</li>
</ul>
<h3>Permissions</h3>
<ul>
<li><code>android.permission.BIND_DEVICE_ADMIN</code> &mdash; Any device administration broadcast receiver must require this permission, to ensure that only the system can interact with it.</li>
<li><code>android.permission.KILL_BACKGROUND_PROCESSES</code> &mdash; Allows an application to call {@link android.app.ActivityManager#killBackgroundProcesses(String)}.
<li><code>android.permission.BIND_WALLPAPER</code> &mdash; Any {@link android.service.wallpaper.WallpaperService} must require this permission, to ensure that only the system can interact with it.</li>
<li><code>android.permission.SET_TIME</code> &mdash; Allows an application to set the system time.</li>
</ul>
<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="apps">Built-in Applications</h2>
<p>The system image included in the downloadable platform provides these
@@ -245,210 +444,4 @@ emulator skins are:</p>
<p>For more information about how to develop an application that displays
and functions properly on all Android-powered devices, see <a
href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
Screens</a>.</p>
<h2 id="api">Framework API</h2>
<p>The sections below provide information about changes made to the application
framework API provided by the Android {@sdkPlatformVersion} platform.</p>
<h3 id="api-level">API level</h3>
<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 to set the proper value, "{@sdkPlatformApiLevel}", in the
<code>android:minSdkVersion</code> attributes of the <code>&lt;uses-sdk&gt;</code>
element in your application's manifest. </p>
<p>For more information about how to use API Level, see the <a
href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
<h3 id="api-changes">API changes summary</h3>
<p>The sections below summarize the changes to the application framework and its APIs.</p>
<h4 id="install-loc">App Installation on External Storage Media</h4>
<p>The Android platform now allows applications to request installation onto the
device's external storage media (such as the SD card), as an alternative to
installation onto the device's internal memory. </p>
<p>Application developers can express the preferred installation location for
their applications by means of a new attribute of <code>&lt;manifest&gt;</code>
in the manifest file, <a
href="{@docRoot}guide/topics/manifest/manifest-element.html#install"><code>
android:installLocation</code></a>. The attribute supports three values:
<code>"internalOnly"</code>, <code>"preferExternal"</code>, and
<code>"auto"</code>. At install time, the system checks the value of
<code>android:installLocation</code> and installs the application
<code>.apk</code> according to the preferred location, if possible. If the
application has requested external installation, the system installs it into a
private, encrypted partition in the external media. Once an application .apk is
installed externally, the system lets the user change the storage location of
the .apk and move it onto the device's internal memory if needed (and vice
versa), through Manage Applications in the user settings.</p>
<p>By default, the system installs all applications onto the device's internal
memory, except for those that explicitly request external installation. This
means that the system will always install legacy applications onto internal
memory, since they do not have access to the
<code>android:installLocation</code> attribute. However, it is possible to
configure and compile a legacy application such that it is installed internally
on older versions of the platform and externally on Android 2.2 and later
platforms, if necessary. </p>
<p>Note that requesting installation onto the device's external media is not
suitable for all applications, particularly because the external media may be
removable and unmounting/remounting may disrupt the user experience and system
settings.</p>
<p>For more information about setting a preferred install location for your
application, including a discussion of what types of applications should and
should not request external installation, please read the <a
href="{@docRoot}guide/appendix/install-location.html">App Install Location</a>
document. </p>
<h4 id="backup-manager">Backup manager</h4>
<p>The platform now provides a generalized backup service that
applications can use to backup and restore user data, to ensure that users can
maintain their data when switching devices or reinstalling the application. The
Backup Manager handles the work of transporting the application data to and from
the backup storage area in the cloud. The Backup Manager can store any type of
data, from arbitrary data to files, and manages backup and restore operations
in an atomic manner. For more information, see <a
href="{@docRoot}guide/topics/data/backup.html">Data Backup</a>.</p>
<h4>Graphics</h4>
<ul>
<li>New OpenGL ES 2.0 APIs in {@link android.opengl.GLES20 android.opengl.GLES20}.</li>
<li>New {@link android.opengl.ETC1}, {@link android.opengl.ETC1Util}, and {@link android.opengl.ETC1Util.ETC1Texture} classes and utility methods for using ETC1 for texture compression.</li>
<li>New {@link android.graphics.ImageFormat} class.</li>
<li>New {@link android.graphics.YuvImage YUV image format API} to enable compression from YUV to JPEG and manipulation of YUV data.</li>
</ul>
<h4>Media</h4>
<ul>
<li>New APIs in {@link android.media.AudioManager android.media.AudioManager} for managing audio focus, transport control, transient loss of audio focus, ducking.</li>
<li>New broadcast intent for routing audio to SCO &mdash; {@link android.media.AudioManager#ACTION_SCO_AUDIO_STATE_CHANGED} with extras indicating new state.</li>
<li>New APIs in {@link android.media.SoundPool} to detect completion of sound-loading.</li>
<li>New APIs in {@link android.media.SoundPool} for auto pause and resume.</li>
<li>New APIs in {@link android.media.MediaRecorder} for specifying audio settings for number of channels, encoding and sampling rates, sampling rate.</li>
<li>New APIs for adding files to the media database, so that they are automatically scanned. See {@link android.media.MediaScannerConnection#scanFile(Context, String[], String[], OnScanCompletedListener) MediaScannerConnection.scanFile} and {@link android.media.MediaScannerConnection.OnScanCompletedListener MediaScannerConnection.OnScanCompletedListener}.</li>
</ul>
<h4>Speech recognition and third-party recognition engines</h4>
<ul>
<li>The platform provides new speech-recognition APIs that allow applications to have a richer interaction with the available voice recognizer. For example, the APIs are sufficient to integrate voice recognition deeply into an IME.</li>
<li>The platform also provides a {@link android.speech.RecognitionService} base class that lets third-party developers create plug-in recognition engines. </li>
<li>New {@link android.speech.RecognitionListener} interface to receive callbacks.</li>
<li>New {@link android.speech.RecognizerIntent} extras that let a requester app specify details as preferred language, minimum length in milliseconds, and so on.</li>
</ul>
<h4>Camera and camcorder</h4>
<ul>
<li>Changes to camera preview API to improve efficieny of preview pipeline. </li>
<li>New display orientation for camera (it can now work in portrait orientation).</li>
<li>New APIs in {@link android.hardware.Camera android.hardware.Camera} for managing zoom level.</li>
<li>New APIs {@link android.hardware.Camera.Parameters android.hardware.Camera.Parameters} for querying and setting device camera settings such as focal length, exposure, zoom level, view angle, and others.</li>
<li>New {@link android.media.ThumbnailUtils thumbnail} utility for video and image thumbnails.</li>
<li>New {@link android.media.CamcorderProfile} and {@link android.media.CamcorderProfile} classes enable apps to determine device hardware camera capablities.</li>
<li>New support in {@link android.media.ExifInterface android.media.ExifInterface} for retrieving GPS and focal length.</li>
</ul>
<h4>Device policy manager</h4>
<p>New device policy management APIs allow developers to write "device
administrator" applications that can control security features of the device,
such as the minimum password strength, data wipe, and so on. Users can select
the administrators that are enabled on their devices. For more information, see
the {@link android.app.admin android.app.admin} classees or the example
application code in <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html">DeviceAdminSample.java</a>.</p>
<h4>UI Framework</h4>
<ul>
<li>New UI modes "car mode" and "night mode" and {@link android.app.UiModeManager} let applications adjust their application UI for specific user modes. </li>
<li>New {@link android.view.ScaleGestureDetector} that lets Views detect and handle transformation gestures that involve more than one pointer (multitouch) using the supplied MotionEvents. </li>
<li>Improvements in the way that multitouch events are reported in {@link android.view.MotionEvent} objects.</li>
<li>The layout attribute <code>fill_parent</code> is renamed to <code>match_parent</code>. This affects both XML and Java code (see {@link android.view.ViewGroup.LayoutParams}). Note that the platform will continue to honor uses of <code>fill_parent</code> in legacy applications. </li>
<li>New layout attributes {@link android.R.attr#tabStripEnabled}, {@link android.R.attr#tabStripRight}, and {@link android.R.attr#tabStripLeft} let developers customize the bottom strip of TabWidgets.</li>
<li>Better support for managed dialogs in Activity.</li>
</ul>
<h4>Accounts and Sync</h4>
<ul>
<li>New method {@link android.content.ContentResolver#addPeriodicSync(Account, String, Bundle, long) AddPeriodicSync()} lets you schedule a periodic sync with a specific account, authority, and extras at the given frequency.</li>
</ul>
<h4>New manifest elements and attributes</h4>
<ul>
<li>For specifying the application's preferred install location (see <a href="#install-loc">App Installation on External Storage Media</a>, above):
<ul>
<li>New <code>android:installLocation</code> attribute of the <code>&lt;manifest&gt;</code> element. Specifies the default install location defined by an application.</li>
</ul>
</li>
<li>For managing user data backup (see <a href="#backup-manager">Backup manager</a>, above, for more information):
<ul>
<li> New <code>android:backupAgent</code> attribute of the
<code>&lt;application&gt;</code> element. Specifies the component name of the
BackupAgent subclass provided by the application to handle backup/restore
operations, if any.</li>
<li> New <code>android:restoreAnyVersion</code> attribute of the
<code>&lt;application&gt;</code> element. Boolean value that indicates whether
the application is prepared to attempt a restore of any backed-up dataset, even
if the backup is apparently from a newer version of the application than is
currently installed on the device.</li>
</ul>
</li>
<li>For managing the platform's JIT compiler:
<ul>
<li>New <code>android:vmSafeMode</code> attribute of the <code>&lt;application&gt;</code> element. Boolean value that specifies whether to disable JIT compiler optimizations when running the application.</li>
</ul>
</li>
</ul>
<h4>Permissions</h4>
<ul>
<li><code>android.permission.BIND_DEVICE_ADMIN</code> &mdash; Any device administration broadcast receiver must require this permission, to ensure that only the system can interact with it.</li>
<li><code>android.permission.KILL_BACKGROUND_PROCESSES</code> &mdash; Allows an application to call {@link android.app.ActivityManager#killBackgroundProcesses(String)}.
<li><code>android.permission.BIND_WALLPAPER</code> &mdash; Any {@link android.service.wallpaper.WallpaperService} must require this permission, to ensure that only the system can interact with it.</li>
<li><code>android.permission.SET_TIME</code> &mdash; Allows an application to set the system time.</li>
</ul>
<!--
<h3 id="behavior-changes">Behavior changes</h3>
What did change is that android:process and android:sharedUserId can now be a reference to a resource (instead of just a literal).
<h3 id="bug-fixes">Bug fixes</h3>
-->
<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>
Screens</a>.</p>