From 50e990c64fa23ce94efa76b9e72df7f8ec3cee6a Mon Sep 17 00:00:00 2001
From: Scott Main This page provides data about the relative number of active devices
+running a given version of the Android platform. This can help you
+understand the landscape of device distribution and decide how to prioritize
+the development of your application features for the devices currently in
+the hands of users. For information about how to target your application to devices based on
+platform version, read about API levels. The following pie chart and table is based on the number of Android devices that have accessed
+Google Play within a 14-day period ending on the data collection date noted below. Data collected during a 14-day period ending on June 1, 2012 The following stacked line graph provides a history of the relative number of
+active Android devices running different versions of the Android platform. It also provides a
+valuable perspective of how many devices your application is compatible with, based on the
+platform version. Notice that the platform versions are stacked on top of each other with the oldest active
+version at the top. This format indicates the total percent of active devices that are compatible
+with a given version of Android. For example, if you develop your application for
+the version that is at the very top of the chart, then your application is
+compatible with 100% of active devices (and all future versions), because all Android APIs are
+forward compatible. Or, if you develop your application for a version lower on the chart,
+then it is currently compatible with the percentage of devices indicated on the y-axis, where the
+line for that version meets the y-axis on the right. Each dataset in the timeline is based on the number of Android devices that accessed
+Google Play within a 14-day period ending on the date indicated on the x-axis. Last historical dataset collected during a 14-day period ending on June 1, 2012 This section provides data about the relative number of active devices that have a particular
+screen configuration, defined by a combination of screen size and density. To simplify the way that
+you design your user interfaces for different screen configurations, Android divides the range of
+actual screen sizes and densities into: For information about how you can support multiple screen configurations in your
+application, see Supporting Multiple
+Screens. Note: This data is based on the number
+of Android devices that have accessed Google Play within a 7-day period
+ending on the data collection date noted below. Data collected during a 7-day period ending on May 1, 2012 This section provides data about the relative number of active devices that support a particular
+version of OpenGL ES. Note that support for one particular version of OpenGL ES also implies
+support for any lower version (for example, support for version 2.0 also implies support for
+1.1). To declare which version of OpenGL ES your application requires, you should use the {@code
+android:glEsVersion} attribute of the {@code <uses-feature>}
+element. You can also use the {@code
+<supports-gl-texture>} element to declare the GL compression formats that your application
+uses. Note: This data is based on the number
+of Android devices that have accessed Google Play within a 7-day period
+ending on the data collection date noted below. Data collected during a 7-day period ending on June 4, 2012 Android powers millions of devices around the world and in a variety of form-factors. The Android
+framework is specially built to run apps on more than just one screen size and hardware
+configuration. As an app developer, Android's scale and variety offers you the potential to quickly
+reach millions of users. Android apps are flexible and easily adapt to the device on which they are running. Although the
+system scales your assets when necessary, you can provide alternative app resources that are
+optimized for specific device categories, such as the screen size and density. Android applies the
+appropriate resources when running your app, based on the current device’s configuration. Some devices provide a different user experience when using apps, but you’re always in control of
+how your app behaves on each device. If you publish your app on Google Play, you also have
+control over which kinds of devices are allowed to install your app and you can closely control how
+your app is distributed. Every device that includes Google Play has been certified compatible. This means that
+the device has passed a rigorous test suite to ensure that the device uses a version of Android that
+supports all the platform APIs and will successfully run your app. Android powers hundreds of millions of mobile devices in more than 190
+countries around the world. It's the largest installed base of any mobile platform
+and growing fast—every day another 900,000 users power up their
+Android devices for the first time and start looking for apps, games,
+and other digital content. Android gives you a world-class platform for creating apps and games for
+Android users everywhere, as well as an open marketplace for distributing
+to them instantly. Building on the contributions of the open-source Linux community and more
+than 300 hardware, software, and carrier partners, Android has rapidly become
+the fastest-growing mobile OS. Android’s openness has made it a favorite for consumers and developers alike,
+driving strong growth in app consumption. Android users download more than
+1 billion apps and games from Google Play each month. With it's partners, Android is continuously pushing the boundaries of hardware and software
+forward to bring new capabilities to users and developers. For developers,
+Android innovation lets you build powerful, differentiated applications
+that use the latest mobile technologies. Android gives you everything you need to build best-in-class app experiences.
+It gives you a single application model that lets you deploy
+your apps broadly to hundreds of millions of users across a wide range of
+devices—from phones to tablets and beyond. Android also gives you tools for creating apps that look great and take
+advantage of the hardware capabilities available on each device. It
+automatically adapts your UI to look it's best on each device, while giving you
+as much control as you want over your UI on different device
+types. For example, you can create a single app binary that's optimized for
+both phone and tablet form factors. You declare your UI in lightweight sets of XML
+resources, one set for parts of the UI that are common to all form factors and
+other sets for optimzations specific to phones or tablets.
+At runtime, Android applies the correct resource sets based on its screen size,
+density, locale,
+and so on. To help you develop efficiently, the Android
+ Developer Tools
+offers a full Java IDE with advanced features for developing, debugging, and
+packaging Android apps. Using the IDE, you can develop on any available Android
+device or create virtual devices that emulate any hardware configuration. Google Play is the premier marketplace for selling and distributing Android apps.
+When you publish an app on Google Play, you reach the huge installed base of
+Android. As an open marketplace, Google Play puts you in control of how you sell your
+products. You can publish whenever you want, as often as you want, and to the
+customers you want. You can distribute broadly to all markets and
+devices or focus on specific segments, devices, or ranges of hardware
+capabilities. You can monetize in the way that works best for your business—priced or
+free, with in-app products or subscriptions—for highest engagement and
+revenues. You also have complete control of the pricing for your apps
+and in-app products and can set or change prices in any supported currency at
+any time.
+
+ Beyond growing your customer base, Google Play helps you build visibility and
+engagement across your apps and brand. As your apps rise in popularity, Google
+Play gives them higher placement in weekly "top" charts and rankings, and for
+the best apps promotional slots in curated collections.
+ Preinstalled on hundreds of millions of Android devices around the world,
+Google Play can be a growth engine for your business. Robot Invader chose
+ Android as the launch platform for their first game,
+ Wind-up
+ Knight.
+
+ Hear from the developers themselves how Android helped them reach more
+ than 100 devices with a single app binary, then iterate rapidly to ensure
+ a great experience for users.
+ Android offers an open distribution model, not a walled garden. Once you’ve developed an
+app for Android and want to distribute it, you have choice. Your final application is contained in an APK file that you can make available to users any
+way you want. For example, you can upload it to your own web site to allow visitors to
+install it onto their devices. More often, you’ll want to use a trusted
+marketplace where users can discover and search for your apps. How you choose to distribute your app affects precisely how many users your app will reach. Which
+distribution provider you choose also affects the kinds of services available to you as a publisher,
+such as licensing and in-app billing APIs, user bug reports, installation analytics, marketing
+services, and more. Among your choices is Google Play, the premier marketplace for selling and distributing apps
+to Android users around the world. When you publish an app on Google Play, you reach hundreds of
+millions of customers in over 130 countries. As an open marketplace, Google Play puts you in control of your business and makes it easy for
+you to manage how you sell your products. You can publish whenever you want, as often as you want,
+and to the exact set of customers you want. Beyond growing your customer base, Google Play helps you build visibility and engagement across
+your apps and brand. As your apps rise in popularity, Google Play gives you higher placement in
+weekly "top" lists and offers promotional slots in curated collections. You can engage customers
+using rich, colorful product pages that feature app screenshots, videos, and user reviews, as well
+as cross-marketing links to your other products. Google Play offers a choice of monetizing options to meet your business needs. You control the
+pricing of your apps and in-app products—you can set and change prices at any time, even
+individually in local currencies around the world. On purchase, Google Play handles transactions in
+the buyer’s currency and makes payouts in your own currency. After publishing, you can manage the distribution of your app. You can distribute broadly to all
+markets and devices or focus on specific segments, devices, or ranges of hardware capabilities.
+Google Play provides the tools for controlling distribution and ensures that your app is available
+only to the users who you are targeting. Everything you need to start developing apps for Android is available here on
+developer.android.com. You'll find everything from the developer SDK, API documentation, and design
+guidelines, to information about the current device landscape and how you can distribute and
+monetize your app. No two apps are built in the same way, but we've structured the information you need to build an
+app into the following three sections that represent the general order for app development.
+
+
+
+
+ Before you write a single line of code, you need to design the user interface and make it fit
+the Android user experience. Although you may know what a user will do with your app, you
+should pause to focus on how a user will interact with it. Your design should be sleek,
+simple, powereful, and tailored to the Android experience. So whether your a one-man shop or a large team, you should study the Design guidelines first. Once your design is finalized, all you need are the tools to turn your app ideas into reality.
+Android's framework provides you the APIs to build apps that take full advantage of
+device hardware, connected accessory devices, the Internet, software features, and more.
+With the power of Android, there's no limit to the power of your apps. Everything you need to learn about the app framework and developer tools is in the Develop documentation. Now your app is complete. You've built it to support a variety of screen sizes and
+densities, and tested it on the Android emulator and on real devices. You're ready to ship your app. How you proceed depends on a variety of factors, such as your monetization strategy and which
+types of devices your app supports. Everything you need to get started with this process is
+available in the Distribute section. Now that you know what's available, get started by installing the Android SDK.Platform Versions
+
+Current Distribution
+
+
+
+
+
+
+
+Version
+ Codename
+ API Level
+ Distribution
+
+1.5 Cupcake 3 0.3%
+1.6 Donut 4 0.6%
+2.1 Eclair 7 5.2%
+2.2 Froyo 8 19.1%
+2.3 - 2.3.2
+ Gingerbread 9 0.4%
+2.3.3 - 2.3.7
+ 10 64.6%
+3.1
+ Honeycomb 12 0.7%
+3.2 13 2%
+4.0 - 4.0.2
+ Ice Cream Sandwich 14 0.4%
+4.0.3 - 4.0.4 15 6.7% Historical Distribution
+
+Screen Sizes and Densities
+
+
+
+
+
+
+
+
+
+
+
+ ldpi
+mdpi
+hdpi
+xhdpi
+
+small
+2.3%
+
+ 2.4%
+
+
+normal
+0.7%
+26.2%
+57.8%
+0.9%
+
+large
+0.3%
+2%
+
+
+
+xlarge
+
+ 7.4%
+
+
+ Open GL Version
+
+
+
+
+
+OpenGL ES Version
+Distribution
+
+
+1.1 only
+ 9.9%
+
+
+2.0 & 1.1
+ 90.1%
+Android's flexible framework means it runs on more devices and reaches more
+users
+
+You're in control of which devices can install your app
+
+Global partnerships and large installed base
+
+Every day more than 900,000 new Android devices are activated worldwide.
+
+Powerful development framework
+
+Easily optimize a single binary for phones, tablets, and other devices.
+
+A billion downloads a month and growing. Get your apps in front
+of millions of users at Google's scale.
+
+Open marketplace for distributing your apps
+
+Developer Story: Robot Invader
+
+ Your business, your customers
+
+Google Play makes your apps available to your customers
+immediately
+
+Visibility for your apps
+
+Flexible monetizing and distribution
+
+You can distribute
+your apps free or priced and you can sell in-app products for additional revenue
+
+1. Design
+
+2. Develop
+3. Distribute
+See Also
@@ -54,14 +54,14 @@ compliant and includes no external libraries.
To get started developing or testing against the Android {@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to download the platform into your Android 1.6 or later SDK. For more information, -see Adding SDK -Components.
+see Exploring the +SDK.For a list of new user features and platform highlights, see the Android +href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android {@sdkPlatformVersion} Platform Highlights document.
For more information about how to use API Level, see the API Levels document.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels document.For a detailed overview of new APIs, see the -Version Notes. +Version Notes. For a complete report of all API changes, see the API Differences Report. diff --git a/docs/html/sdk/android-1.6.jd b/docs/html/about/versions/android-1.6.jd similarity index 98% rename from docs/html/sdk/android-1.6.jd rename to docs/html/about/versions/android-1.6.jd index a01a5f69643e..2a66cd3e7e5a 100644 --- a/docs/html/sdk/android-1.6.jd +++ b/docs/html/about/versions/android-1.6.jd @@ -31,7 +31,7 @@ Differences Report »
To get started developing or testing against the Android {@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to download the latest Android 1.6 platform into your Android 1.6 or later SDK. For -more information, see Adding SDK -Components.
+more information, see Exploring the +SDK.For a list of new user features and platform highlights, see the Android +href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android {@sdkPlatformVersion} Platform Highlights document.
@@ -208,7 +208,7 @@ application, you need to set the proper value, "{@sdkPlatformApiLevel}", in the element in your application's manifest.For more information about how to use API Level, see the API Levels document.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels document.Android 2.0 includes several new developer APIs. For an overview of new APIs, see the -Android 2.0 version notes.
+Android 2.0 version notes.For a complete report of all API changes, see the API Differences Report.
diff --git a/docs/html/sdk/android-2.0.1.jd b/docs/html/about/versions/android-2.0.1.jd similarity index 96% rename from docs/html/sdk/android-2.0.1.jd rename to docs/html/about/versions/android-2.0.1.jd index 0c8afb61fb8f..bcba7177b684 100644 --- a/docs/html/sdk/android-2.0.1.jd +++ b/docs/html/about/versions/android-2.0.1.jd @@ -31,7 +31,7 @@ differences report »To get started developing or testing against the Android {@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to download the platform into your Android 1.6 or later SDK. For more information, -see Adding SDK -Components.
+see Exploring the +SDK.For a list of new user features and platform highlights, see the Android +href="http://developer.android.com/about/versions/android-2.0-highlights.html">Android 2.0 Platform Highlights document.
zipalign
optimization. For more information, see Signing Your Applications.zipalign
optimization. For more information, see Signing Your Applications.&
element in your application's manifest.
For more information about how to use API Level, see the API Levels document.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels document.
API changes summary
diff --git a/docs/html/sdk/android-2.0.jd b/docs/html/about/versions/android-2.0.jd
similarity index 97%
rename from docs/html/sdk/android-2.0.jd
rename to docs/html/about/versions/android-2.0.jd
index 2c319236297b..7a12e48672e3 100644
--- a/docs/html/sdk/android-2.0.jd
+++ b/docs/html/about/versions/android-2.0.jd
@@ -26,7 +26,7 @@ sdk.platform.majorMinor=major
See Also
@@ -49,14 +49,14 @@ compliant and includes no external libraries.
To get started developing or testing against the Android
{@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to
download the platform into your SDK. For more information,
-see Adding SDK
-Components.
+see Exploring the
+SDK.
Platform Highlights
For a list of new user features and platform highlights, see the Android
+href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android
{@sdkPlatformVersion} Platform Highlights document.
Revisions
@@ -235,7 +235,7 @@ through Settings.
Ant Support
-- Debug- and release-mode application signing. Release-mode signing includes integrated support for
zipalign
optimization. For more information, see Signing Your Applications.
+- Debug- and release-mode application signing. Release-mode signing includes integrated support for
zipalign
optimization. For more information, see Signing Your Applications.
- Adds new Ant build system with support for Emma instrumentation projects (code coverage).
@@ -259,7 +259,7 @@ set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the &
element in your application's manifest.
For more information about how to use API Level, see the API Levels document.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels document.
API changes summary
diff --git a/docs/html/sdk/android-2.1.jd b/docs/html/about/versions/android-2.1.jd
similarity index 96%
rename from docs/html/sdk/android-2.1.jd
rename to docs/html/about/versions/android-2.1.jd
index 1ee833c0094c..3cb0708ec42a 100644
--- a/docs/html/sdk/android-2.1.jd
+++ b/docs/html/about/versions/android-2.1.jd
@@ -31,7 +31,7 @@ Differences Report »
See Also
@@ -55,14 +55,14 @@ includes no external libraries.
To get started developing or testing against the Android
{@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to
download the platform into your SDK. For more information,
-see Adding SDK
-Components.
+see Exploring the
+SDK.
Platform Highlights
Android {@sdkPlatformVersion} does not add significant user features, see the Android
+href="http://developer.android.com/about/versions/android-2.0-highlights.html">Android
2.0 Platform Highlights document for the latest user features.
Revisions
@@ -87,7 +87,7 @@ class="toggle-content-img" alt="" />
- Dependencies:
-
-
Requires SDK Tools r12 or
+
Requires SDK Tools r12 or
higher.
- Notes:
@@ -164,7 +164,7 @@ application, you need to set the proper value, "{@sdkPlatformApiLevel}", in the
element in your application's manifest.
For more information about how to use API Level, see the API Levels document.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels document.
Framework API Changes
diff --git a/docs/html/sdk/android-2.2-highlights.jd b/docs/html/about/versions/android-2.2-highlights.jd
similarity index 100%
rename from docs/html/sdk/android-2.2-highlights.jd
rename to docs/html/about/versions/android-2.2-highlights.jd
diff --git a/docs/html/sdk/android-2.2.jd b/docs/html/about/versions/android-2.2.jd
similarity index 63%
rename from docs/html/sdk/android-2.2.jd
rename to docs/html/about/versions/android-2.2.jd
index c22220cf7262..361e8b695d55 100644
--- a/docs/html/sdk/android-2.2.jd
+++ b/docs/html/about/versions/android-2.2.jd
@@ -11,12 +11,8 @@ sdk.platform.majorMinor=minor
In this document
- Platform Highlights
- - Revisions
- API Level
- Framework API Changes
-
- Built-in Applications
- - Locales
- - Emulator Skins
@@ -31,7 +27,7 @@ Differences Report »
See Also
@@ -46,113 +42,18 @@ fixes. For information on developer features and API changes, see the
Framework API section.
For developers, the Android {@sdkPlatformVersion} platform is available as a
-downloadable component for the Android SDK. The downloadable platform includes a
-fully compliant Android library and system image, as well as a set of emulator
-skins, sample applications, and more. The downloadable platform
-includes no external libraries.
-
-To get started developing or testing against the Android
-{@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to
-download the platform into your SDK. For more information,
-see Adding SDK
-Components. If you are new to Android, download the SDK Starter Package
-first.
+downloadable component for the Android SDK. The downloadable platform includes
+an Android library and system image, as well as a set of emulator skins and
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
Platform Highlights
For a list of new user features and platform highlights, see the Android
+href="http://developer.android.com/about/versions/android-2.2-highlights.html">Android
2.2 Platform Highlights document.
-Revisions
-
-The sections below provide notes about successive releases of
-the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
-revision number. To determine what revision(s) of the Android
-{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
-the "Installed Packages" listing in the Android SDK and AVD Manager.
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 3 (July 2011)
-
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r12 or
-higher.
-
-- Notes:
--
-
Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.
-
-
-
-
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 2 (July 2010)
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r6 or higher.
-
-
-- System Image:
--
-
-- Adds default Search Widget.
-- Includes proper provisioning for the platform's Backup Manager. For more information about how to use the Backup Manager, see Data Backup.
-- Updates the Android 2.2 system image to FRF91.
-
-
-
-
-
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 1 (May 2010)
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r6 or higher.
-
-
-- Tools:
--
-
Adds support for building with Android library projects. See SDK Tools, r6 for information.
-
-
-
-
-
API Level
@@ -170,7 +71,7 @@ application, you need to set the proper value, "{@sdkPlatformApiLevel}", in the
element in your application's manifest.
For more information about how to use API Level, see the API Levels document.
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels document.
Framework API Changes
@@ -348,123 +249,4 @@ href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report.
-Built-in Applications
-
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
- - Alarm Clock
- - Browser
- - Calculator
- - Camera
- - Contacts
- - Custom Locale (developer app)
- - Dev Tools (developer app)
- - Email
-
-
-
-
-
- - Gallery
- - IMEs for Japanese, Chinese, and Latin text input
- - Messaging
- - Music
- - Phone
- - Settings
- - Spare Parts (developer app)
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable platform provides a variety of
-built-in locales. In some cases, region-specific strings are available for the
-locales. In other cases, a default version of the language is used. The
-languages that are available in the Android {@sdkPlatformVersion} system
-image are listed below (with language_country/region locale
-descriptor).
-
-
-
-
-
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-- Czech (cs_CZ)
-- Dutch, Netherlands (nl_NL)
-- Dutch, Belgium (nl_BE)
-- English, US (en_US)
-- English, Britain (en_GB)
-- English, Canada (en_CA)
-- English, Australia (en_AU)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- French, France (fr_FR)
-- French, Belgium (fr_BE)
-
-
-
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- German, Germany (de_DE)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Liechtenstein (de_LI)
-- Italian, Italy (it_IT)
-- Italian, Switzerland (it_CH)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Polish (pl_PL)
-- Russian (ru_RU)
-- Spanish (es_ES)
-
-
-
-
-Localized UI strings match the locales that are accessible
-through Settings.
-
-Note: Android supports more locales than are listed above. However,
-the entire collection of locale strings cannot fit on a single system image, so the above list is
-only what's included in the system image for the SDK. All of Android's supported locales are
-available in the Android Open Source Project.
-
-Emulator Skins
-
-The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:
-
-
- -
- QVGA (240x320, low density, small screen)
-
- -
- WQVGA (240x400, low density, normal screen)
-
- -
- FWQVGA (240x432, low density, normal screen)
-
- -
- HVGA (320x480, medium density, normal screen)
-
- -
- WVGA800 (480x800, high density, normal screen)
-
- -
- WVGA854 (480x854 high density, normal screen)
-
-
-For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see Supporting Multiple
-Screens.
diff --git a/docs/html/sdk/android-2.3-highlights.jd b/docs/html/about/versions/android-2.3-highlights.jd
similarity index 92%
rename from docs/html/sdk/android-2.3-highlights.jd
rename to docs/html/about/versions/android-2.3-highlights.jd
index b076b3de191c..582bce9f81fd 100644
--- a/docs/html/sdk/android-2.3-highlights.jd
+++ b/docs/html/about/versions/android-2.3-highlights.jd
@@ -1,4 +1,4 @@
-page.title=Android 2.3 Platform Highlights
+page.title=Gingerbread
@jd:body
@@ -14,8 +14,7 @@ page.title=Android 2.3 Platform Highlights
}
#jd-content div.video {
float:right;
- padding:0 60px 40px;
- margin-top:-15px;
+ padding:0 0 0 40px;
}
#jd-content table.columns {
margin:0 0 1em 0;
@@ -38,16 +37,6 @@ page.title=Android 2.3 Platform Highlights
}
-
-
-
-
The Android 2.3 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.3. For detailed information about the new developer APIs, see the Android 2.3 version notes.
New User Features
-
-
+
+
UI refinements for simplicity and speed
@@ -98,8 +89,10 @@ the key and sliding to select a character.
-
-
+
+
One-touch word selection and copy/paste
@@ -116,8 +109,10 @@ modes, no use of a trackball is needed.
-
-
+
+
Improved power management
@@ -147,8 +142,10 @@ necessary stop an application or report feedback to its developer.
managing information and relationships.
-
-
+
+
Internet calling
@@ -162,7 +159,8 @@ Additionally, support for the platform's SIP and internet calling features on
specific devices is determined by their manufacturers and associated carriers.
-
+
Near-field communications
diff --git a/docs/html/sdk/android-2.3.3.jd b/docs/html/about/versions/android-2.3.3.jd
similarity index 53%
rename from docs/html/sdk/android-2.3.3.jd
rename to docs/html/about/versions/android-2.3.3.jd
index 405c063fa857..55ff346ac242 100644
--- a/docs/html/sdk/android-2.3.3.jd
+++ b/docs/html/about/versions/android-2.3.3.jd
@@ -10,12 +10,8 @@ sdk.platform.apiLevel=10
In this document
Reference
@@ -25,11 +21,6 @@ href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report »
-See Also
-
-
@@ -40,78 +31,11 @@ Differences Report »
and APIs to the Android 2.3 platform.
For developers, the Android {@sdkPlatformVersion} platform is available as a
-downloadable component for the Android SDK. The downloadable platform includes
-an Android library and system image, as well as a set of emulator
-skins and more. The downloadable platform
-includes no external libraries.
-
-To get started developing or testing against Android
-{@sdkPlatformVersion}, use the Android SDK Manager to
-download the platform into your SDK. For more information,
-see Adding SDK
-Components. If you are new to Android, download the SDK Starter Package
-first.
-
-For a high-level introduction to Android 2.3, see the Platform Highlights.
-
-
-Revisions
-
-The sections below provide notes about successive releases of
-the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
-revision number. To determine what revision(s) of the Android
-{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
-the "Installed Packages" listing in the Android SDK and AVD Manager.
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 2 (July 2011)
-
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r12 or
-higher.
-
-- Notes:
--
-
Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.
-
-
-
-
-
-
-
+downloadable component for the Android SDK. The downloadable platform includes
+an Android library and system image, as well as a set of emulator skins and
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
-
-
- Android {@sdkPlatformVersion}, Revision 1 (February 2011)
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r9 or higher.
-
-
-
-
-
API Overview
@@ -264,156 +188,5 @@ manifest. If your application is designed to run only on Android 2.3 and higher,
declaring the attribute prevents the application from being installed on earlier
versions of the platform.
-For more information about how to use API Level, see the API Levels document.
-
-Built-in Applications
-
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
-- Browser
-- Calculator
-- Camera
-- Clock
-- Contacts
-- Cusom Locale
-- Dev Tools
-- Downloads
-- Email
-
-
-
-
-- Gallery
-- IMEs for Japanese, Chinese, and Latin text input
-- Messaging
-- Music
-- Phone
-- Search
-- Settings
-- Spare Parts (developer app)
-- Speech Recorder
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable SDK platform provides a variety of
-built-in locales. In some cases, region-specific strings are available for the
-locales. In other cases, a default version of the language is used. The
-languages that are available in the Android {@sdkPlatformVersion} system
-image are listed below (with language_country/region locale
-descriptor).
-
-
-
-
-
-- Arabic, Egypt (ar_EG)
-- Arabic, Israel (ar_IL)
-- Bulgarian, Bulgaria (bg_BG)
-- Catalan, Spain (ca_ES)
-- Czech, Czech Republic (cs_CZ)
-- Danish, Denmark(da_DK)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Germany (de_DE)
-- German, Liechtenstein (de_LI)
-- Greek, Greece (el_GR)
-- English, Australia (en_AU)
-- English, Canada (en_CA)
-- English, Britain (en_GB)
-- English, Ireland (en_IE)
-- English, India (en_IN)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- English, US (en_US)
-- English, South Africa (en_ZA)
-- Spanish (es_ES)
-- Spanish, US (es_US)
-- Finnish, Finland (fi_FI)
-- French, Belgium (fr_BE)
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- French, France (fr_FR)
-- Hebrew, Israel (he_IL)
-- Hindi, India (hi_IN)
-
-
-
-- Croatian, Croatia (hr_HR)
-- Hungarian, Hungary (hu_HU)
-- Indonesian, Indonesia (id_ID)
-- Italian, Switzerland (it_CH)
-- Italian, Italy (it_IT)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Lithuanian, Lithuania (lt_LT)
-- Latvian, Latvia (lv_LV)
-- Norwegian-Bokmol, Norway(nb_NO)
-- Dutch, Belgium (nl_BE)
-- Dutch, Netherlands (nl_NL)
-- Polish (pl_PL)
-- Portuguese, Brazil (pt_BR)
-- Portuguese, Portugal (pt_PT)
-- Romanian, Romania (ro_RO)
-- Russian (ru_RU)
-- Slovak, Slovakia (sk_SK)
-- Slovenian, Slovenia (sl_SI)
-- Serbian (sr_RS)
-- Swedish, Sweden (sv_SE)
-- Thai, Thailand (th_TH)
-- Tagalog, Philippines (tl_PH)
-- Turkish, Turkey (tr_TR)
-- Ukrainian, Ukraine (uk_UA)
-- Vietnamese, Vietnam (vi_VN)
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-
-
-
-
-Note: The Android platform may support more
-locales than are included in the SDK system image. All of the supported locales
-are available in the Android Open Source
-Project.
-
-Emulator Skins
-
-The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:
-
-
- -
- QVGA (240x320, low density, small screen)
-
- -
- WQVGA400 (240x400, low density, normal screen)
-
- -
- WQVGA432 (240x432, low density, normal screen)
-
- -
- HVGA (320x480, medium density, normal screen)
-
- -
- WVGA800 (480x800, high density, normal screen)
-
- -
- WVGA854 (480x854 high density, normal screen)
-
-
-
-For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see Supporting Multiple
-Screens.
+For more information, read What is API
+Level?
\ No newline at end of file
diff --git a/docs/html/about/versions/android-2.3.4.jd b/docs/html/about/versions/android-2.3.4.jd
new file mode 100644
index 000000000000..bb4feecae287
--- /dev/null
+++ b/docs/html/about/versions/android-2.3.4.jd
@@ -0,0 +1,148 @@
+page.title=Android 2.3.4 Platform
+sdk.platform.version=2.3.4
+sdk.platform.apiLevel=10
+
+
+@jd:body
+
+
+
+
+In this document
+
+
+Reference
+
+
+
+
+
+
+API Level: {@sdkPlatformApiLevel}
+
+Android 2.3.4 is a maintenance release that adds several bug fixes and patches
+to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally,
+Android 2.3.4 brings support for the Open Accessory API to mobile devices,
+through the optional Open Accessory Library.
+
+For developers, the Android {@sdkPlatformVersion} platform is available as a
+downloadable component for the Android SDK. The downloadable platform includes
+an Android library and system image, as well as a set of emulator skins and
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
+
+
+
+API Overview
+
+Android 2.3.4 provides the same framework API to applications as Android 2.3.3
+(API level 10). For a summary of the API, see the
+Android 2.3.3 version notes.
+
+
+Open Accessory Library
+
+Open Accessory is a new capability for integrating
+connected peripherals with applications running on the platform. The capability
+is based on a USB (Universal Serial Bus) stack built into the platform and an
+API exposed to applications. Peripherals that attach to Android-powered devices
+as accessories connect as USB hosts.
+
+Open Accessory is introduced in Android 3.1 (API level 12), but is
+made available to devices running Android 2.3.4 by means of an optional external
+library, the Open Accessory Library. The library exposes a framework API that
+lets applications discover, communicate with, and manage a variety of device
+types connected over USB. It also provides the implementation of the API against
+parts of the Android platform that are not directly exposed to applications in
+Android 2.3.4.
+
+The Open Accessory Library is optional on any given device. Device
+manufacturers may choose whether to include the Open Accessory Library in their
+products or exclude it. The library is forward-compatible with Android 3.1, so
+applications developed against Android 2.3.4 will run properly on devices
+running Android 3.1, if those devices support USB accessories.
+
+The API provided by the Open Accessory Library is based on the Open Accessory
+API provided in Android 3.1. In most areas, you can use the same techniques and
+APIs. However, developing for the Open Accessory Library on Android 2.3.4 differs
+from the standard USB API in these ways:
+
+
+- Obtaining a {@link android.hardware.usb.UsbManager} object — To obtain
+a {@link android.hardware.usb.UsbManager} object when using the add-on library,
+use the helper method
getInstance()
rather than {@link
+android.content.Context#getSystemService(java.lang.String) getSystemService()}
+For example:
+
+UsbManager manager = UsbManager.getInstance(this);
+
+- Obtaining a {@link android.hardware.usb.UsbAccessory} from a filtered intent
+— When you filter for a connected device or accessory with an intent
+filter, the {@link android.hardware.usb.UsbAccessory} object is contained
+inside the intent that is passed to your application. If you are using the
+add-on library, you can get the {@link android.hardware.usb.UsbAccessory} object
+in the following manner:
+
+
UsbAccessory accessory = UsbManager.getAccessory(intent)
+
+- No USB host support — Android 2.3.4 and the Open Accessory Library do
+not support USB host mode (for example, through {@link
+android.hardware.usb.UsbDevice}), although USB host mode is supported in Android
+3.1. An Android-powered device running Android 2.3.4 can not function as a USB
+host. The library enables the Android-powered device to function as
+a peripheral only, with the connected accessory functioning as USB host
+(through {@link android.hardware.usb.UsbAccessory}).
+
+
+To develop apps using the Open Accessory Library, you need:
+
+
+- The latest version of the Android SDK tools
+- The latest version of the Google APIs add-on, which includes the library
+itself (for linking)
+- An actual hardware device running Android 2.3.4 (or Android 3.1) with USB
+accessories support, for runtime testing against connected devices
+
+
+For a full discussion of how to develop applications that interact with USB
+accessories, please see the related developer documentation.
+
+Additionally, developers can request filtering on Google Play, such that
+their applications are not available to users whose devices do not provide the
+appropriate accessory support. To request filtering, add the element below
+to the application manifest:
+
+<uses-feature
+ android:name="android.hardware.usb.accessory"
+ android:required="true">
+
+
+API Level
+
+The Android 2.3.4 platform does not increment the API level —
+it uses the same API level as Android 2.3.3, API level 10.
+
+
To use APIs introduced in API level 10 in your application,
+you need compile the application against the Android library that is provided in
+the latest version of the Google APIs Add-On, which also includes the Open
+Accessory Library.
+
+Depending on your needs, you might
+also need to add an android:minSdkVersion="{@sdkPlatformApiLevel}"
+attribute to the <uses-sdk>
element in the application's
+manifest. If your application is designed to run only on Android 2.3.3 and higher,
+declaring the attribute prevents the application from being installed on earlier
+versions of the platform.
+
+For more information, read What is API
+Level?
diff --git a/docs/html/sdk/android-2.3.jd b/docs/html/about/versions/android-2.3.jd
similarity index 82%
rename from docs/html/sdk/android-2.3.jd
rename to docs/html/about/versions/android-2.3.jd
index b46691309891..2afa564ffc20 100644
--- a/docs/html/sdk/android-2.3.jd
+++ b/docs/html/about/versions/android-2.3.jd
@@ -10,12 +10,8 @@ sdk.platform.apiLevel=9
In this document
Reference
@@ -25,11 +21,6 @@ href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
Differences Report »
-See Also
-
-
@@ -37,85 +28,13 @@ Differences Report »
API Level: {@sdkPlatformApiLevel}
For developers, the Android {@sdkPlatformVersion} platform is available as a
-downloadable component for the Android SDK. The downloadable platform includes
-an Android library and system image, as well as a set of emulator
-skins and more. The downloadable platform
-includes no external libraries.
-
-To get started developing or testing against Android
-{@sdkPlatformVersion}, use the Android SDK Manager to
-download the platform into your SDK. For more information,
-see Adding SDK
-Components. If you are new to Android, download the SDK Starter Package
-first.
-
-For a high-level introduction to Android {@sdkPlatformVersion}, see the Platform Highlights.
-
-
-Revisions
-
-The sections below provide notes about successive releases of
-the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
-revision number. To determine what revision(s) of the Android
-{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
-the "Installed Packages" listing in the Android SDK and AVD Manager.
-
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 1 (December 2010)
-
-
-- Dependencies:
--
-
Requires SDK Tools r8 or higher.
-
-
-
-
-
+downloadable component for the Android SDK. The downloadable platform includes
+an Android library and system image, as well as a set of emulator skins and
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
+
+
+
API Overview
@@ -648,7 +567,7 @@ events and surfaces.
For full information on working with native code or to download the NDK,
-see the Android NDK page.
+see the Android NDK page.
Dalvik Runtime
@@ -787,156 +706,5 @@ manifest. If your application is designed to run only on Android 2.3 and higher,
declaring the attribute prevents the application from being installed on earlier
versions of the platform.
-For more information about how to use API Level, see the API Levels document.
-
-Built-in Applications
-
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
-- Browser
-- Calculator
-- Camera
-- Clock
-- Contacts
-- Cusom Locale
-- Dev Tools
-- Downloads
-- Email
-
-
-
-
-- Gallery
-- IMEs for Japanese, Chinese, and Latin text input
-- Messaging
-- Music
-- Phone
-- Search
-- Settings
-- Spare Parts (developer app)
-- Speech Recorder
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable SDK platform provides a variety of
-built-in locales. In some cases, region-specific strings are available for the
-locales. In other cases, a default version of the language is used. The
-languages that are available in the Android {@sdkPlatformVersion} system
-image are listed below (with language_country/region locale
-descriptor).
-
-
-
-
-
-- Arabic, Egypt (ar_EG)
-- Arabic, Israel (ar_IL)
-- Bulgarian, Bulgaria (bg_BG)
-- Catalan, Spain (ca_ES)
-- Czech, Czech Republic (cs_CZ)
-- Danish, Denmark(da_DK)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Germany (de_DE)
-- German, Liechtenstein (de_LI)
-- Greek, Greece (el_GR)
-- English, Australia (en_AU)
-- English, Canada (en_CA)
-- English, Britain (en_GB)
-- English, Ireland (en_IE)
-- English, India (en_IN)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- English, US (en_US)
-- English, South Africa (en_ZA)
-- Spanish (es_ES)
-- Spanish, US (es_US)
-- Finnish, Finland (fi_FI)
-- French, Belgium (fr_BE)
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- French, France (fr_FR)
-- Hebrew, Israel (he_IL)
-- Hindi, India (hi_IN)
-
-
-
-- Croatian, Croatia (hr_HR)
-- Hungarian, Hungary (hu_HU)
-- Indonesian, Indonesia (id_ID)
-- Italian, Switzerland (it_CH)
-- Italian, Italy (it_IT)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Lithuanian, Lithuania (lt_LT)
-- Latvian, Latvia (lv_LV)
-- Norwegian-Bokmol, Norway(nb_NO)
-- Dutch, Belgium (nl_BE)
-- Dutch, Netherlands (nl_NL)
-- Polish (pl_PL)
-- Portuguese, Brazil (pt_BR)
-- Portuguese, Portugal (pt_PT)
-- Romanian, Romania (ro_RO)
-- Russian (ru_RU)
-- Slovak, Slovakia (sk_SK)
-- Slovenian, Slovenia (sl_SI)
-- Serbian (sr_RS)
-- Swedish, Sweden (sv_SE)
-- Thai, Thailand (th_TH)
-- Tagalog, Philippines (tl_PH)
-- Turkish, Turkey (tr_TR)
-- Ukrainian, Ukraine (uk_UA)
-- Vietnamese, Vietnam (vi_VN)
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-
-
-
-
-Note: The Android platform may support more
-locales than are included in the SDK system image. All of the supported locales
-are available in the Android Open Source
-Project.
-
-Emulator Skins
-
-The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:
-
-
- -
- QVGA (240x320, low density, small screen)
-
- -
- WQVGA400 (240x400, low density, normal screen)
-
- -
- WQVGA432 (240x432, low density, normal screen)
-
- -
- HVGA (320x480, medium density, normal screen)
-
- -
- WVGA800 (480x800, high density, normal screen)
-
- -
- WVGA854 (480x854 high density, normal screen)
-
-
-
-For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see Supporting Multiple
-Screens.
+For more information, read What is API
+Level?
\ No newline at end of file
diff --git a/docs/html/sdk/android-3.0-highlights.jd b/docs/html/about/versions/android-3.0-highlights.jd
similarity index 88%
rename from docs/html/sdk/android-3.0-highlights.jd
rename to docs/html/about/versions/android-3.0-highlights.jd
index 33897de91c6c..21dbda6af4ce 100644
--- a/docs/html/sdk/android-3.0-highlights.jd
+++ b/docs/html/about/versions/android-3.0-highlights.jd
@@ -1,4 +1,4 @@
-page.title=Android 3.0 Platform Highlights
+page.title=Honeycomb
@jd:body
@@ -15,7 +15,6 @@ page.title=Android 3.0 Platform Highlights
#jd-content div.video {
float:right;
padding:0 60px 40px;
- margin-top:-15px;
}
#jd-content table.columns {
margin:0 0 1em 0;
@@ -44,7 +43,7 @@ page.title=Android 3.0 Platform Highlights
The Android 3.0 platform introduces many new and exciting features for users and developers.
This document provides a glimpse of some of the new features and technologies, as delivered in
Android 3.0. For a more detailed look at new developer APIs, see the Android 3.0 Platform document.
+href="{@docRoot}about/versions/android-3.0.html">Android 3.0 Platform document.
- New User Features
@@ -54,7 +53,9 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
New User Features
-
+
New UI designed from the ground up for tablets
@@ -75,7 +76,9 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
-
+
Customizable Home screens
@@ -84,7 +87,8 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
-
+
@@ -100,7 +104,8 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
The Android soft keyboard is redesigned to make entering text fast and accurate on larger screen sizes. The keys are reshaped and repositioned for improved targeting, and new keys have been added, such as a Tab key, to provide richer and more efficient text input. Users can touch-hold keys to access menus of special characters and switch text/voice input modes from a button in the System Bar.
-
+
Improved text selection, copy and paste
@@ -116,8 +121,11 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
Updated set of standard apps
-
+
The Android 3.0 platform includes an updated set of standard applications that are designed for use on larger screen devices. The sections below highlight some of the new features.
@@ -156,7 +164,9 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
New UI Framework for creating great tablet apps
-
+
Activity fragments, for greater control of content and design flexibility
@@ -171,7 +181,9 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
-
+
Expanded Home screen widgets
@@ -188,7 +200,10 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
Notifications are a key part of the Android user experience because they let applications show key updates and status information to users in real time. Android 3.0 extends this capability, letting developers include richer content and control more properties. A new builder class lets developers quickly create notifications that include large and small icons, a title, a priority flag, and any properties already available in previous versions. Notifications can offer more types of content by building on the expanded set of UI Widgets that are now available as remote Views.
-
+
Multiselect, clipboard, and drag-and-drop
@@ -244,20 +259,3 @@ href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform document.
Android 3.0 brings a new UI designed for tablets and other larger screen devices, but it also is fully compatible with applications developed for earlier versions of the platform, or for smaller screen sizes. Existing applications can seamlessly participate in the new holographic UI theme without code changes, by adding a single attribute in their manifest files. The platform emulates the Menu key, which is replaced by the overflow menu in the Action Bar in the new UI. Developers wanting to take fuller advantage of larger screen sizes can also create dedicated layouts and assets for larger screens and add them to their existing applications.
-
-More information
-
-
-
-
-
-For more information about the new developer APIs, see the Android 3.0 Platform document.
-
-For a video overview of platform features, see the Android 3.0 Sneak Peek.
diff --git a/docs/html/sdk/android-3.0.jd b/docs/html/about/versions/android-3.0.jd
similarity index 86%
rename from docs/html/sdk/android-3.0.jd
rename to docs/html/about/versions/android-3.0.jd
index 3acb35885af8..76e07959135e 100644
--- a/docs/html/sdk/android-3.0.jd
+++ b/docs/html/about/versions/android-3.0.jd
@@ -8,12 +8,8 @@ sdk.platform.apiLevel=11
In this document
Reference
@@ -23,12 +19,6 @@ href="{@docRoot}sdk/api_diff/11/changes.html">API
Differences Report »
-See Also
-
-
@@ -40,76 +30,14 @@ component for the Android SDK. The downloadable platform includes an Android lib
image, as well as a set of emulator skins and more. The downloadable platform includes no external
libraries.
-To get started developing or testing against Android {@sdkPlatformVersion}, use the Android SDK
-Manager to download the platform into your SDK. For more information, see Adding SDK Packages. If you are new to Android, download the SDK Starter Package first.
-
-For a high-level introduction to Android {@sdkPlatformVersion}, see the Platform
-Highlights.
-
-Note:
-If you've already published an Android application, please test and optimize your application on
-Android 3.0 as soon as possible. You should do so to be sure your application provides the best
-experience possible on the latest Android-powered devices. For information about what you can do,
-read Supporting Tablets and
-Handsets.
-
-
-Revisions
-
-To determine what revision of the Android {@sdkPlatformVersion} platform you have installed,
-refer to the "Installed Packages" listing in the Android SDK and AVD Manager.
-
-
+For developers, the Android {@sdkPlatformVersion} platform is available as a
+downloadable component for the Android SDK. The downloadable platform includes
+an Android library and system image, as well as a set of emulator skins and
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
-
-
-
- Android {@sdkPlatformVersion}, Revision 2 (July 2011)
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r12 or
-higher.
-
-- Notes:
--
-
Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.
-
-
-
-
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 1 (February 2011)
-
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r10 or higher.
-
-
-
-
-
@@ -165,7 +93,7 @@ android.app.FragmentTransaction#commit commit()} and the system applies the frag
the activity.
For more information about using fragments, read the Fragments documentation. Several
+href="{@docRoot}guide/components/fragments.html">Fragments documentation. Several
samples are also available in the
API Demos application.
@@ -261,11 +189,9 @@ before attempting to paste it.
object) at a time, but one {@link android.content.ClipData} can contain multiple {@link
android.content.ClipData.Item}s.
-For more information, read the Copy
-and Paste documentation. You can also see a simple implementation of copy and paste in the API Demos
-and a more complete implementation in the Note Pad application.
+For more information, read the Copy
+and Paste documentation. You can also see a simple implementation of copy and paste in the API Demos
+sample and a more complete implementation in the Note Pad sample.
@@ -385,7 +311,7 @@ changed, then call {@link android.app.LoaderManager#initLoader initLoader()} to
loader for your activity or fragment.
For more information, read the Loaders documentation. You can also see
+href="{@docRoot}guide/components/loaders.html">Loaders documentation. You can also see
example code using loaders in the LoaderCursor
and
For more information, see the Property Animation documentation. You can
+href="{@docRoot}guide/topics/graphics/prop-animation.html">Property Animation
documentation. You can
also see several samples using the animation APIs in the API
Demos application.
@@ -1046,141 +972,5 @@ manifest. If your application is designed to run only on Android 2.3 and higher,
declaring the attribute prevents the application from being installed on earlier
versions of the platform.
-For more information about how to use API Level, see the API Levels document.
-
-
-Built-in Applications
-
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
-- API Demos
-- Browser
-- Calculator
-- Camera
-- Clock
-- Contacts
-- Custom Locale
-- Dev Tools
-- Downloads
-- Email
-
-
-
-
-- Gallery
-- Gestures Builder
-- Messaging
-- Music
-- Search
-- Settings
-- Spare Parts
-- Speech Recorder
-- Widget Preview
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable SDK platform provides a variety of
-built-in locales. In some cases, region-specific strings are available for the
-locales. In other cases, a default version of the language is used. The
-languages that are available in the Android 3.0 system
-image are listed below (with language_country/region locale
-descriptor).
-
-
-
-
-
-- Arabic, Egypt (ar_EG)
-- Arabic, Israel (ar_IL)
-- Bulgarian, Bulgaria (bg_BG)
-- Catalan, Spain (ca_ES)
-- Czech, Czech Republic (cs_CZ)
-- Danish, Denmark(da_DK)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Germany (de_DE)
-- German, Liechtenstein (de_LI)
-- Greek, Greece (el_GR)
-- English, Australia (en_AU)
-- English, Canada (en_CA)
-- English, Britain (en_GB)
-- English, Ireland (en_IE)
-- English, India (en_IN)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- English, US (en_US)
-- English, South Africa (en_ZA)
-- Spanish (es_ES)
-- Spanish, US (es_US)
-- Finnish, Finland (fi_FI)
-- French, Belgium (fr_BE)
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- French, France (fr_FR)
-- Hebrew, Israel (he_IL)
-- Hindi, India (hi_IN)
-
-
-
-- Croatian, Croatia (hr_HR)
-- Hungarian, Hungary (hu_HU)
-- Indonesian, Indonesia (id_ID)
-- Italian, Switzerland (it_CH)
-- Italian, Italy (it_IT)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Lithuanian, Lithuania (lt_LT)
-- Latvian, Latvia (lv_LV)
-- Norwegian bokmål, Norway (nb_NO)
-- Dutch, Belgium (nl_BE)
-- Dutch, Netherlands (nl_NL)
-- Polish (pl_PL)
-- Portuguese, Brazil (pt_BR)
-- Portuguese, Portugal (pt_PT)
-- Romanian, Romania (ro_RO)
-- Russian (ru_RU)
-- Slovak, Slovakia (sk_SK)
-- Slovenian, Slovenia (sl_SI)
-- Serbian (sr_RS)
-- Swedish, Sweden (sv_SE)
-- Thai, Thailand (th_TH)
-- Tagalog, Philippines (tl_PH)
-- Turkish, Turkey (tr_TR)
-- Ukrainian, Ukraine (uk_UA)
-- Vietnamese, Vietnam (vi_VN)
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-
-
-
-
-Note: The Android platform may support more
-locales than are included in the SDK system image. All of the supported locales
-are available in the Android Open Source
-Project.
-
-Emulator Skins
-
-The downloadable platform includes the following emulator skin:
-
-
- -
- WXGA (1280x800, medium density, xlarge screen)
-
-
-
-For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see Supporting Multiple
-Screens.
\ No newline at end of file
+For more information, read What is API
+Level?
diff --git a/docs/html/sdk/android-3.1-highlights.jd b/docs/html/about/versions/android-3.1-highlights.jd
similarity index 97%
rename from docs/html/sdk/android-3.1-highlights.jd
rename to docs/html/about/versions/android-3.1-highlights.jd
index 88bc1eec0c55..5283c2a45861 100644
--- a/docs/html/sdk/android-3.1-highlights.jd
+++ b/docs/html/about/versions/android-3.1-highlights.jd
@@ -1,4 +1,4 @@
-page.title=Android 3.1 Platform Highlights
+page.title=Honeycomb MR1
@jd:body
@@ -15,7 +15,6 @@ page.title=Android 3.1 Platform Highlights
#jd-content div.video {
float:right;
padding:0 60px 40px;
- margin-top:-15px;
}
#jd-content table.columns {
margin:0 0 1em 0;
@@ -45,11 +44,11 @@ features introduced in Android 3.0. It builds on the same tablet-optimized UI
and features offered in Android 3.0 and adds several new capabilities for
users and developers. This document provides an overview of the new features and
technologies introduced in Android 3.1. For a more detailed look at new
-developer APIs, see the API
+developer APIs, see the API
Overview document.
For a high-level introduction to Android 3.0, please see the Android 3.0 Platform
+href="{@docRoot}about/versions/android-3.0-highlights.html">Android 3.0 Platform
Highlights.
@@ -60,7 +59,9 @@ Highlights.
New User Features
-
+
@@ -293,7 +294,7 @@ many new ways to engage users and build powerful interaction experiences with
connected hardware.
To learn more about how to develop applications that interact with
-accessories, see the USB
+accessories, see the USB
Accessory documentation.
USB host API
@@ -305,7 +306,7 @@ connected devices such as audio devices. input devices, communications devices,
hubs, cameras, and more.
To learn more about how to develop applications that interact with
-USB devices, see the USB
+USB devices, see the USB
Host documentation.
Input from mice, joysticks, and gamepads
diff --git a/docs/html/sdk/android-3.1.jd b/docs/html/about/versions/android-3.1.jd
similarity index 83%
rename from docs/html/sdk/android-3.1.jd
rename to docs/html/about/versions/android-3.1.jd
index 7ec7e331b982..2a845f0e4b51 100644
--- a/docs/html/sdk/android-3.1.jd
+++ b/docs/html/about/versions/android-3.1.jd
@@ -8,12 +8,8 @@ sdk.platform.apiLevel=12
In this document
Reference
@@ -23,12 +19,6 @@ href="{@docRoot}sdk/api_diff/12/changes.html">API
Differences Report »
-See Also
-
-
@@ -40,108 +30,12 @@ downloadable component for the Android SDK. The downloadable platform includes
an Android library and system image, as well as a set of emulator skins and
more. The downloadable platform includes no external libraries.
-To get started developing or testing against Android {@sdkPlatformVersion},
-use the Android SDK Manager to download the platform into your SDK. For more
-information, see Adding SDK
-Components. If you are new to Android, download the SDK Starter Package first.
-
-For a high-level introduction to Android {@sdkPlatformVersion}, see the Platform
-Highlights.
-
-Reminder: If you've already published an
-Android application, please test and optimize your application on Android 3.0
-and Android 3.1 as soon as possible. You should do so to be sure your
-application provides the best experience possible on the latest Android-powered
-devices. For information about what you can do, read Optimizing Apps for
-Android 3.0.
-
-
-Revisions
-
-To determine what revision of the Android {@sdkPlatformVersion} platform you
-have installed, refer to the "Installed Packages" listing in the Android SDK and
-AVD Manager.
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 3 (July 2011)
-
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r12 or
-higher.
-
-- Notes:
--
-
Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.
-
-
-
-
-
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 2 (May 2011)
-
-
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r11 or
-higher.
-
-- Notes:
--
-
Fixes an issue with the visual layout editor rendering library that prevented Android 3.1 from
-running in ADT.
-
-
-
-
-
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 1 (May 2011)
-
+For developers, the Android {@sdkPlatformVersion} platform is available as a
+downloadable component for the Android SDK. The downloadable platform includes
+an Android library and system image, as well as a set of emulator skins and
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
-
-
-
-- Dependencies:
--
-
Requires SDK Tools r11 or
-higher.
-
-
-
-
-
API Overview
@@ -236,7 +130,7 @@ accessories (connection of USB hosts), declare this element:
For complete information about how to develop applications that interact with
USB accessories, please see the
-developer documentation.
+developer documentation.
To look at sample applications that use the USB host API, see ADB Test and
href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
<uses-feature>} manifest elements. For more information about
declaring features in an application manifest, read Google Play
+href="{@docRoot}guide/google/play/filters.html">Google Play
Filters.
@@ -965,142 +859,5 @@ also need to add an android:minSdkVersion="{@sdkPlatformApiLevel}"
attribute to the <uses-sdk>
element in the application's
manifest.
-For more information about how to use API Level, see the API Levels document.
-
-
-Built-in Applications
-
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
-- API Demos
-- Browser
-- Calculator
-- Camera
-- Clock
-- Contacts
-- Custom Locale
-- Dev Tools
-- Downloads
-- Email
-
-
-
-
-- Gallery
-- Gestures Builder
-- Messaging
-- Music
-- Search
-- Settings
-- Spare Parts
-- Speech Recorder
-- Widget Preview
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable SDK platform provides a variety
-of
-built-in locales. In some cases, region-specific strings are available for the
-locales. In other cases, a default version of the language is used. The
-languages that are available in the Android 3.0 system
-image are listed below (with language_country/region locale
-descriptor).
-
-
-
-
-
-- Arabic, Egypt (ar_EG)
-- Arabic, Israel (ar_IL)
-- Bulgarian, Bulgaria (bg_BG)
-- Catalan, Spain (ca_ES)
-- Czech, Czech Republic (cs_CZ)
-- Danish, Denmark(da_DK)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Germany (de_DE)
-- German, Liechtenstein (de_LI)
-- Greek, Greece (el_GR)
-- English, Australia (en_AU)
-- English, Canada (en_CA)
-- English, Britain (en_GB)
-- English, Ireland (en_IE)
-- English, India (en_IN)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- English, US (en_US)
-- English, South Africa (en_ZA)
-- Spanish (es_ES)
-- Spanish, US (es_US)
-- Finnish, Finland (fi_FI)
-- French, Belgium (fr_BE)
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- French, France (fr_FR)
-- Hebrew, Israel (he_IL)
-- Hindi, India (hi_IN)
-
-
-
-- Croatian, Croatia (hr_HR)
-- Hungarian, Hungary (hu_HU)
-- Indonesian, Indonesia (id_ID)
-- Italian, Switzerland (it_CH)
-- Italian, Italy (it_IT)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Lithuanian, Lithuania (lt_LT)
-- Latvian, Latvia (lv_LV)
-- Norwegian bokmål, Norway (nb_NO)
-- Dutch, Belgium (nl_BE)
-- Dutch, Netherlands (nl_NL)
-- Polish (pl_PL)
-- Portuguese, Brazil (pt_BR)
-- Portuguese, Portugal (pt_PT)
-- Romanian, Romania (ro_RO)
-- Russian (ru_RU)
-- Slovak, Slovakia (sk_SK)
-- Slovenian, Slovenia (sl_SI)
-- Serbian (sr_RS)
-- Swedish, Sweden (sv_SE)
-- Thai, Thailand (th_TH)
-- Tagalog, Philippines (tl_PH)
-- Turkish, Turkey (tr_TR)
-- Ukrainian, Ukraine (uk_UA)
-- Vietnamese, Vietnam (vi_VN)
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-
-
-
-
-Note: The Android platform may support more
-locales than are included in the SDK system image. All of the supported locales
-are available in the Android Open Source
-Project.
-
-Emulator Skins
-
-The downloadable platform includes the following emulator skin:
-
-
- -
- WXGA (1280x800, medium density, xlarge screen)
-
-
-
-For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see Supporting Multiple
-Screens.
\ No newline at end of file
+For more information, read What is API
+Level?
diff --git a/docs/html/sdk/android-3.2.jd b/docs/html/about/versions/android-3.2.jd
similarity index 80%
rename from docs/html/sdk/android-3.2.jd
rename to docs/html/about/versions/android-3.2.jd
index 27df22cba0d9..02111a058737 100644
--- a/docs/html/sdk/android-3.2.jd
+++ b/docs/html/about/versions/android-3.2.jd
@@ -8,13 +8,9 @@ sdk.platform.apiLevel=13
In this document
Reference
@@ -24,22 +20,12 @@ href="{@docRoot}sdk/api_diff/13/changes.html">API
Differences Report »
-See Also
-
-
API Level: {@sdkPlatformApiLevel}
-Welcome to Android 3.2!
-
Android 3.2 is an incremental platform release that adds new
capabilities for users and developers. The sections below provide an overview
of the new features and developer APIs.
@@ -47,46 +33,10 @@ of the new features and developer APIs.
For developers, the Android {@sdkPlatformVersion} platform is available as a
downloadable component for the Android SDK. The downloadable platform includes
an Android library and system image, as well as a set of emulator skins and
-more. The downloadable platform includes no external libraries.
-
-To get started developing or testing against Android {@sdkPlatformVersion},
-use the Android SDK Manager to download the platform into your SDK. For more
-information, see Adding SDK
-Components. If you are new to Android, download the SDK Starter Package first.
-
-Reminder: If you've already published an
-Android application, please test and optimize your application on Android 3.2 as
-soon as possible. You should do so to be sure your application provides the best
-experience possible on the latest Android-powered devices. For information about
-what you can do, read Optimizing Apps for
-Android 3.x.
-
-
-Revisions
-
-To determine what revision of the Android {@sdkPlatformVersion} platform you
-have installed, refer to the "Installed Packages" listing in the Android SDK and
-AVD Manager.
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 1 (July 2011)
-
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
-
-
-- Initial release. SDK Tools r12 or higher is recommended.
-
-
-
-
Platform Highlights
@@ -288,7 +238,7 @@ size qualifiers.
New manifest attributes for screen-size compatibility
The framework offers a new set of <supports-screens>
manifest attributes that let
+href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><supports-screens>
manifest attributes that let
you manage your app's support for different screen sizess.
Specifically, you can specify the largest and smallest screens on which your app
is designed to run, as well as the largest screen on which it is designed run
@@ -600,142 +550,7 @@ also need to add an android:minSdkVersion="{@sdkPlatformApiLevel}"
attribute to the <uses-sdk>
element in the application's
manifest.
-For more information about how to use API Level, see the API Levels document.
-
+For more information, read What is API
+Level?
-Built-in Applications
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
-- API Demos
-- Browser
-- Calculator
-- Camera
-- Clock
-- Contacts
-- Custom Locale
-- Dev Tools
-- Downloads
-- Email
-
-
-
-
-- Gallery
-- Gestures Builder
-- Messaging
-- Music
-- Search
-- Settings
-- Spare Parts
-- Speech Recorder
-- Widget Preview
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable SDK platform provides a variety
-of
-built-in locales. In some cases, region-specific strings are available for the
-locales. In other cases, a default version of the language is used. The
-languages that are available in the Android 3.0 system
-image are listed below (with language_country/region locale
-descriptor).
-
-
-
-
-
-- Arabic, Egypt (ar_EG)
-- Arabic, Israel (ar_IL)
-- Bulgarian, Bulgaria (bg_BG)
-- Catalan, Spain (ca_ES)
-- Czech, Czech Republic (cs_CZ)
-- Danish, Denmark(da_DK)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Germany (de_DE)
-- German, Liechtenstein (de_LI)
-- Greek, Greece (el_GR)
-- English, Australia (en_AU)
-- English, Canada (en_CA)
-- English, Britain (en_GB)
-- English, Ireland (en_IE)
-- English, India (en_IN)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- English, US (en_US)
-- English, Zimbabwe (en_ZA)
-- Spanish (es_ES)
-- Spanish, US (es_US)
-- Finnish, Finland (fi_FI)
-- French, Belgium (fr_BE)
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- French, France (fr_FR)
-- Hebrew, Israel (he_IL)
-- Hindi, India (hi_IN)
-
-
-
-- Croatian, Croatia (hr_HR)
-- Hungarian, Hungary (hu_HU)
-- Indonesian, Indonesia (id_ID)
-- Italian, Switzerland (it_CH)
-- Italian, Italy (it_IT)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Lithuanian, Lithuania (lt_LT)
-- Latvian, Latvia (lv_LV)
-- Norwegian bokmål, Norway (nb_NO)
-- Dutch, Belgium (nl_BE)
-- Dutch, Netherlands (nl_NL)
-- Polish (pl_PL)
-- Portuguese, Brazil (pt_BR)
-- Portuguese, Portugal (pt_PT)
-- Romanian, Romania (ro_RO)
-- Russian (ru_RU)
-- Slovak, Slovakia (sk_SK)
-- Slovenian, Slovenia (sl_SI)
-- Serbian (sr_RS)
-- Swedish, Sweden (sv_SE)
-- Thai, Thailand (th_TH)
-- Tagalog, Philippines (tl_PH)
-- Turkish, Turkey (tr_TR)
-- Ukrainian, Ukraine (uk_UA)
-- Vietnamese, Vietnam (vi_VN)
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-
-
-
-
-Note: The Android platform may support more
-locales than are included in the SDK system image. All of the supported locales
-are available in the Android Open Source
-Project.
-
-Emulator Skins
-
-The downloadable platform includes the following emulator skin:
-
-
- -
- WXGA (1280x800, medium density, xlarge screen)
-
-
-
-For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see Supporting Multiple
-Screens.
diff --git a/docs/html/sdk/android-4.0-highlights.jd b/docs/html/about/versions/android-4.0-highlights.jd
similarity index 87%
rename from docs/html/sdk/android-4.0-highlights.jd
rename to docs/html/about/versions/android-4.0-highlights.jd
index 98f467d54813..9fdb02c8815b 100644
--- a/docs/html/sdk/android-4.0-highlights.jd
+++ b/docs/html/about/versions/android-4.0-highlights.jd
@@ -1,4 +1,4 @@
-page.title=Android 4.0 Platform Highlights
+page.title=Ice Cream Sandwich
@jd:body
@@ -15,7 +15,6 @@ page.title=Android 4.0 Platform Highlights
#jd-content div.video {
float:right;
padding:0 0 40px 60px;
- margin-top:-30px;
}
#jd-content table.columns {
margin:0 0 1em 0;
@@ -38,11 +37,6 @@ page.title=Android 4.0 Platform Highlights
}
-
-
-
-
Welcome to Android 4.0!
Android 4.0 delivers a refined, unified UI for phones and tablets and
@@ -50,7 +44,7 @@ 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.
@@ -61,12 +55,16 @@ document.-->
Android 4.0 for Users
-Simple, beautiful, beyond smart
+Simple, beautiful, beyond smart
Android 4.0 builds on the things people love most about Android — easy
multitasking, rich notifications, customizable home screens, resizable widgets,
@@ -98,16 +96,23 @@ thumbnail switches to the app.
-
-The Recent Apps list makes multitasking simple.
+
+The Recent Apps list makes
+multitasking simple.
-
-Jump to the camera or see notifications without unlocking.
+
+Jump to the camera or see
+notifications without unlocking.
-
+
-For incoming calls, you can respond instantly by text.
+-->
+For incoming calls, you can
+respond instantly by text.
@@ -118,12 +123,18 @@ top of the screen, while on larger-screen devices they appear in the System
Bar.
-
+
@@ -181,13 +192,19 @@ easier. Users can now dismiss individual notifications, apps from the Recent
Apps list, and browser tabs with a simple swipe of a finger.
-
+
@@ -225,10 +242,14 @@ quickly replace them from a list of suggestions.
@@ -270,19 +291,27 @@ accessibility features are active, everything visible on the screen can be
spoken aloud by the standard screen reader.
-Communication and sharing
+Communication and sharing
-
-
+
+
-
+
-
+
-
+
-Contacts and profiles are integrated across apps and social networks, for a consistent, personal experience everywhere — from incoming calls to emails.
+Contacts and profiles are integrated across apps and social networks, for a
+consistent, personal experience everywhere — from incoming calls to emails.
@@ -327,14 +356,18 @@ their own voice messages, transcriptions, and more to the visual voicemail
inbox.
-
+
@@ -370,9 +403,13 @@ the camera controls.
-
-
-A Photo Gallery widget on the home screen.
+
+
+A Photo Gallery widget
+on the home screen.
Redesigned Gallery app
@@ -395,13 +432,18 @@ 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.
-
-
-Live Effects let you change backgrounds and use Silly Faces during video.
+
+
+Live Effects let you
+change backgrounds and use Silly Faces during video.
-Live Effects for transforming video
+Live Effects for transforming
+video
Live Effects is a collection of graphical transformations that add interest
and fun to videos captured in the Camera app. For example, users can
@@ -416,8 +458,10 @@ Google Talk app.
@@ -430,17 +474,24 @@ store it locally. Afterward, they can view, edit, and share the screen shot in
Gallery or a similar app.
-Cloud-connected experience
+Cloud-connected experience
-
+
-
+
-
-The Browser tabs menu (left) lets you quickly switch browser tabs. The options menu (right) gives you new ways to manage your browsing experience.
+
+The Browser tabs menu (left) lets you quickly switch browser tabs. The
+options menu (right) gives you new ways to manage your browsing experience.
-Benchmark comparisons of Android Browser.
+Benchmark comparisons of
+Android Browser.
@@ -509,12 +560,15 @@ screen, then jump into the Email app to compose or reply.
-
-Android Beam lets users share what they are using with a single tap.
+
+Android
+Beam lets users share what they are using with a single tap.
-Innovation
+Innovation
Android is continously driving innovation forward, pushing the boundaries of
communication and sharing with new capabilities and interactions.
@@ -535,10 +589,13 @@ Android Beam to add other types of interactions, such as passing game scores,
initiating a multiplayer game or chat, and more.
-
+
@@ -593,8 +650,8 @@ consistent design practices, simplified code and resources, and streamlined
development across the range of Android-powered devices.
-
- Key Android 3.x developer features,
now for phones too
+
+ Key Honeycomb developer features,
now for phones too
Core UI
diff --git a/docs/html/sdk/android-4.0.3.jd b/docs/html/about/versions/android-4.0.3.jd
similarity index 61%
rename from docs/html/sdk/android-4.0.3.jd
rename to docs/html/about/versions/android-4.0.3.jd
index f6dbee066a6e..b7d4db3c5229 100644
--- a/docs/html/sdk/android-4.0.3.jd
+++ b/docs/html/about/versions/android-4.0.3.jd
@@ -8,13 +8,9 @@ sdk.platform.apiLevel=15
In this document
Reference
@@ -34,100 +30,17 @@ Differences Report »
users and developers, API changes, and various bug fixes.
For developers, the Android {@sdkPlatformVersion} platform is available as a
-downloadable component for the Android SDK. The development platform includes a
-fully compliant Android library and system image as well as a set of emulator
-skins, sample applications, and more. The downloadable platform includes no
-external libraries.
+downloadable component for the Android SDK. The downloadable platform includes
+an Android library and system image, as well as a set of emulator skins and
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
-To start developing or testing against Android {@sdkPlatformVersion},
-use the Android SDK Manager to download the platform into your SDK. For more
-information, see Adding SDK
-Components. If you are new to Android, download the SDK Starter Package first.
-
-For a high-level overview of the new user and developer features, see the
-Platform
-Highlights.
-
-
-Development Platform Revisions
-
-The sections below provide notes about successive revisions of the Android
-{@sdkPlatformVersion} development platform for the Android SDK, as denoted by
-revision number. To determine what revisions you have installed in your SDK
-environment, refer to the "Installed Packages" listing in the Android SDK
-Manager.
-
-Important: To download the new Android
-4.0.x system components from the Android SDK Manager, you must first update the
-SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
-the Android 4.0.x system components will not be available for download.
-
-
-
-
-
- Revision 3 (March 2012)
-
-
-
-
- Maintenance update. The system version is 4.0.4.
- Note: This system image includes support for emulator
-hardware graphics acceleration when used with SDK Tools r17 or higher.
-(more info)
-
- - Dependencies:
- - SDK Tools r17 or higher is required.
-
-
-
-
-
-
-
-
-
- Revision 2 (January 2012)
-
-
-
-
- Maintenance update. The system version is 4.0.3.
-
- - Dependencies:
- - SDK Tools r14 or higher is required.
-
-
-
-
-
-
-
-
-
- Revision 1 (December 2011)
-
-
-
-
- Initial release. The system version is 4.0.3.
-
- - Dependencies:
- - SDK Tools r14 or higher is required.
-
-
-
-
API Overview
The sections below provide a technical overview of new APIs in Android 4.0.3.
-
+
{@code <uses-sdk>}
element.
-For more information, see the API Levels
+
For more information, see the API Levels
document.
-
-Built-in Applications
-
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
-- API Demos
-- Browser
-- Calculator
-- Calendar
-- Camera
-- Clock
-- Custom Locale
-- Dev Tools
-- Downloads
-- Email
-- Gallery
-
-
-
-
-- Gestures Builder
-- Messaging
-- Music
-- People
-- Phone
-- Search
-- Settings
-- Speech Recorder
-- Widget Preview
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable SDK platform provides a variety of built-in
-locales. In some cases, region-specific strings are available for the locales. In other cases, a
-default version of the language is used. The languages that are available in the Android 3.0 system
-image are listed below (with language_country/region locale descriptor).
-
-
-
-
-
-- Arabic, Egypt (ar_EG)
-- Arabic, Israel (ar_IL)
-- Bulgarian, Bulgaria (bg_BG)
-- Catalan, Spain (ca_ES)
-- Czech, Czech Republic (cs_CZ)
-- Danish, Denmark(da_DK)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Germany (de_DE)
-- German, Liechtenstein (de_LI)
-- Greek, Greece (el_GR)
-- English, Australia (en_AU)
-- English, Canada (en_CA)
-- English, Britain (en_GB)
-- English, Ireland (en_IE)
-- English, India (en_IN)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- English, US (en_US)
-- English, South Africa (en_ZA)
-- Spanish (es_ES)
-- Spanish, US (es_US)
-- Finnish, Finland (fi_FI)
-- French, Belgium (fr_BE)
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- French, France (fr_FR)
-- Hebrew, Israel (he_IL)
-- Hindi, India (hi_IN)
-
-
-
-- Croatian, Croatia (hr_HR)
-- Hungarian, Hungary (hu_HU)
-- Indonesian, Indonesia (id_ID)
-- Italian, Switzerland (it_CH)
-- Italian, Italy (it_IT)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Lithuanian, Lithuania (lt_LT)
-- Latvian, Latvia (lv_LV)
-- Norwegian bokmål, Norway (nb_NO)
-- Dutch, Belgium (nl_BE)
-- Dutch, Netherlands (nl_NL)
-- Polish (pl_PL)
-- Portuguese, Brazil (pt_BR)
-- Portuguese, Portugal (pt_PT)
-- Romanian, Romania (ro_RO)
-- Russian (ru_RU)
-- Slovak, Slovakia (sk_SK)
-- Slovenian, Slovenia (sl_SI)
-- Serbian (sr_RS)
-- Swedish, Sweden (sv_SE)
-- Thai, Thailand (th_TH)
-- Tagalog, Philippines (tl_PH)
-- Turkish, Turkey (tr_TR)
-- Ukrainian, Ukraine (uk_UA)
-- Vietnamese, Vietnam (vi_VN)
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-
-
-
-
-Note: The Android platform may support more
-locales than are included in the SDK system image. All of the supported locales
-are available in the Android Open Source
-Project.
-
-Emulator Skins
-
-The downloadable platform includes the following emulator skins:
-
-
- -
- QVGA (240x320, low density, small screen)
-
- -
- WQVGA400 (240x400, low density, normal screen)
-
- -
- WQVGA432 (240x432, low density, normal screen)
-
- -
- HVGA (320x480, medium density, normal screen)
-
- -
- WVGA800 (480x800, high density, normal screen)
-
- -
- WVGA854 (480x854 high density, normal screen)
-
- -
- WXGA720 (1280x720, extra-high density, normal screen)
-
- -
- WSVGA (1024x600, medium density, large screen)
-
- -
- WXGA (1280x800, medium density, xlarge screen)
-
-
-
-To test your application on an emulator that represents the latest Android device, you can create
-an AVD with the new WXGA720 skin (it's an xhdpi, normal screen device). Note that the emulator
-currently doesn't support the new on-screen navigation bar for devices without hardware navigation
-buttons, so when using this skin, you must use keyboard keys Home for the Home button,
-ESC for the Back button, and F2 or Page-up for the Menu button.
-
-However, due to performance issues in the emulator when running high-resolution screens such as
-the one for the WXGA720 skin, we recommend that you primarily use the traditional WVGA800 skin
-(hdpi, normal screen) to test your application.
-
diff --git a/docs/html/sdk/android-4.0.jd b/docs/html/about/versions/android-4.0.jd
similarity index 91%
rename from docs/html/sdk/android-4.0.jd
rename to docs/html/about/versions/android-4.0.jd
index e3b13c847cdd..bea07253c87b 100644
--- a/docs/html/sdk/android-4.0.jd
+++ b/docs/html/about/versions/android-4.0.jd
@@ -8,13 +8,9 @@ sdk.platform.apiLevel=14
In this document
Reference
@@ -36,80 +32,19 @@ platform release because it brings the extensive set of APIs and Holographic the
to smaller screens. As an app developer, you now have a single platform and unified API framework
that enables you to develop and publish your application with a single APK that provides an
optimized user experience for handsets, tablets, and more, when running the same version of
-Android—Android 4.0 (API level 14) or greater.
+Android—Android 4.0 (API level 14) or greater.
-The Android {@sdkPlatformVersion} platform is available as a
-downloadable component for the Android SDK so you can begin developing and testing your
-applications on Android 4.0 with the Android emulator. The downloadable platform includes
+
For developers, the Android {@sdkPlatformVersion} platform is available as a
+downloadable component for the Android SDK. The downloadable platform includes
an Android library and system image, as well as a set of emulator skins and
-more. The downloadable platform does not include any external libraries.
-
-To start developing or testing against Android {@sdkPlatformVersion},
-use the Android SDK Manager to download the platform into your SDK. For more
-information, see Adding SDK
-Components. If you are new to Android, download the SDK Starter Package first.
-
-Reminder: If you've already published an
-Android application, please test your application on Android {@sdkPlatformVersion} as
-soon as possible to be sure your application provides the best
-experience possible on the latest Android-powered devices.
-
-For a high-level overview of the new user and developer features in Android 4.0, see the
-Platform Highlights.
-
-
-
-Revisions
-
-To determine what revision of the Android {@sdkPlatformVersion} platform you
-have installed, refer to the "Installed Packages" listing in the Android SDK Manager.
-
-Important: To download the new Android
-4.0 system components from the Android SDK Manager, you must first update the
-SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
-the Android 4.0 system components will not be available for download.
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 2 (December 2011)
-
-
-
- Maintenance update. The system version is 4.0.2.
-
- - Dependencies:
- - SDK Tools r14 or higher is required.
-
-
-
-
-
-
-
-
- Android {@sdkPlatformVersion}, Revision 1 (October 2011)
-
-
-
- Initial release. The system version is 4.0.1.
-
- - Dependencies:
- - SDK Tools r14 or higher is required.
-
-
-
-
+more. To get started developing or testing against Android {@sdkPlatformVersion},
+use the Android SDK Manager to download the platform into your SDK.
API Overview
The sections below provide a technical overview of new APIs in Android 4.0.
-
+
NFC developer guide.
+href="{@docRoot}guide/topics/connectivity/nfc/index.html#dispatch">NFC developer guide.
If you want your {@link android.nfc.NdefMessage} to carry a URI, you can now use the convenience
method {@link android.nfc.NdefRecord#createUri createUri} to construct a new {@link
@@ -671,7 +606,7 @@ application installed, the system launches it; if it’s not installed, Google P
the user to your application in order to install it.
You can read more about Android Beam and other NFC features in the NFC Basics developer guide. For some example code
+href="{@docRoot}guide/topics/connectivity/nfc/nfc.html">NFC Basics developer guide. For some example code
using Android Beam, see the Android
Beam Demo.
@@ -885,7 +820,7 @@ the methods necessary for any given view without extending the {@link android.vi
If you want to maintain compatibility with Android versions prior to 4.0, while also supporting
the new the accessibility APIs, you can do so with the latest version of the v4 support
-library (in Compatibility Package, r4)
+library (in Compatibility Package, r4)
using a set of utility classes that provide the new accessibility APIs in a backward-compatible
design.
@@ -1679,7 +1614,7 @@ seemed to work because it made it possible to write buggy code. In Android 4.0,
indirect references in order to detect these bugs.
The ins and outs of JNI local references are described in “Local and Global References" in JNI Tips. In Android 4.0, JNI Tips. In Android 4.0,
CheckJNI has been enhanced to detect these errors. Watch the Android Developers Blog for an upcoming post
@@ -1714,7 +1649,7 @@ it easier for you to test apps that use {@link android.webkit.WebView}
- Updated V8 JavaScript compiler for faster performance
- Plus other notable enhancements carried over from Android
+href="{@docRoot}about/versions/android-3.0.html">Android
3.0 are now available for handsets:
- Support for fixed position elements on all pages
@@ -1779,7 +1714,7 @@ on handsets as well:
- {@link android.app.ActionBar}: A replacement for the traditional title bar at the top of
the activity window. It includes the application logo in the left corner and provides a new
interface for menu items. See the
@@ -1787,10 +1722,10 @@ interface for menu items. See the
- {@link android.content.Loader}: A framework component that facilitates asynchronous
loading of data in combination with UI components to dynamically load data without blocking the
main thread. See the
-Loaders developer guide.
+Loaders developer guide.
- System clipboard: Applications can copy and paste data (beyond mere text) to and from
the system-wide clipboard. Clipped data can be plain text, a URI, or an intent. See the
-Copy and Paste developer guide.
+Copy and Paste developer guide.
- Drag and drop: A set of APIs built into the view framework that facilitates drag and drop
operations. See the
Drag and Drop developer guide.
@@ -1829,7 +1764,7 @@ notes for more information.
- USB APIs: Powerful new APIs for integrating connected peripherals with
Android applications. The APIs are based on a USB stack and services that are
built into the platform, including support for both USB host and device interactions. See the USB Host and Accessory developer guide.
+href="{@docRoot}guide/topics/connectivity/usb/index.html">USB Host and Accessory developer guide.
- MTP/PTP APIs: Applications can interact directly with connected cameras and other PTP
devices to receive notifications when devices are attached and removed, manage files and storage on
those devices, and transfer files and metadata to and from them. The MTP API implements the PTP
@@ -1876,7 +1811,7 @@ notes for other new APIs.
-API Level
+API Level
The Android {@sdkPlatformVersion} API is assigned an integer
identifier—{@sdkPlatformApiLevel}—that is stored in the system itself.
@@ -1890,170 +1825,5 @@ higher. Depending on your needs, you might also need to add an
{@code <uses-sdk>}
element.
-For more information, see the API Levels
-document.
-
-
-Built-in Applications
-
-The system image included in the downloadable platform provides these
-built-in applications:
-
-
-
-
-
-- API Demos
-- Browser
-- Calculator
-- Calendar
-- Camera
-- Clock
-- Custom Locale
-- Dev Tools
-- Downloads
-- Email
-- Gallery
-
-
-
-
-- Gestures Builder
-- Messaging
-- Music
-- People
-- Phone
-- Search
-- Settings
-- Speech Recorder
-- Widget Preview
-
-
-
-
-
-
-Locales
-
-The system image included in the downloadable SDK platform provides a variety of built-in
-locales. In some cases, region-specific strings are available for the locales. In other cases, a
-default version of the language is used. The languages that are available in the Android 3.0 system
-image are listed below (with language_country/region locale descriptor).
-
-
-
-
-
-- Arabic, Egypt (ar_EG)
-- Arabic, Israel (ar_IL)
-- Bulgarian, Bulgaria (bg_BG)
-- Catalan, Spain (ca_ES)
-- Czech, Czech Republic (cs_CZ)
-- Danish, Denmark(da_DK)
-- German, Austria (de_AT)
-- German, Switzerland (de_CH)
-- German, Germany (de_DE)
-- German, Liechtenstein (de_LI)
-- Greek, Greece (el_GR)
-- English, Australia (en_AU)
-- English, Canada (en_CA)
-- English, Britain (en_GB)
-- English, Ireland (en_IE)
-- English, India (en_IN)
-- English, New Zealand (en_NZ)
-- English, Singapore(en_SG)
-- English, US (en_US)
-- English, South Africa (en_ZA)
-- Spanish (es_ES)
-- Spanish, US (es_US)
-- Finnish, Finland (fi_FI)
-- French, Belgium (fr_BE)
-- French, Canada (fr_CA)
-- French, Switzerland (fr_CH)
-- French, France (fr_FR)
-- Hebrew, Israel (he_IL)
-- Hindi, India (hi_IN)
-
-
-
-- Croatian, Croatia (hr_HR)
-- Hungarian, Hungary (hu_HU)
-- Indonesian, Indonesia (id_ID)
-- Italian, Switzerland (it_CH)
-- Italian, Italy (it_IT)
-- Japanese (ja_JP)
-- Korean (ko_KR)
-- Lithuanian, Lithuania (lt_LT)
-- Latvian, Latvia (lv_LV)
-- Norwegian bokmål, Norway (nb_NO)
-- Dutch, Belgium (nl_BE)
-- Dutch, Netherlands (nl_NL)
-- Polish (pl_PL)
-- Portuguese, Brazil (pt_BR)
-- Portuguese, Portugal (pt_PT)
-- Romanian, Romania (ro_RO)
-- Russian (ru_RU)
-- Slovak, Slovakia (sk_SK)
-- Slovenian, Slovenia (sl_SI)
-- Serbian (sr_RS)
-- Swedish, Sweden (sv_SE)
-- Thai, Thailand (th_TH)
-- Tagalog, Philippines (tl_PH)
-- Turkish, Turkey (tr_TR)
-- Ukrainian, Ukraine (uk_UA)
-- Vietnamese, Vietnam (vi_VN)
-- Chinese, PRC (zh_CN)
-- Chinese, Taiwan (zh_TW)
-
-
-
-
-Note: The Android platform may support more
-locales than are included in the SDK system image. All of the supported locales
-are available in the Android Open Source
-Project.
-
-Emulator Skins
-
-The downloadable platform includes the following emulator skins:
-
-
- -
- QVGA (240x320, low density, small screen)
-
- -
- WQVGA400 (240x400, low density, normal screen)
-
- -
- WQVGA432 (240x432, low density, normal screen)
-
- -
- HVGA (320x480, medium density, normal screen)
-
- -
- WVGA800 (480x800, high density, normal screen)
-
- -
- WVGA854 (480x854 high density, normal screen)
-
- -
- WXGA720 (1280x720, extra-high density, normal screen) new
-
- -
- WSVGA (1024x600, medium density, large screen) new
-
- -
- WXGA (1280x800, medium density, xlarge screen)
-
-
-
-To test your application on an emulator that represents the latest Android device, you can create
-an AVD with the new WXGA720 skin (it's an xhdpi, normal screen device). Note that the emulator
-currently doesn't support the new on-screen navigation bar for devices without hardware navigation
-buttons, so when using this skin, you must use keyboard keys Home for the Home button,
-ESC for the Back button, and F2 or Page-up for the Menu button.
-
-However, due to performance issues in the emulator when running high-resolution screens such as
-the one for the WXGA720 skin, we recommend that you primarily use the traditional WVGA800 skin
-(hdpi, normal screen) to test your application.
-
+For more information, read What is API
+Level?
diff --git a/docs/html/guide/appendix/api-levels.jd b/docs/html/about/versions/api-levels.jd
similarity index 89%
rename from docs/html/guide/appendix/api-levels.jd
rename to docs/html/about/versions/api-levels.jd
index bc7d83b6db1b..525e2cb5570a 100644
--- a/docs/html/guide/appendix/api-levels.jd
+++ b/docs/html/about/versions/api-levels.jd
@@ -84,73 +84,73 @@ Android platform.
Platform Version API Level VERSION_CODE Notes
- Android 4.0.3
+ Android 4.0.3
15
{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1}
- Platform
+ Platform
Highlights
- Android 4.0, 4.0.1, 4.0.2
+ Android 4.0, 4.0.1, 4.0.2
14
{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}
- Android 3.2
+ Android 3.2
13
{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}
-
+
- Android 3.1.x
+ Android 3.1.x
12
{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}
- Platform Highlights
+ Platform Highlights
- Android 3.0.x
+ Android 3.0.x
11
{@link android.os.Build.VERSION_CODES#HONEYCOMB}
- Platform Highlights
+ Platform Highlights
- Android 2.3.4
Android 2.3.3
+ Android 2.3.4
Android 2.3.3
10
{@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1}
- Platform Highlights
+ Platform Highlights
- Android 2.3.2
Android 2.3.1
Android 2.3
+ Android 2.3.2
Android 2.3.1
Android 2.3
9
{@link android.os.Build.VERSION_CODES#GINGERBREAD}
- Android 2.2.x
+ Android 2.2.x
8
{@link android.os.Build.VERSION_CODES#FROYO}
- Platform Highlights
+ Platform Highlights
- Android 2.1.x
+ Android 2.1.x
7
{@link android.os.Build.VERSION_CODES#ECLAIR_MR1}
- Platform Highlights
+ Platform Highlights
- Android 2.0.1
+ Android 2.0.1
6
{@link android.os.Build.VERSION_CODES#ECLAIR_0_1}
- Android 2.0
+ Android 2.0
5
{@link android.os.Build.VERSION_CODES#ECLAIR}
- Android 1.6
+ Android 1.6
4
{@link android.os.Build.VERSION_CODES#DONUT}
- Platform Highlights
+ Platform Highlights
- Android 1.5
+ Android 1.5
3
{@link android.os.Build.VERSION_CODES#CUPCAKE}
- Platform Highlights
+ Platform Highlights
- Android 1.1
+ Android 1.1
2
{@link android.os.Build.VERSION_CODES#BASE_1_1}
@@ -360,7 +360,7 @@ Manager.
To run your application against different platform versions in the emulator,
create an AVD for each platform version that you want to test. For more
information about AVDs, see Creating and Managing Virtual Devices. If
+href="{@docRoot}tools/devices/index.html">Creating and Managing Virtual Devices. If
you are using a physical device for testing, ensure that you know the API Level
of the Android platform it runs. See the table at the top of this document for
a list of platform versions and their API Levels.
diff --git a/docs/html/guide/basics/what-is-android.jd b/docs/html/about/versions/index.jd
similarity index 99%
rename from docs/html/guide/basics/what-is-android.jd
rename to docs/html/about/versions/index.jd
index 9393fabfc8fb..30826c085a0e 100644
--- a/docs/html/guide/basics/what-is-android.jd
+++ b/docs/html/about/versions/index.jd
@@ -1,4 +1,4 @@
-page.title=What is Android?
+page.title=App Framework
@jd:body
Android is a software stack for mobile devices that includes an operating
diff --git a/docs/html/design/building-blocks/index.jd b/docs/html/design/building-blocks/index.jd
index 52b4915f2020..d915aae51abf 100644
--- a/docs/html/design/building-blocks/index.jd
+++ b/docs/html/design/building-blocks/index.jd
@@ -10,7 +10,7 @@ footer.hide=1
#text-overlay {
position: absolute;
- left: 10px;
+ left: 0;
top: 472px;
width: 450px;
}
diff --git a/docs/html/design/building-blocks/progress.jd b/docs/html/design/building-blocks/progress.jd
index b18853871fce..03fc09c7302c 100644
--- a/docs/html/design/building-blocks/progress.jd
+++ b/docs/html/design/building-blocks/progress.jd
@@ -1,5 +1,4 @@
page.title=Progress and Activity
-header.title=Feedback
@jd:body
When an operation of interest to the user is taking place over a relatively long period of time,
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
index 6dd8d610418f..a31fdd322e93 100644
--- a/docs/html/design/design_toc.cs
+++ b/docs/html/design/design_toc.cs
@@ -63,8 +63,4 @@
- -
-
-
-
\ No newline at end of file
diff --git a/docs/html/design/index.jd b/docs/html/design/index.jd
index d404aa6e42e2..1e6b40c5876b 100644
--- a/docs/html/design/index.jd
+++ b/docs/html/design/index.jd
@@ -1,4 +1,4 @@
-page.title=
+page.title=Design
header.hide=1
footer.hide=1
@jd:body
@@ -10,7 +10,7 @@ footer.hide=1
#text-overlay {
position: absolute;
- left: 10px;
+ left: 0;
top: 472px;
width: 280px;
}
diff --git a/docs/html/design/media/typography_sizes.png b/docs/html/design/media/typography_sizes.png
index fe6cdcee946451bc1a352387913b6bcf4bbebc79..eda1d996d4a0ced99087bf47005bfdfb1fb71c1f 100644
GIT binary patch
delta 3304
zcmb7Gc{tl?yG~GAYpeF!#Zt8-gpg7q5s9U-BxX>pA&g~IYio=4XK886Q4&i_Eop3_
zM(NOx($dy8U1-I=4XOw!s7hITMRH*;ONFvTsJt``Q
zinc+TVX?+2B;M542!}-=%#CrTwkGDrcoZCIi#JEAt6mNLGr@l+9-J6Z54ad(BO4Pl
z1lAaCWQ0K2B5dF$STiF824e=tA~8slzqoWbpN#5%hT8mJq4aGig3jbK^njzx;0Oc?
z2}c>hP0bJpj4|E}Z;pkd@U{mzQ8;zgh)7re05tXgTL|5N-v&srOt^5+CqHLLvMr*q(-ziUpd-=V`90|Q!;d~6!9f3jO9NnZL}dIZn3RxsZxYPB
zmr+zuQ1ltBuBxh;2b&rjUvj~&&d#1yaG<|`avl6UGqb!6uCA_vASf~;O@}~46o@zs
z`RWL_0C4f*G)vyfwEZOK;8o5xVrTF`V78IqW!>B2AG<4HEPJLjh}m4=7~rF6aG(1&
zH1im>LOwV-Papf<*_i#ypO6vo_5g~ScqPYFIqwODVk2@(qCr6l6p}F$q1JM@lozc!
ztN2unsL<0p&Ro-%fo-%0dz|C4rhBXbI?Rhy**O1vo)Eoq1zqw?gtllG-ngY*k(8n|
z@7drE)giJ7_NqFN-nwTinXne#42f4Fha{7eTW+2BdWaL?Ak#CZFI%OQ8q@eApimhy
z>{)pPuT2sw;}9ib!%cGUTIij7{qnDE8aGTt9^u3%6dYs4CF+XhYhkKyiefO)>9FMI2~8JTGTLWys4jHg
zj5b3ThwD-vhw64iGgX-(#9H-FniXxIZVL3jl}c%+-<%L*`#RC`J7={p`e#n>9wQie
z)?QBJJpX)E^#sXvE|Yr;@b@snWZzw)WEvd4y}`#@xC0CMHk)8;*|IN6zWgcc7khUx
z?C(!vMsHt%4Ka_oY`f~pGuG$rDn26rLrj?VLTYf#!Esz~AgX1GQ)@7wm&1#x-4P&j
z39hALE__M2N*qnJ`aA5FuKFXYwl}Q%EK#lAZ@z2DUM^zv>~<^xV4V-4jW+$dDAveA
zQC-3~gXhX_R7*$wx@XMZJxOU0H964vssFzu|F_Nul2;5H9Y~ISpK}1^gBwJ7$qd1k
zFXCb^B{_f4TdHo$EIVi(%2n{2z0MOigC5z+c4k&S>Nn2)rjg$9U3Xb`>!F*zQ?oHp
zG0KfVUmf?h+BHPv7b~cFWaow{7Q;f{!pDxYeX|K%5VKZP+#&gdzeT%6BOW;sN;DFc
zN((W_N_ws1CJ{&!PnfpojTAJX6+rXymG_xvqV}9K;>N#rkMBpt9%6Uka|+wOTP7!!
zuXkKYh;Y_wH}Rae>1uX9FCQcXN80OiWHiCEfz
zawnNarXO|rNEcpiu?md!n#bHXD3lTzgR~n)2NOR*fh~L%2u_(Yu;5Lx4024iwwpaKi1g>egz$aQS~TV?lBt*bNOl`K>{O1ys`QLqXVk<pvsGRFh@>wNkyQ?b89vN3wmaR9s6HuiV
z6hHLg%B5{D1GkM)=4UW!$6ki_vs>jaz^_7e7JG}KE#1!Gj0CyvuQB;wH^bi(!+VC!
zu6njXIRb|7R9hF|fS1H?Yib$4?-+$vZ10yA6p?e=b|S8qT3a>moh=qTc5LXkk8_Pm
zNH?X&w{5YmlauNc_#JNvyD$c4qmu0=u?xeQDKUwe)fIB*}n$~ER3eQvb`Yx@egHBUKnM(?iSRScl!eO*6zKX
z9GTANFJY)IO)b$`#yHgg?=~-F#68~dI$yJ;0!*fngrlr79(NFT-;bt!%?MoAA?l`C
z(W*qUvgKu6bq+W-u4Ii
z^g^`%%MTNZY?HW14l41>e_gTs~g&DAG3hjmTX
zB?V7MXRpJ|KeVye4Z6yC2X`_j)kAvWat@y!Ser%&D_B5=ZZunzvR0`4kZ7~SJR2MI
zcWY0TA^BG2U_hc3oS*9Pt@q^C4D13bm8--)l`l=43QuA5fCV~(RcxOKSh8&}8r^E|
zQWPVXEIF+em$yTc#K{kqoxjb+>B58euZ(87`o9N3mU34fSo7@h7AUV$LH+w1{Cn8{
zy&l7obsx!dY8Ps+`$iP@c5i|=h`a6XL>C^gVclN4$1`=UC8A1dcC3c_)>l^IC;2Hj
zT->Jzamc%*JF)l6ma9C>xpmx^9?S|p69U0o{1n^i`}&XTSZoBmOB9qHFNV*?u8S9(mTp;yg96t82ooz5u>TU%0(dYU#(D@Y;$%}~OyCv~tU
zA;$CEgDrh;y=O4R;Jkw9FT8A!7L`&{0<9&S4HvUiI)hYiBlnu`{MVptf>QqUHyz
z&Du;akD&pz=sPT_`)Z});kBvD
zx3-^XF51zamrqX?*FhhW#RJONB@pK}Bv(<^zSU$pBT+|{YVI%o!l56dIq`1s6swio
zAx>^32EAjI<3-%=U}Ie8yyMnzyf=HC2dPRZ2bp_ghD9~EejnhASLs4L#3#|Hk=h}4
zr-dNy;*7Q;7$D9NfJ8{9X!rfb2f0D`7*ME`B;?bCFnbtvP|wD_)b_qY!?*3>ozs^a
zuWo-{0({q+=AN!;m%mndp>uniaT7S_z4C=t9CQ000B8CHcYSuD_1;b(Cz+wu6PB>q
zw_o>uJ%EwZ;V^Tfn0cO3wtv)tUc!CAxDf>D_1aM}wGjC)^ZGwu?ce4H%-oZx9cX{%
UuMc%Q@ahnv?OEKfHa>~}1evfeC;$Ke
delta 6767
zcmb7}byQT3*RR1ZAT8b9qBIU5CEcQcba!_nb3i19MnaGh5l}&p4uPQ&7=}=4=$4Lw
zA!cAM?_KZj-nH(!zxBTFe`lSu&szJh=h^$Sf3tPVq%#uU!@+X%Po15cPadAm0Wwj^D%3?~=
zVq$7yG7_TdY9LW{brn@r8TBVJnX>m-IR3Lp<=+;q-xIa`&mx(BSH#5;5NP1!{M6CM
zA;`XhnnV$bB1DATmFL7`fpJ=Hn8HFPD3oSfpOg;=Iv8vZI3R&~j
zdp7h?IddZLA$!`mM0E^ArhfCBvj!Y;eN8m~h^)MflJh0XRYj0yh_+Lt|5&w?EVRr^U1E*gfmg*(gM>G)
zi;rY0hHvyVD}F~)tPQQ#1QNYXzl^1zf>J22(JO0WlnEg=gq$ZNoIGI8w|yf2-;WxB
zyi`7tY{Fr++vXN?XWR6p{WnK3hdu+}FJ)`23(dsjn^=9G8vkmQA98et8woacfIWcC
z$?axO1dP9qzqYE%6SZ%q;>wm%(l9H%W-i^>UZB_fks*wHk(>|1c{vxm;yKpaCn4W`
zrqg{27rp6-;GW6~oM4efoJ}U>v+ZP6npDGbjVX0JWg-#TDslJ$TXeq#hh21*I`#}u
z?QKak=J|B?4PV6;4&cA^SZ8h)3~|U=eu5)C454w#Db}BtdHp3LFqo>@+l*VQ*~dh&
zU014jfBWfst;@0z_OTE0d%6Kh^}S-ptOCGM^v%AF>rt+evAQz|UN&jEWmfN!nY!Z)
zEo*gh2zuolO^=xO*mV~|)&OW`;)a|oHCYy?VwL@M2v6zKkO9OFc#{WQNOkW?pe=Dw
zTHTZ_hKxoEi|+?n-o_;!yJieP`_`ly^Zji#R8*kM&;*qj;YB|#CY86I5y1xo{Aqdu
z42I7Op1N%seymIoixm_nsrpuJpS;qyWaPg2?Nuw&J^_h|Eq0>FRJ%$`Ig7YG-0~Vp
zg6{l;+S7TXZ`e%&%=E-|p_g5XMQD2aCWE_3W#1uZCMjY0De;Vi>4%B0D((IKSD1Xc
zmZEpYF@%c$^x~?-u-3Kx`cZ1dwgf
zsQDgdbZ6iMzk@2*ME~FMuyetRAFZ@XlAfpau}|ZOPECX(!3GX_n-yQG0*KGjzAcBN
zHB+Y#7p$SQB>Jlm)i>R|AW6~0jOd)ex72UjEVX)n4<>
zYWn*w*emF*F8rZkxhh|C{7o@tgFl$dMa&U%WOI9Z(7gQJveADz`X8R>30wCZxo_BA
zV1ZBIsl;>bP9&ciG1xZGxh{1*)AmrYZG*>o+ajibZQ08#GWpG$Dhp^4UCw*`GIfvS
z<-%{fyGNZjpzK|%X0X*kSBX+Wi3DfE#`BH`V8YugA2zm)@wK7ua)40bfb8~KqvWQU
zH>zH~`wAeU#(HTVvtx|{sc9Ni5>Dy_x;7L$+8ptB7r~rGM%yYmHVORHX5fEu4EP^Y
z?*B#LS}hf{|A5Wo`>r<6<2V<=>`!6DJNyF*)Jd(2%dT<-d53EUv=Ft+`ez?DH#cRO
zg3U3|rs<}2J-z0iM_EAohW!tnlfC8JxRE-i-_F6OecW{Ruaf|G9_IP&;N=ioXl#oh
zpvpN~m0R>mFl%VLQ-J9rZ!72AW7@h6<7Z~Zn7#D?E+f#YJ-x`G9(Cx`b8vfM=c_;;
zI`6krX?y$mcs!R*(fx!r=~Tyc50(@hbFVmCr&w_YVQv`M&<@D)WKfOejzaGq}(Amr|{6HiEeyisnhpRPG_hfcjI9m%u_O#`e8I>bd53G<7Y6Mt&`WB
zZE9{JJZM5ysfPdZRYj0%$1cej(Mi;
zJ6_BMOG>sd%(ik!z-44jt&lLJkp}J29h^p@S67%u$-lh$j&yffP%6_8|&`8w#|pM?m$
zA{4{>@agL<+U6~DfgWlI{oLtzsbi(IMwvV9hMk=ROt@pY0cJitpkMGLh`nQ7{W@R)
z*L{>2HE(XQSjWN`{%)wQ?vjgWn7=~4VXr1UBVw7a>Bog8@Af@@Kn?qcqu!S@4oAJy
z$@|Ctj&DqulTyE7$^6*IE>4(&w_<6O1*+cd9<12NsH4~Z>LqubCDd7nOUb+><_489
z!*zskUT3iAEJ|?RVM&3xZ9gLuSpp`;pAk8yXE0Ll&ju)viZJiMF$lDpBX>XF2Fhs6
z#zx@t#%rC%pvJ(IdWI*?51KqVRXI6=K!X@f3?Vw!qZ@tk2Cb+nwe;tB$5vYD^07JU
z=pdhjruS{&Q>)i|dT(zd#9ezyxgq89r&$u%ROhW^!XeiezA{!#xhCw7`T)fl)}WSC
zy#l2MzW3(`g;l)hu`8jNe3HxfDqq=?(BHM$mB#8L(L|N-=df2b6ay(n0#-Ii^?hFU
z`eRV73lQd#Zq0hwH;^&VAL2pNt>`A$IsJvM&SYyk4s@LlQG+T%(+69pK}ne=#>P#x
zZNm=`67}}ipZb$@W^vBurV;9DbRHZ8iHp>+CyODr*eVUI7#0x92mLObUks_TdA&F>
z{=!yOf-?>_9uxc#PqA<6q`ds}^fYB^iq|biZSlA_wC{7mtYy&aMeAj2LzC@OZuI1>
zCs=&WVLEpV)@A*&tLE7C1Q+x7Ns7qD8ac6;WtQN^@f}F$O2hHAEks?aNpKI91JQO+
zom92+rmm$t4Ztm#mDSwQJNyG0U^BQ5Yh&RFB{jP4!YdbGXZ684=xSY)mhvIEu
zjLPim<))cGQ^5_*Aq^odf1iOre}wT}P0uUi;9GYUTV`qa-J;lLk4*GB3g9I$)5Sd2
zv~w4>tYX+;7%NjBwUSpCbLUX!N12kO$N)(_beb$>+;X|L|=~M@;ZSk*aUvtKpY$AwGo246e;k
zWAUfQ1P^&Lsnn=FcZYnn`UL!UDp$t0?b=6yw9fEc(+G*=UcKQ{{cEn^G@M?6+klrm
zo_{<#1&SB`YK|;eO;VC-Ka1u$bafS2P;$z(l~B90VdvfUz&SSX3v1q>dpSL?@pyA|
zptm8q#)%R%E*kR7kPu0th}V*$z(cp>m)fR%@RVjJZxAt-N>*x}hTv_jRT=%Wvi1qU
zooM_CCHlwT=CyEWr1Q8qzx1@c?dO&WXaWntw%$3f|FCN{>H#qmgs<7^kh5u2N9g)H
zQCHx|BKC`ZljyDI!ZbZX_R|~~{V{E@Y05_pe5mwH(A?7YvF~U={fS(xXL5VYo$e#=
zJI_B=OmRWRCu3McRv|are7vnIO}fB}h{f4OgULJQ5#3ayP;7kXN;?Yj=j5KWBWD{U
z)18jVdoXqJch4FFUoQ33AgVn!L=toJ3aIhvA@}>{@SYO9rjD;S79g(ys8vJg%dN=|
z(e`d>*t^BWWh4=dJe{{=N()IjFBb^F1y3Dm&`kQtW>sda5z%7PV(#YuUc&Zl{dnWT
z$S(S4SC@pKhoXjK+vmJ?;JOZ9FVZA-+LA}A@Aj;lgZz2AAGaOT;|bK?S?pC%wuIl-
zU-g>dK)m!l-t#g&Q%P>`{Sn42QKuxX(B5&bLrB|jwQ2@$=5>8VO{
zOd)N_tNRPLIj!AsEwRtFPHHE((Xt;cz(8sXR
zA)?H^{DM-Dan1o*drYg3A0ilIBS-!E193TE^g-+P7X(n-nEDBv2Y6dnl|^tfD7~}a
zqRdY&a>zWelxlmFGx_+z=KO55Y(99=ycQMpShNpOQ+lH2QneWE!!J$S5KP-o*&*Wb{ys|6xS{uv?5)cfk@x}b#;WF&=@mVxF0@@oGy&`E)+mC`eeX5cSLSR1f(xh+h$MZ
ztZ1B2%;_=cfN$P*U@=uIg%KBtji?;6l7x=dLY1c{`%H02(gIHoSQ!8$>PGc{+lze;
zs4$6_t@SK@4Cd_nvDT+ZzJ*avm=q?Xsc#aw(^mQ>{eM4yAmLO`gS6qr-8AVJEn{id
z#7e&aJ3^w#m@n9Oy87Z;hM7Y}U&IVe9Pws}K7CnIx@5NC1}K^5Z#vTnn8d7wusM49
zBtxLYiLDGqKKb={oDlR$JK1kem0rRI;?4Q8`YuQ1WW|%x-CS;4zaR%i*Ax*eggU)<
znGjd{O#>R3y(*=NPDc>yT?da##WNS1xw65x1&ZnV*{
zY;~U+*cBuNL{xBkl~%iz--g0M3rx_mHNgaPT)r9h(40a=z6y#uOj*HRk(>99tB;Fd
z>Z4T30S#Y|=$ZqB7u5M6VqKU+L(fX+>gE-J#6F=cC?aI`f&Y6K3y;37fIl{I4eu(y
zRl?{$9^V1TlJ#Vpu&K(IlUUxl2wzWVRoj}T;zk
zyWzZTt79&7wz_rnmn+-*4>YHj2P}uF3H&CQ1ur`0`*Q(0ep1b`A?|1Zd>lbt61HAA
zk@|CczjGVDWlc(;V51ohZ7!y*j1@$cqXu&>CZ54oo8MV=3_0pY+dqiEC-b!%)u6ja;oY3ioB2ru00Rc<4#<|1!al=Y
z7qyygfp?jYq=R|?-8L{Rm(?B-(p}KXvWVOj)(Jaa>290yu)k{VFwiI7K{eh5BUi&Y
zEkPq9qf}pofe6d8*9Jznu$UYz<|;`=AT20bzs=!c;JAC>!#v9l|Nd{xXYYh9>i!6S
zcr+?p2k2S4P3v{GspRAZQdx;q>4M%%Z=@#pjS`MtiLGn}KYh=(j)Z^BboRFjl}j~e
z@kr8fAjhW0#g)WRH%~Itt9BV-^mvP1$ZsT%#!3C0RfK}W>SO*!9{>p7
zwoTygi#};Pooj~ZZoR=TOks1Evt0k-Qt%`w2u{B;4*6R*XsjOplY4E*>Ub}~`(tj!
zLHPnaVjEsRfjd_}NA*mv$u<|irvtomI!MY6!dsy&T^%kPbBV)&J;-!V8aq#|V9B&`
z?o&X!AJNbfg*%U!gQwvGeBvM&(7*QHIrTI5IOS?UIe+rd=$8G_5>|n9M2onXE)jW>
zhn%7BKh*Q5==>XljkYMQ<^LH@`MDA
z!UJT*NY^dya<^<)0id?lP{B5Ez{m3EAZNOtz#vVetH_c;s!Z+ONcBO+
z&o`q7N&hA-U1o}1xgu_$)s;f^3W{F20Mio}+@Hffq`4e3=|xaxWFzwLQZtoJ+1vx}
zqolD|^wA>8gAClQY$d5jM>>Nf12Z-l9ms9Xnd{4dj
z_v{;6>#nQ-`{u)_(XrjgD$7RkzcwQ*rr
zg7R;|uL4x*e2&aNRJB)M7Rm0Dk}-s}-`okj-B+mK;C%t5Kf0A9gA2qW)mhexuMx%k
zC_^*X&}-LUeMx?ruMoBYk-=u=B;QJigooIEgUHP+ux)ZX7~bnYoobK7LL&K4;#{(j
zTL6Hb*V20)bo0bEtBEkxB(yU}5RJihJ|=m!-tvEVnHC^rY+^RFH&eBl*!qruNFNQVTc{64K}m0hju9Ltfv-sUY8U*Iw;urq&Am
zf~SxSA4b!!9cx8^-^fFry|yTS$BXnvmh`17VMb)x73c+uUQ$3AtQG>&(}aP?VTwa*Gc^|q
zTaF4$wp&i#@3Ry;yQW-HUno0Xu>%2g@Isd*1q`Y2uCZrFW>j0f!tvR0m
zR+1&cbIbq6K&X!R?f@ZnIPs?Ve|D7kKXILaJXWL&hY1;?nf1(g{_e7bqowv-6|Y*^
H_RaqS@=bHn
diff --git a/docs/html/design/patterns/index.jd b/docs/html/design/patterns/index.jd
index 732e4dbc60bc..6f88e6d99fd0 100644
--- a/docs/html/design/patterns/index.jd
+++ b/docs/html/design/patterns/index.jd
@@ -10,7 +10,7 @@ footer.hide=1
#text-overlay {
position: absolute;
- left: 10px;
+ left: 0;
top: 492px;
width: 200px;
}
diff --git a/docs/html/design/style/iconography.jd b/docs/html/design/style/iconography.jd
index c4e8bd6acaee..775e45d9fdbb 100644
--- a/docs/html/design/style/iconography.jd
+++ b/docs/html/design/style/iconography.jd
@@ -139,7 +139,7 @@ files for further customization.
Action bar icons for phones should be 32x32 dp.
diff --git a/docs/html/design/style/index.jd b/docs/html/design/style/index.jd
index d346aea114e1..74d085b759b0 100644
--- a/docs/html/design/style/index.jd
+++ b/docs/html/design/style/index.jd
@@ -10,7 +10,7 @@ footer.hide=1
#text-overlay {
position: absolute;
- left: 10px;
+ left: 0;
top: 402px;
width: 220px;
}
diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd
new file mode 100644
index 000000000000..6830b72cfe84
--- /dev/null
+++ b/docs/html/develop/index.jd
@@ -0,0 +1,366 @@
+fullpage=true
+page.title=Develop
+header.hide=1
+carousel=1
+tabbedList=1
+@jd:body
+
+
+
+
+
+
+
+
+ Your video is supposed to appear here.
+ Make sure you have the Flash® Player.
+
+
+ close video
+
+
+
+
+
+
+
+
+
+
+
+
+ - DEVELOPER NEWS
+ - FEATURED DOCS
+
+
+
+
+
+ -
+
+
+
A Faster Emulator with Better...
+ Today we’re thrilled to announce several significant improvements to the emulator, including a dramatic...
+
+ -
+
+
+
Android C2DM — Client Login key...
+ In the upcoming weeks, some of the older Client
+ Login authentication keys will expire. If you generated the token you’re...
+
+ -
+
+
+
Accessibility
+ We recently published some new resources to help developers make their Android applications more accessible...
+
+ -
+
+
+
New Seller Countries in Google Play
+ Over the past year we’ve been working to expand the list of
+ countries and currencies from which Android developers...
+
+
+
+
+ -
+
Google Play In-app Billing
+ In-app Billing is a Google Play service that lets you sell digital content from inside your applications. You can sell products as standard in-app products (one-time purchase) or with subscriptions (recurring...
+
+ -
+
Contacts Provider
+ The Contacts Provider is a powerful and flexible Android component that manages the device's central repository of data about people. You can use it to build powerful social features...
+
+ -
+
Transferring Data Without Draining the Battery
+ This training class demonstrates the best practices for scheduling and executing downloads using techniques such as caching, polling, and prefetching.
+
+ -
+
Creating Backward-Compatible UIs
+ This training class demonstrates how to use UI components and APIs available in newer versions of Android in a backward-compatible way, ensuring that your application still runs on previous versions...
+
+
+
+
+
+
+
+
+ - DEVELOPERS LIVE
+ - VIDEO PLAYLISTS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/html/distribute/distribute_toc.cs b/docs/html/distribute/distribute_toc.cs
new file mode 100644
index 000000000000..bc028e57530f
--- /dev/null
+++ b/docs/html/distribute/distribute_toc.cs
@@ -0,0 +1,112 @@
+
+
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/about/distribution.jd b/docs/html/distribute/googleplay/about/distribution.jd
new file mode 100644
index 000000000000..291d559888d5
--- /dev/null
+++ b/docs/html/distribute/googleplay/about/distribution.jd
@@ -0,0 +1,127 @@
+page.title=Distribution Control
+page.metaDescription=Reach the users you want, whenever you want.
+
+@jd:body
+
+Deliver your apps to the users you want, on the devices you want, on your schedule.
+
+Instant publishing, instant updates
+
+On Google Play, you can publish your products to customers instantly. Just
+upload and configure your product in the Google Play Android Developer Console
+and press the Publish button—your app appears in the store listings within
+hours, not weeks. There are no delays for code or policy reviews, so you keep
+complete control over your release schedule.
+
+Once your app is published, you can update it as often as you want. You can
+change prices, configuration, and distribution options at any time through the
+Google Play Android Developer Console, without needing to update your app
+binary.
+
+Later, as you add features or address code issues, you can publish an updated
+binary at any time. Google Play makes the new version available immediately and
+notifies existing customers that an update is ready for download. To streamline
+the rollout across your customer base, Google Play also lets users accept
+automatic updates of your app, so that your updates are delivered and installed
+s soon as you publish them.
+
+Reaching the customers you want
+
+Google Play does more than connect your app with users—it helps you
+reach the broadest possible distribution across the Android ecosystem, while
+making sure that your app is only available to the audience that you want to
+reach.
+
+
+
+
+
+Geographic targeting
+
+You can use controls in the Google Play Android Developer Console to easily
+manage the geographic distribution of your apps, without any changes in your
+application binary. You can specify which countries and territories you want to
+distribute to, and even which carriers (for some countries).
+
+When users visit the store, Google Play makes sure that they are in one of
+your targeted countries before downloading your app. You can change your country
+and carrier targeting at any time just by saving changes in the Google Play
+Android Developer Console
+
+
+
+
+
+Capabilities targeting
+
+Google Play also lets you control distribution according to device features
+or capabilities that your app depends on. There are several types of
+dependencies that the app can define in its manifest, such as hardware features,
+OpenGL texture compression formats, libraries, Android platform versions, and
+others.
+
+When you upload your app, Google Play reads the dependencies and sets up any
+necessary distribution rules. For technical information about declaring
+dependencies, read Filters on
+Google Play.
+
+For pinpoint control over distribution, Google Play lets you see all of the
+devices your app is available to based on its dependencies (if any). From the
+Google Play Android Developer Console, you can list the supported devices and
+even exclude specific devices if needed.
+
+Statistics for analyzing installs
+
+Once you’ve published your app, Google Play makes it easy to see how it’s
+doing. The Google Play Android Developer Console gives you access to a variety
+of anonymized metrics that show your app’s installation performance measured by
+unique users and unique devices, across a variety of different dimensions such
+as country, Android version, device, country, carrier, and app version.
+
+
+
+
+You can also view your installation data on timeline charts, for all metrics and
+dimensions. At a glance, these charts highlight your app’s installation peaks
+and longer-term trends, which you can correlate to promotions, app improvements,
+or other factors. You can even focus in on data inside a dimension by
+highlighting specific data points (such as individual platform versions or
+languages) on the timeline.
+
+So that you can “take your data with you”, you can download all of your
+installation data as a CSV file for viewing in the business program of your
+choice.
+
+
+Advanced delivery options
+
+Google Play offers convenient options for managing how your apps are
+delivered to users.
+
+In most cases, it’s easy to create an app that supports all of your targeted
+screen sizes and platform versions from a single APK. Distributing a single APK
+to all of your users is a highly recommended approach, because it’s the easiest
+way to manage and maintain the app. If you need to deliver a different APK to
+devices, Google Play provides a way to do that.
+
+An option called Multiple APK support lets you create multiple APK packages
+that use the same package name but differ in their OpenGL texture compression
+formats, screen-size support, or Android platform versions supported. You can
+upload all of the APKs to Google Play under a single product listing and Google
+Play selects the best APK to deliver to users, based on the characteristics of
+their devices.
+
+The APK Expansion Files option lets you upload up to two secondary downloads
+for each published APK, including multiple APKs. Each of the two expansion files
+can be up to 2GB each and can contain any type of code or assets. When you
+upload the expansion files, Google Play hosts them for free and handles the
+download of the files as part of the normal APK installation.
+
+Protecting your App
+
+To help you protect your application against piracy, Google Play offers a
+licensing service that you can implement in your app. It’s a network-based
+service that lets an application query a trusted Google Play licensing server to
+determine whether the application is licensed to the current device user.
diff --git a/docs/html/distribute/googleplay/about/monetizing.jd b/docs/html/distribute/googleplay/about/monetizing.jd
new file mode 100644
index 000000000000..1e3437b266a2
--- /dev/null
+++ b/docs/html/distribute/googleplay/about/monetizing.jd
@@ -0,0 +1,152 @@
+page.title=Flexible Monetizing and Business Tools
+page.metaDescription=
+
+@jd:body
+
+
+
+
+
+
+Sell your app in more than 130 countries. Flexible monetization options with
+in-app purchase, subscriptions, and more.
+
+Streamlined purchase flow for users
+
+When users find your app, they can purchase it instantly with a streamlined,
+consistent purchasing process and convenient payment methods.
+
+Instant purchase from device or web
+
+Google Play makes it fast and easy for your customers to buy your products,
+whether from a phone, a tablet, or a desktop computer. When users find an app or
+game that they want to buy, they can purchase it in as few as two steps—one
+to initiate the purchase and another to accept purchase details and permissions
+and complete the transaction.
+
+Google Play's convenient purchase experience is the same familiar process for
+all products everywhere across Google Play—apps, games, in-app products and
+subscriptions, and other digital content.
+
+Cloud-connected
+
+Purchasing is even more convenient on Google Play because it’s
+cloud-connected. Users can find and purchase your products from anywhere—from
+their Android phones or using any web browser on any host computer.
+
+When users find an app or game they want to buy, they purchase it and download
+it instantly to their devices over-the-air. Users who sign in to the Google Play web site can also buy apps and games
+and push them instantly to their phones, tablets, or other devices. Google Play
+manages the application download.
+
+Convenient payment options
+
+Users can purchase your products on Google Play using several convenient
+payment methods—credit card, Direct Carrier Billing, and Google Play balance.
+
+Credit card is the most common method of payment. Users can pay using any credit card
+that they’ve registered in Google Play. To make it easy for users to get started,
+registration is offered as a part of initial device setup process.
+
+
+
+Payment methods on Google Play
+
+- Credit Card
+- Direct Carrier Billing
+
+
+
+
+Subscribers on many popular carrier networks worldwide can charge purchases
+to their monthly mobile phone bills through Direct
+Carrier Billing. This form of payment is convenient and simple and is
+extremely popular in regions where credit cards are less common. More than 75
+million users in key markets around the world can purchase
+your products through Direct Carrier Billing. Many more will get the option in
+the months ahead.
+
+The payment methods available to users worldwide may vary, based on
+location, carrier network, and other factors.
+
+
+
+
+
+Choice of billing models
+
+Google Play gives you a choice of billing models to let you monetize your
+products.
+
+You can offer apps to all users for free, or
+you can set an initial price for the app, paid before download. You can also
+sell one-time purchases and auto-renewing subscriptions from inside the app, and
+you can take advantage of AdMob integration to monetize your app through
+targeted advertising.
+
+
+
+Billing models on Google Play
+
+- Free (no charge to download)
+- Priced (user charged before download)
+- In-App products and subscriptions
+
+
+
+
+You can combine these billing models in different ways, based on your business
+needs or market conditions.
+
+For example, you can use a freemium or ad-supported model by distributing
+your app for free and selling in-app products or advertising. Alternatively you
+could set a nominal price for your app at download and sell value add-ons,
+gameplay levels, and upgrades as in-app products. The only restriction is that
+free apps must remain free (to download) for the life of the app.
+
+Flexible pricing in the currencies of your customers
+
+
+
+
+
+Google Play gives you complete control over how you price your products. You
+can set prices in more than 130 countries, for millions of
+users around the world. When users browse your app’s product page or initiate a
+purchase, Google Play shows them the price they will be charged in
+their local currency.
+
+You can set and adjust your prices at any time, in any available currency.
+Your prices in available currencies are independent, so you can adjust one
+price without affecting others. This gives you the ability to run
+short-term promotions and discounts in specific countries and more easily
+manage shifts in exchange rates.
+
+You can set and manage prices for your apps and in-app products from the
+Google Play Android Developer Console.
+
+Monthly payouts in your local currency
+
+To sell products in Google Play, all you have to do is register for a Google
+Checkout merchant account and link it to your Google Play Android Developer
+Console account (see Get Started with
+Publishing for details). Once you’ve set up your account and published your
+apps, Google Play makes monthly payouts of sales proceeds to your merchant
+account, in your local currency.
+
+Detailed financial reporting
+
+When you sell priced apps or in-app products on Google Play, you get a
+variety of financial reports to help you track and project sales, optimize your
+marketing campaigns, and support your customers.
+
+To help you keep up-to-date with the current activity, you can download daily
+reports summarizing recent purchases of your products. The reports include
+estimated sales amounts and include a variety of other data for each
+transaction.
+
+At the close of the month, you can download a complete sales report that
+gives you the final details of all transactions that closed in the month,
+including the payout amounts and other data. Additional financial reports are
+available in your Google Checkout merchant account.
diff --git a/docs/html/distribute/googleplay/about/visibility.jd b/docs/html/distribute/googleplay/about/visibility.jd
new file mode 100644
index 000000000000..2c5dbe522055
--- /dev/null
+++ b/docs/html/distribute/googleplay/about/visibility.jd
@@ -0,0 +1,247 @@
+page.title=Visibility for Your Apps
+page.metaDescription=
+
+@jd:body
+
+
+
+
+
+A billion downloads a month and growing. Get your apps in front of millions
+of users at Google's scale.
+
+
+Worldwide reach, rapid growth
+
+Google Play is the premier store for distributing Android apps. It’s
+preinstalled on more than 300 million devices worldwide, a number growing by
+almost a million every day. Android users have downloaded
+more than 15 billion apps from Google
+Play, growing at a rate of more than 1 billion per month.
+
+When you publish on Google Play, you put your apps in front of Android's huge
+base of active customers, in more than 130 countries and territories across the
+world.
+
+Google Play is a central part of the Android experience. New users
+personalize their devices with apps, games, and other Google Play content.
+Existing users return regularly to see what's trending and new. Downloading new
+apps is extremely convenient and fast— Google Play pushes apps to the
+user's devices instantly, over the air. No cable or sync is ever needed.
+
+
+
+
+
+
+
+
+
+Google Play is also a top destination for visitors from the the web. Anyone
+with a browser can explore everything that Google Play has to offer from its web site. Android users can even buy and
+install the apps they want and Google Play pushes them automatically to their
+devices over the air.
+
+The accessiblility and convenience of the Google Play web
+site give you new ways to drive traffic to your products from online ads, web
+search, cross-linking, and more.
+
+
+
+Built for app discovery
+
+Google Play is designed to connect users with great apps and games. It
+provides key channels to help your app get noticed and gain traction in the
+marketplace.
+
+User ratings and reviews
+
+When you develop a great app, Android users show their appreciation through
+ratings and reviews. They rate your app (out of 5 stars) after downloading it
+and can post a short description of their experience. When other users are
+considering your app, they look at the ratings and reviews as key benchmarks of
+the app’s quality.
+
+
+
+Your app’s rating is one of the most important factors influencing its
+ranking in the various lists and search results in Google Play. It's also one of
+the key signals that the editorial staff looks for, when curating apps and games
+for promotion in the store.
+
+
+
+
+
+Category browsing
+
+When you publish an app in Google Play, you pick the category in which you
+want users to find your app. More than 30 categories are available. Inside each
+category, apps are ranked based on a combination of ratings, reviews, downloads,
+country, and other factors. Many popular categories also start with a collection
+of featured apps selected by the Google Play editorial staff.
+
+
+
+
+
+
+
+
+
+
+Search
+
+Search on Google Play lets users pinpoint an app or game quickly. Search uses
+powerful heuristics to suggest terms as the user types, and it offers direct
+links to apps as suggestions. In results, users find the most relevant, most
+popular apps at the top.
+
+
+
+
+
+Top charts and lists
+
+Top charts keep users in touch with what’s popular and trending with Android
+users, right from the Apps and Games home pages. The charts are generated
+several times each day based on recent download activity, keeping them fresh and
+allowing new apps to move upward in the charts. To make the charts as relevant
+as possible for users across the world, they are also country-specific.
+
+As your apps get traction and build momentum in downloads and ratings,
+they’ll climb one or more of the top charts and gain even more exposure.
+
+
+
+
+Top Free Free apps and games
+Top Paid Priced apps and games
+Top New Free Less than 30 days old
+Top New Paid Less than 30 days old
+Top Grossing Gross proceeds, free or priced
+Best Selling Popular priced games
+Trending New arrivals growing quickly in installs
+
+
+
+
+
+Featured, Staff Picks, Collections,
+and Badges
+
+
+
+
+
+
+
+The Google Play editorial team is dedicated to bringing the best apps to the
+attention of users. It constantly reviews apps from across Google Play to find
+not only the biggest apps and games, but also the “diamonds in the rough” that
+they want more people to see.
+
+When the team finds great apps and games they use the Featured,
+Staff Picks, and other collections to promote them. Any one of those
+can give your apps dramatically higher visibility and market penetration.
+
+You can’t nominate your app for featuring or pay for a promotional slot,
+because the editorial team wants to show the best apps and give the same chances
+to all developers. However, if you build an app that users love and that looks
+great on Android devices, the editorial team will notice.
+
+
+Featured and Staff Picks
+
+Each week the the Google Play editorial staff selects a new set of apps to
+promote in its popular Featured and Staff Picks collections.
+
+
+The Featured collections highlight the latest and greatest app and game
+titles available for Android. Category featuring highlights the best and most
+popular apps in the top categories.
+
+Staff Picks collects all recently featured apps and games on Google
+Play. To better reach tablet users, there’s a special Staff Picks
+collection that highlights the best apps for Android tablets.
+
+
+
+
+
+
+App collections
+
+From time to time the editorial staff puts together a collection of apps and
+games based on a theme or seasonal event. The collections are popular with
+customers because they are timely and relevant, and they provide a new way to
+showcase great Android apps to users.
+
+The editorial staff chooses apps for collection promotions in a similar way
+as for featuring—high-quality apps that show the best of Android on phones
+and tablets. For collections the staff also looks for apps that can make an
+interesting or unique contribution to the collection as a whole.
+
+ EDITORS' CHOICE
+
+Editors’ Choice is a curated collection of apps that highlights some
+of the very best apps available on Android. These apps are chosen for high
+quality and great UI, long-term popularity, and innovative use of Android
+features.
+
+Apps chosen for Editors’ Choice also receive a badge that is
+displayed wherever the app name is seen in Google Play.
+
+ TOP DEVELOPER
+
+Top Developer is a badge recognizing established, respected developers for
+their commitment to launching high-quality and innovative apps on
+Android. The Google Play editorial staff selects developers awards a Top
+Developer badge from time to time, based on the cumulative work of the
+developer.
+
+The Top Developer badge appears next to the developer name wherever it is
+displayed in Google Play. For a developer, the badge means long-term recognition
+of all of your apps. For users, the badge signifies an additional level of trust
+and confidence in your products.
+
+Rich, colorful product pages
+
+In Google Play, your app’s storefront is its product details page
+— a rich and colorful page that lets you promote your app, highlight its
+ratings and reviews, and show what your app can do.
+
+
Your product details page is the one page where your users come to find out
+everything about your app. When they see your app listed in search results, top
+charts, category listings, and collections, one tap takes them directly to your
+product details page.
+
+
+
+
+
+You can manage your product details page through the Google Play Android Develeper Console, from any
+web browser. Just sign in, upload or update your brand assets, and enter your
+product details in the languages of your markets.
+
+When you publish, Google Play adds your app’s ratings, reviews, links to your
+other products, and more, and makes sure your product details page looks great
+on phones, tablets, or in a web browser.
+
+You can link web users directly to your product details page from outside
+Google Play, such as from your web site, an ad campaign, reviews, social media
+posts, and more. See Linking
+to Your Products to find out how.
+
+To learn more about how to create your product details page, see
+Publishing on Google Play.
diff --git a/docs/html/community/index.html b/docs/html/distribute/googleplay/index.html
similarity index 58%
rename from docs/html/community/index.html
rename to docs/html/distribute/googleplay/index.html
index fb2a0d35bcc1..46a8ce2c3b67 100644
--- a/docs/html/community/index.html
+++ b/docs/html/distribute/googleplay/index.html
@@ -1,10 +1,10 @@
-
+
Redirecting...
You should have been redirected. Please click here.
+href="http://developer.android.com/distribute/index.html">click here.
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/promote/badges.jd b/docs/html/distribute/googleplay/promote/badges.jd
new file mode 100644
index 000000000000..de12e2a962c0
--- /dev/null
+++ b/docs/html/distribute/googleplay/promote/badges.jd
@@ -0,0 +1,203 @@
+page.title=Google Play Badges
+@jd:body
+
+Google Play badges give you an officially branded way of promoting your app to Android users. Use the form below to quickly create badges to link users to your products from web pages, ads, reviews, and more. See Linking to your products for more ways to bring users to your apps.
+
+Input your app's package or your publisher name, choose the style, size, and language, and click "Build my badge". The form will generate code for an embbeded button that links to your app's product page or a list of your apps.
+
+Note that you should not modify the Google Play badges after generating them, including colors, size, text, and logo. See Android Brand Guidelines for more information.
+
+
+
+
+
+
+
+
diff --git a/docs/html/distribute/googleplay/promote/brand.jd b/docs/html/distribute/googleplay/promote/brand.jd
new file mode 100644
index 000000000000..8aafc48fe3dd
--- /dev/null
+++ b/docs/html/distribute/googleplay/promote/brand.jd
@@ -0,0 +1,174 @@
+page.title=Brand Assets, Icons, and Guidelines
+@jd:body
+
+We encourage you to use the Android and Google Play brands in your
+promotional materials. You can use the icons and other assets on this page in
+any way you want, provided that you follow the guidelines described below.
+
+Android Brand
+
+
+
+
+
+
+
+ 01/ Android Robot
+
+ Can be used, reproduced, and modified freely in marketing
+ communications. Our standard color value for print is PMS 376C. Our online hex
+ color is #A4C639.
+
+ When using the Android Robot or any modification of it, proper attribution is
+ required under the terms of the Creative Commons Attribution license. For more
+ details on proper attribution, please see the Content License document.
+
+
+
+
+
+
+
+
+
+ 02/ Android Logo
+
+ The Android logo may not be used.
+
+
+
+
+
+
+
+
+
+ 03/ Android Custom Typeface
+
+ The custom typeface may not be used.
+
+
+
+
+
+
+
+
+
+ 04/ Android in Official Names
+Any name with 'Android' alone may not be used in a name without permission. Any name
+ with 'Droid' alone may not be used in a name.
+
+ The word 'Android' may be used only as a descriptor, 'for Android'. If used with your
+ logo, 'for Android' needs to be smaller in size than your logo. First instance of this
+ use should be followed by a TM symbol, 'for Android™'.
+
+ If you are not sure you meet these criteria, please contact us.
+
+
+
+
+
+
+
+
+
+ 05/ Android in Messaging
+
+ May be used in text as a descriptor, as long as it is followed by a proper generic term
+ (e.g. "Android™ application"). First instance of this use should be followed by a TM
+ symbol.
+
+
+
+ Note: Any usage of #04 or #05 needs to include footer attribution in your
+ communication:
+ "Android is a trademark of Google Inc."
+
+
+Google Play Brand
+
+
+
+
+
+ 06/ Get it on Google Play Badge
+
+
+ The "Get it on Google Play" and "Android App on Google Play" logos are badges that you
+ can use on your web site and promotional materials, to point to your products on Google
+ Play.
+
+
+ The logos are available in two sizes:
+
+
+ - Large: 60(h) x 172(w)
+
+ - Small 45(h) x 129(w)
+
+
+
+ Guidelines for usage:
+
+
+ - Never separate the phrase “Get it on Google Play” or "Android App on Google Play"
+ from the Google Play logo, and do not change the color, proportions, spacing or any
+ other aspect of the logo.
+
+
+
+
+
+ - When used online, the badge logo should be used to direct users to:
+
+ - The Google Play landing page:
play.google.com
+
+ - The Google Play Apps landing page:
+ play.google.com/store/apps
+
+ - A list of products that include your company name, for example,
+ http://play.google.com/store/search?q=yourCompanyName
+
+ - A list of products published by you, for example,
+ play.google.com/store/search?q=publisherNameM/span>
+
+ - A specific app product details page within Google Play, for example,
+ play.google.com/store/apps/details?id=packageName
+
+
+
+ - When used alongside logos for other application marketplaces, the Google Play logo
+ should be of equal or greater size
+
+
+ For details on all the ways that you can link to your product details page in Google Play,
+ see Linking to your products
+
+ For convenience, if you are using the logos online, you can use the
+ badge generator
+ to create the appropriate markup and link to your apps.
+
+Other Brands
+
+Any other brands or icons depicted on this site are not are the property of their
+repective owners and usage is reserved. You must seek the developer for appropriate permission to use them.
diff --git a/docs/html/distribute/googleplay/promote/index.jd b/docs/html/distribute/googleplay/promote/index.jd
new file mode 100644
index 000000000000..68829907fe22
--- /dev/null
+++ b/docs/html/distribute/googleplay/promote/index.jd
@@ -0,0 +1,43 @@
+page.title=Promoting Your Apps
+page.metaDescription=Raise the visibility of your apps in Google Play through deep links and Google Play badges.
+header.hide=0
+footer.hide=0
+@jd:body
+
+
+
+After you publish your app, you can bring Android users to your app's product details page by
+providing links in your social network posts, ad campaigns, app reviews and articles, your
+web site, and more.
+
+You can use the resources in this section to create deep links for your online placements.
+Google Play badges are an especially great way let Android users know that your app is available
+and link them directly to your download page. With the badge generator, they're also easy to make.
+
+
+
+
diff --git a/docs/html/distribute/googleplay/promote/linking.jd b/docs/html/distribute/googleplay/promote/linking.jd
new file mode 100644
index 000000000000..4a1b19834f3f
--- /dev/null
+++ b/docs/html/distribute/googleplay/promote/linking.jd
@@ -0,0 +1,213 @@
+page.title=Linking to Your Products
+@jd:body
+
+
+
+Google Play provides several link formats that let you bring users to your
+products in the way you want, from Android apps, web pages, ads, reviews,
+articles, social media posts, and more.
+
+The link formats let you:
+
+- Link to a specific app's product details page
+- Link to a list of all of your apps, or
+- Link to a search result of your choice
+- Link to a collection on Google Play
+
+
+If you are linking from an Android app, you can also control whether the link
+launches the Play Store application or the browser, which takes the user
+to the Google Play web site.
+
+Linking to a Product Details Page
+
+Use the format below to deep-link users directly to a specific app's product
+details page. At the product details page, users can see the app description,
+screenshots, reviews and more, and then install it.
+
+To create the link, you need to know the app's fully qualified package
+name, which is declared in the app's manifest
+file. The package name is also visible in the Developer Console.
+
+
+- From a web site:
+-
+
http://play.google.com/store/apps/details?id=<package_name>
+
+- From an Android app:
+-
+
market://details?id=<package_name>
+
+
+
+Here's an example:
+
+http://play.google.com/store/apps/details?id=com.google.android.apps
+
+For details on how to send the link in an Android app, see Linking from an Android App.
+
+
+
+Linking to a Product List
+
+Use the format below to link users to a list of apps published by you. The
+product list lets users see all of the apps from a specific publisher, with
+ratings, editorial badges, and an Install button for each.
+
+To create the link, you need to know your publisher name, which is
+available from the Developer Console.
+
+
+- From a web site:
+-
+
http://play.google.com/store/search?q=pub:<publisher_name>
+
+- From an Android app:
+-
+
market://search?q=pub:<publisher_name>
+
+
+
+Here's an example:
+
+http://play.google.com/store/search?q=pub:Google Inc.
+
+For details on how to send the link in an Android app, see Linking from an Android App.
+
+
+Linking to a Search Result
+
+Use the format below to link users to a search query result on Google Play.
+The search result page shows a list of apps (and optionally other content) that
+match the query, with ratings, badges, and an Install button for each.
+
+To create the link, you just need a search query string. If you want the
+query to search outside of the Google Play Apps listings, you can remove the
+&c=apps
part of the link URL.
+
+
+- From a web site:
+-
+
http://play.google.com/store/search?q=<search_query>&c=apps
+
+- From an Android app:
+-
+
market://search?q=<seach_query>&c=apps
+
+
+
+Here's an example:
+
+http://play.google.com/store/search?q=maps&c=apps
+
+For details on how to send the link in an Android app, see Linking from an Android App.
+
+
+
+Linking to a Collection
+
+If your app is featured or appears in one of the Google Play Top charts or
+collections, you can use the format below to link users directly to the
+collection. The collection shows a ranked list of apps in the collection, with
+ratings, short descriptions, and an Install button.
+
+
+- From a web site:
+-
+
http://play.google.com/store/apps/collection/<collection_name>
+
+- From an Android app:
+-
+
market://apps/collection/<collection_name>
+
+
+
+Here's an example:
+
+http://play.google.com/store/apps/collection/editors_choice
+
+For details on how to send the link in an Android app, see Linking from an Android App.
+
+
+
+
+
+Collection collection_name
+
+Staff Picks (Featured) featured
+Editor's Choice editors_choice
+Top Paid topselling_paid
+Top Free topselling_free
+Top New Free topselling_new_free
+Top New Paid topselling_new_paid
+Top Grossing topgrossing
+Trending movers_shakers
+Best Selling in Games topselling_paid_game
+
+
+
+Linking from an Android App
+
+There are two general formats for links that are accessible to users on
+Android devices, The two formats trigger slightly different behaviors on the
+device:
+
+
+market://
Launches the Play Store app to load the
+target page.
+http://
Lets the user choose whether to launch the
+Play Store app or the browser to handle the request. If the browser handles the
+request, it loads the target page on the Google Play web site.
+
+
+In general, you should use http://
format for links on web pages
+and market://
for links in Android apps.
+
+If you want to link to your products from an Android app, create an {@link
+android.content.Intent} that opens an Google Play URL, as shown in the example
+below.
+
+
+Intent intent = new Intent(Intent.ACTION_VIEW);
+intent.setData(Uri.parse("market://details?id=com.example.android"));
+startActivity(intent);
+
+
+
+Summary of URL formats
+
+The table below provides a summary of the URIs currently supported by the Google Play (both on
+the web and in an Android application), as discussed in the previous sections.
+
+
+
+For this result
+Web page link
+Android app link
+
+
+Show the product details page for a specific app
+http://play.google.com/store/apps/details?id=<package_name>
+market://details?id=<package_name>
+
+
+Show apps by a specific publisher
+http://play.google.com/store/search?q=pub:<publisher_name>
+market://search?q=pub:<publisher_name>
+
+
+Search for apps using a general string query.
+http://play.google.com/store/search?q=<query>
+market://search?q=<query>
+
+
+
diff --git a/docs/html/distribute/googleplay/promote/product-pages.jd b/docs/html/distribute/googleplay/promote/product-pages.jd
new file mode 100644
index 000000000000..af5b2d5dc91e
--- /dev/null
+++ b/docs/html/distribute/googleplay/promote/product-pages.jd
@@ -0,0 +1,4 @@
+page.title=Your Product Pages
+@jd:body
+
+Placeholder...
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/publish/console.jd b/docs/html/distribute/googleplay/publish/console.jd
new file mode 100644
index 000000000000..72b97abb7473
--- /dev/null
+++ b/docs/html/distribute/googleplay/publish/console.jd
@@ -0,0 +1,201 @@
+page.title=The Developer Console
+@jd:body
+
+
+Once you've registered and
+received verification by email, you can sign in to your Google Play Android
+Developer Console, which will be the home for your app publishing operations and
+tools on Google Play. This sections below introduce a few of the key areas
+you'll find in the Developer Console.
+
+
+
+
+
+
+
+
+Your Developer Profile
+
+
+
+
+
+
+
+
+Your developer profile identifies you to Google Play and to your customers.
+During registration you can provide information for your profile, but you can go
+back at any time to edit the information and change your settings.
+
+Your developer profile contains:
+
+- Your developer name — the name you want to show users on your product
+details page and elsewhere on Google Play.
+
- Your developer contact information — how Google can contact you if
+needed (this information isn't exposed to users.
+
- Merchant information, in-app billing information.
+- Your developer public key for licensing and In-app Billing.
+
+
+Multiple user accounts
+
+If you are working with a team, you can set up multiple user accounts to
+access different parts of your Developer Console. The first account registered
+is the account owner, with full access to all parts of the Console. The
+owner can add user accounts and manage what parts of the Console they
+have access to. For example, an owner can grant users access to publishing and
+app configuration, but not access to financial reports.
+
+Linking your Merchant Account
+
+If you want to sell apps or in-app products, you can link your Google
+Checkout Merchant account to your developer profile. Google Play uses the linked
+Checkout account for financial and tax identification and monthly payouts of
+sales.
+
+
+
+
+
+
+
+
+Your product and listing details
+
+The Developer Console lets you set up a colorful storefront page for your app
+called the product details page. Your product details page is the home
+for your app in Google Play — it's the page users see on their mobile
+phones or on the web when they want to learn about your app and download it.
+
+
+You can upload custom brand assets, screen shots, and videos to highlight
+what's great about your app, and you can provide a localized description, add
+notes about the latest version, and more. You can update your store listing at
+any time, even if you don’t have a new version of your application.
+
+Uploading and publishing
+
+From the Developer Console you can quickly upload a release-ready APK and
+publish it when you're ready. The app is a draft until you publish it,
+at which time Google Play makes your product details page and app available to
+users. You can unpublish the app at any time.
+
+Distribution Controls
+
+In the Developer Console you can manage what countries and territories the
+app is distributed to and, for some countries, you can choose what carriers you
+want to target.
+
+You can also see the list of devices that your app is currently available to,
+based on any distribution rules declared in its manifest file.
+
+Selling and pricing your Products
+
+The Developer Console gives you tools to set prices for your apps and in-app
+products. Your app can either be free to download or priced (charged before
+download).
+
+
+
+See Supported locations for distributing applications for a list of countries where you can distribute or sell your app,
+
+
+
+
+- If you publish your app as free, it must
+remain free. Free apps can be downloaded by any users in Google
+Play.
+- If you publish it as priced, you can change it to free, Priced apps can be
+purchased and downloaded only from .
+
+
+In addition, you can sell in-app products and subscriptions in your app,
+whether it is free or priced. You can set prices separately for priced apps,
+in-app products, and subscriptions.
+
+If you are selling a priced app or in-app products or subscriptions, the
+Developer Console lets you set prices in a large number of different currencies.
+When users around the world visit your product details page, they see the price
+of your app in their own currency. For most countries, the price you set is the
+final price charged to users, inclusive of taxes.
+
+To help you manage your prices, the Developer Console provides an autofill
+capability that uses recent exchange rates to populate the prices in all
+supported currencies. You can change prices for apps and in-app products at any
+time, just by saving changes in the Develoer Console.
+
+In-app Billing
+
+
+
+In-app Billing
+For details on how to implement In-app Billing, see the
+In-app Billing
+developer documentation.
+
+In-app Billing is a Google Play service that lets you monetize your apps in more ways by selling in-app products and subscriptions. In-app products are one-time purchases, while subscriptions are recurring charges on an monthly or annual basis.
+
+From the Developer Console you can create product lists for in-app
+products and subscriptions, set prices, and publish.
+
+
+
+
+
+
+
+
+User reviews and error reports
+
+Google Play makes it easy for users to submit reviews of your app for the
+benefit of other users. The reviews are also extremely important to you, since
+they give you usability feedback, support requests, and important functionality
+issues direct from your customers.
+
+The Developer console also lets you see error reports, with stack trace and
+other data, submitted automatically from Android devices, for debugging and
+improving your app.
+
+App statistics
+
+The Developer Console gives you detailed statistics on the install
+performance of your app.
+
+You can view installations of your app measured by unique users, as well as
+by unique devices. For user installations, you can view active installs, total
+installs, and daily installs and uninstalls. For devices, you can see active
+installs as well as daily installs, uninstalls, and upgrades.
+
+You can zoom into the installation numbers along several dimensions,
+including Android platform version, device, country, language, app version, and
+carrier (mobile operator). You can see the installation data for each dimension
+on a timeline charts.
+
+At a glance, these charts highlight your app’s installation peaks and
+longer-term trends, which you can correlate to promotions, app improvements, or
+other factors. You can even focus in on data inside a dimension by adding
+specific points (such as individual platform versions or languages) to the
+timeline.
+
+
+
+
+
+
+
diff --git a/docs/html/distribute/googleplay/publish/index.jd b/docs/html/distribute/googleplay/publish/index.jd
new file mode 100644
index 000000000000..5a5eaf23f44e
--- /dev/null
+++ b/docs/html/distribute/googleplay/publish/index.jd
@@ -0,0 +1,23 @@
+page.title=Publishing on Google Play
+header.hide=1
+footer.hide=1
+page.metaDescription=Get started publishing apps on Google Play.
+
+@jd:body
+
+
+
+
+
+
+ Upload apps, build your product pages, configure prices and
+ distribution, and publish. You can manage all phases of publishing
+ on Google Play through the Developer Console, from any web browser.
+
+
+
+
+
+
+
+
diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd
new file mode 100644
index 000000000000..e50d3bfb04d6
--- /dev/null
+++ b/docs/html/distribute/googleplay/publish/preparing.jd
@@ -0,0 +1,570 @@
+page.title=Publishing Checklist for Google Play
+@jd:body
+
+
+Checklist:
+
+- 1. Understand the publishing process
+- 2. Understand Google Play policies
+- 3. Determine your content rating
+- 4. Determine country distribution
+- 5. Confirm the app's overall size
+- 6. Confirm app compatibility ranges
+- 7. Decide on free or priced
+- 8. Consider In-app Billing
+- 9. Set prices for your apps
+- 10. Start localization
+- 11. Prepare promotional graphics
+- 12. Build the release-ready APK
+- 13. Complete the product details
+- 14. Use Google Play badges and links to your promotional campaigns
+- 15. Final checks and publishing
+- 16. Support users after launch
+
+
+
+
+Before you publish your app on Google Play and distribute it to users, you
+need to get the app ready, test it, and prepare your promotional materials.
+
+This document helps you understand the publishing process and get ready for a
+successful product launch on Google Play. It summarizes some of the
+tasks you'll need to complete before publishing your app on Google Play, such as
+creating a signed, release-ready APK, understanding the requirements of the app,
+and creating the product page and graphic assets for your app.
+
+The preparation and publishing tasks are numbered to give you a rough idea of
+sequence. However, you can handle the tasks in any sequence that works for you
+or you can skip steps as appropriate.
+
+As you move toward publishing, a variety of support resources are available to
+you. Relevant links are provided in each step.
+
+
+1. Understand the publishing process
+
+Before you begin the steps in this checklist, you should take a moment to
+read and understand the overall publishing workflow and become familiar with how
+the process works. In particular, you or your development team will need to
+prepare your app for release using a process common to all Android apps.
+The Publishing
+Workflow documents provide the details on how publishing works and how to
+get an APK ready for release.
+
+Once you are familiar with publishing in general, read this document to
+understand the issues that you should consider when publishing an app on Google
+Play.
+
+
+
+Related resources:
+
+- General Publishing Overview — Start here for an overview of publishing options for Android apps.
+- Preparing for Release — Developer documentation on how to build the signed, release-ready APK. This process is the same for all Android apps.
+- Publishing on Google Play — Publishing process specific to Android apps being published on Google Play.
+
+
+
+
+
+2. Understand Google Play policies and agreements
+
+Make sure that you understand and follow the Google Play program policies
+that you accepted when registering. Google Play actively enforces the policies
+and any violations can lead to suspension of your app or, for repeated
+violations, termination of your developer account.
+
+
+
+Related resources:
+
+- Policy and Best Practices
+ — Help Center document describing various content policies and processes.
+
+
+
+
+
+
+3. Determine your app's content rating
+
+Google Play requires you to set a content rating for your app, which informs
+Google Play users of its maturity level. Before you publish, you should confirm
+what rating level you want to use. The available content rating levels are:
+
+
+- Everyone
+- Low maturity
+- Medium maturity
+- High maturity
+
+
+On their Android devices, Android users can set the desired maturity level
+for browsing. Google Play then filters apps based on the setting, so the content
+rating you select can affect the app's distribution to users. You can assign (or
+change) the content rating for your app in the Developer Console, so no changes
+are required in your app binary.
+
+
+
+Related resources:
+
+- Rating your application content for Google Play — Help Center document describing content ratings levels and how to choose the appropriate one for your app.
+
+
+
+
+
+4. Determine country distribution
+
+Google Play lets you control what countries and territories your app is
+distributed to. For widest reach and the largest potential customer base, you
+would normally want to distribute to all available countries and territories.
+However, because of business needs, app requirements, or launch dependencies,
+you might want to exclude one or more countries from your distribution.
+
+It's important to determine the exact country distribution early, because it
+can affect:
+
+- The need for localized resources in the app
+- The need for a localized app description in the Developer Console
+- Legal requirements for the app that may be specific to certain
+countries
+- Time zone support, local pricing, and so on.
+
+
+With your country targeting in mind, you should assess what
+your localization needs are, both in your app and in its Google Play listing
+details, and start the work of localization well in advance of your
+launch target date.
+
+
+
+Related resources:
+
+- Supported locations for distributing applications on Google Play.
+.
+
+
+
+
+
+5. Confirm the app's overall size
+
+The overall size of your app can affect its design and how you publish it on
+Google Play. Currently, the maximum size for an APK published on Google Play is
+50 MB. If your app exceeds that size, or if you want to offer a
+secondary download, you can use APK Expansion Files,
+which Google Play will host for free on its server infrastructure and
+automatically handle the download to devices.
+
+
+- The maximum size for an APK published on Google Play is 50 MB.
+- You can use up to two (2) APK Expansion Files, each up to 2 GB in size, for
+each APK.
+
+
+Using APK Expansion files is a convenient, cost-effective method of
+distributing large apps. However, the use of APK Expansion Files requires some
+changes in your app binary, so you will need to make those changes before
+creating your release-ready APK.
+
+
+
+Related resources:
+
+- APK Expansion Files — Developer documentation describing APK Expansion Files and how to support them in your app.
+
+
+
+
+
+6. Confirm the app's platform and screen compatibility ranges
+
+Before publishing, it's important to make sure that your app is designed to
+run properly on the Android platform versions and device screen sizes that you
+want to target.
+
+
From an app-compatibility perspective, Android platform versions are defined
+by API level. You should
+confirm the minimum version that your app is compatible with (<minSdkVersion>
),
+as that will affect its distribution to Android
+devices once it is published.
+
+For screen sizes, you should confirm that the app runs properly and looks
+good on the range of screen sizes and densities that you want to support. You
+should confirm the minimum screen-size and density support that your app
+declares (<supports-screens>
),
+since that can affect its distribution to
+Android devices once it is published.
+
+To get a better understanding of the current device penetration of Android
+platform versions and screen sizes across all Android devices, see the Device Dashboard
+charts.
+
+
+
+Related resources:
+
+- Device Dashboard — A chart showing global percentages of devices by Android version, screen size, and level of OpenGL ES support.
+- Android API Levels — A definition of API Levels and a list of which Android platform versions they are associated with.
+
+
+
+
+
+7. Decide whether your app will be free or priced
+
+On Google Play, you can publish apps as free to download or priced. Free apps
+can be downloaded by any Android user in Google Play.
+Paid apps can be downloaded only by users who have registered a form of payment
+in Google Play, such as a credit card or Direct Carrier Billing.
+
+Deciding whether you app will be free or paid is important because, on Google
+Play, free apps must remain free.
+
+
+- Once you publish your app as a free app, you cannot ever change it to being
+a priced app. However, you can still sell in-app products and
+subscriptions through Google Play's In-app Billing service.
+- If you publish your app as a priced app, you can change
+it at any time to being a free app (but cannot then change it back to
+priced). You can also sell in-app products and subscriptions.
+
+
+ If your app is be priced, or if you'll be selling in-app products,
+you need set up a Checkout Merchant Account before you can publish.
+
+
+
+Related resources:
+
+- In-app Billing — Developer introduction to Google Play In-app Billing.
+
+
+
+
+
+8. Consider using In-app Billing
+
+Google Play In-app
+Billing lets you sell digital content in your applications. You can use the
+service to sell a wide range of content, including downloadable content such as
+media files or photos, and virtual content such as game levels or potions.
+In-app Billing service lets you sell one-time purchases and subscriptions from
+inside your app. This can help you to monetize the app over its installed
+lifetime.
+
+If your are looking for more ways to monetize your app and build engagement,
+you should consider In-app Billing. The service has become very popular with
+both users and developers. To use In-app Billing, you need to make changes to
+your app binary, so you will need to complete and test your implementation
+before creating your release-ready APK.
+
+
+
+Related resources:
+
+- In-app Billing — Developer documentation describing In-app Billing and how to support it in your app.
+
+
+
+
+
+9. Set prices for your products
+
+If your app is priced or you will sell in-app products, Google Play lets you
+set prices for your products in a variety of currencies, for users in markets
+around the world. You can set prices individually in different currencies, so
+you have the flexibility to adjust your price according to market conditions and
+exchange rates.
+
+Before you publish, consider how you will price your products
+and what your prices will be in various currencies. Later, you can set prices
+in all available currencies through the Developer Console.
+
+
+
+Related resources:
+
+- Selling Apps in Multiple Currencies
+ — Help Center document describing how pricing works in Google Play.
+
+- Prices and supported currencies
+ — Help Center document listing supported currencies for pricing your apps.
+
+- Transaction Fees
+ — Help Center document describing transaction fees for priced apps and in-app products.
+
+- Specifying tax rates
+ — Help Center document describing how to set tax rates for different countries.
+
+
+
+
+
+
+10. Start localization
+
+With your country targeting in mind, it's a good idea to assess your localization
+needs and start the work of localizing well in advance of your target
+launch date.
+
+There are at least two aspects of localization to consider:
+
+
+- Localizing the strings, images, and other resources in your app
+- Localizing you app's store listing details on Google Play
+
+
+To get started localizing your app, work with your development team to extract
+any resource or coded strings for translation. Also identify images, icons, or
+other assets that should be language- or locale-specific. Hand these off to
+a translator.
+
+To localize your store listing, first create and finalize your app title, description,
+and promotional text. Collect and send all of these for localization. You can optionally
+translate the "Recent Changes" text for app updates as well.
+
+When your translations are complete, move them into your app resources as needed and test
+that they are loaded properly. Save your app's translated listing details for later,
+when you upload assets and configure your product details.
+
+
+
+Related resources:
+
+- Localization — How to supply localized resources in your app.
+
+
+
+
+
+11. Prepare promotional graphics
+
+When you publish on Google Play, you can supply a variety of high-quality
+graphic assets to showcase your app or brand. After you publish, these appear on
+your product details page, in store listings and search results, and elsewhere.
+These graphic assets are key parts of a successful product details page that
+attracts and engages users, so you should consider having a professional produce
+them for you. Screen shots and videos are also very important, because they show
+what your app looks like, how it's used or played, and what makes it different.
+
+
All of your graphic assets should be designed so that they are easy to see
+and highlight your app or brand in a colorful, interesting way. The assets
+should reference the same logo and icon as users will actually find in the All
+Apps launcher once they have downloaded the app. Your graphic assets should also
+fit in well with the graphic assets of other apps published by you, which will
+be also be displayed to users on your product details page.
+
+Because these assets are so important, you should get started on them well in
+advance of your target publishing date.
+
+
+
+Related resources:
+
+- Graphic Assets for your Application
+ — Details about the graphic assets you need to upload before publishing.
+
+
+
+
+
+12. Build and upload the release-ready APK
+
+When you are satisfied that your app meets your UI, compatibility, and
+quality requirements, you can build the release-ready version of the app. The
+release-ready APK is what you you will upload to the Developer Console and
+distribute to users.
+
+
The process for preparing a release-ready APK is the same for all apps,
+regardless of how they are distributed. Generally the process includes basic code cleanup
+and optimization, building and signing with your release key, and final testing.
+When you are finished preparing your application for release, you'll have a signed
+APK file that you can upload to the Developer Console for distribution to
+users.
+
+For complete details on how to create a release-ready version of your app,
+read Preparing for
+Release.
+
+Once you have the release-ready APK in hand, you can upload it to
+the Developer Console. If necessary, you can replace the APK with a more
+recent version before publishing.
+
+
+
+Related resources:
+
+- Preparing for Release — Essential information for preparing and packaging your app properly for distribution.
+
+
+
+
+
+13. Complete the app's product details
+
+On Google Play, your app's product information is shown to users on its
+product details page, the page that users visit to learn more about your app and
+the page from which they will decide to purchase or download your app, on their
+Android devices or on the web.
+
+Google Play gives you a variety of ways to promote your app and engage with
+users on your product details page, from colorful graphics, screenshots, and
+videos to localized descriptions, release details, and links to your other apps.
+As you prepare to publish your app, make sure that you take advantage of all
+that your product details page can offer, making your app as compelling as
+possible to users.
+
+You should begin planning your product page in advance of your target launch
+date, arranging for localized description, high-quality graphic assets,
+screenshots and video, and so on.
+
+As you get near your target publishing date, you should become familiar with
+all the fields, options, and assets associated with the product details configuration
+page in the Developer Console. As you collect the information and assets for the
+page, make sure that you can enter or upload it to the Developer Console, until
+the page is complete and ready for publishing.
+
+
+
+Related resources:
+
+- Your Product Page — Tips and details on creating your product details page.
+- Category types
+ — Help Center document listing available categories for apps.
+- Graphic Assets for your Application
+ — Help Center document describing the various graphics you can add to your product listing.
+
+
+
+
+
+14. Use Google Play badges and links in your promotional
+campaigns
+
+Google Play badges give you an officially branded way of promoting your app
+to Android users. Use the Google Play Badge
+generator to quickly create badges to link users to your products from web
+pages, ads, reviews, and more. You can also use special link formats
+to link directly to your product details page, to a list of your products, or to
+search results.
+
+To help your app get traction after launch, it's strongly recommended that you support
+launch with a promotional campaign that announces your product through many channels as
+possible, in as many countries as possible. For example, you can promote the launch
+using ad placements, social network or blog posts, video and other media, interviews
+and reviews, or any other channel available.
+
+
+
+Related resources:
+
+- Google Play Badges — Generate a badge to bring users to your app in Google Play.
+- Linking to Your Products — Link formats that you can use to bring users to your app in Google Play.
+
+
+
+
+
+15. Final checks and publishing
+
+When you think you are ready to publish, sign in to the Developer Console and take a few moments for a few
+final checks:
+
+Make sure that:
+
+
+- Your developer profile has the correct information and is linked to the proper Google Checkout Merchant account (if you are selling products).
+- You have the right version of the app uploaded.
+- All parts of your Product Details are ready, including all graphic assets, screenshots, video, localized descriptions, and so on.
+- You have set your app's pricing to free or priced.
+- You have set country (and carrier) targeting and priced your products (if appropriate) in buyer currencies
+- "Compatible devices" shows that your app is actually reaching the devices that you are targeting. If not, you should check with your development team on the apps requirements and filtering rules.
+- You have provided the correct link to your web site and the correct support email address.
+- Your app does not violate content policy guidelines.
+- You have acknowledged that your app meets the guidelines for Android content on Google Play and also US export laws.
+
+
+Your app is now ready to publish!
+
+If you are releasing an update, make sure to read the requirements for publishing updates.
+
+When you are ready, click the Publish button in the Developer Console. Within a few hours, your app will become available to users and your product page will be appear in Google Play for browsing, searching, or linking from your promotional campaigns.
+
+
+
+Related resources:
+
+- Google Play Developer Program Policies — Guidelines for what is acceptable conent in Google Play. Please read and understand the policies before publishing.
+- Updates — Requirements for app updates in Google Play.
+- Developer Support — Support resources that you can use to find answers and report issues.
+
+
+
+
+
+
+16. Support users after launch
+
+After you publish an app or an app update, it's crucial for you to support
+your customers. Prompt and courteous support can provide a better experience for
+users that results in better ratings and more positive reviews for your
+products. Users are likely to be more engaged with your app and recommend it if
+you are responsive to their needs and feedback. This is especially true after
+publishing if you are using a coordinated promotional campaign.
+
+There are a number of ways that you can keep in touch with users and offer
+them support. The most fundamental is to provide your support email
+address on your product details page. Beyond that, you can provide support
+in any way you choose, such as a forum, mailing list or a Google+ page. The
+Google Play team does provide user support for downloading, installing and
+payments issues, but issues that fall outside of these topics will fall under
+your domain. Examples of issues you can support include: feature requests,
+questions about using the app and questions about compatibility settings.
+
+After publishing, plan to:
+
+- Check your ratings and reviews frequently on your app's product details
+page. Watch for recurring issues that could signal bugs or other issues.
+- Be mindful of new Android platform version launches, as compatibility
+settings for your apps might need to be updated.
+- Put a link to your support resources on your web site and set up any other
+support such as forums.
+- Provide an appropriate support email address on your product details page
+and respond to users when they take the time to email you.
+- Beyond the automatic refund window offered by Google Play, be generous with
+your own refund policy, as satisfied users will be more likely to purchase in
+the future.
+- Acknowledge and fix issues in your app. It helps to be transparent and
+list known issues on your product details page proactively.
+- Publish updates as frequently as you are able, without sacrificing quality
+or annoying users with too-frequent updates.
+- With each update, make sure to provide a summary of what's changed. You can
+enter this information in the Developer Console. Users will read it and
+appreciate that you are serious about improving the quality of your app.
+
+
+
+
+Related resources:
+
+- Supporting your users
+ — Help Center document describing options for supporting users.
+- In-app Billing — Help Center document describing how to correctly set up In-app Billing.
+- Issuing Refunds — -- Help Center document describing how to issue refunds.
+
+
+
+
+
+
+
diff --git a/docs/html/distribute/googleplay/publish/register.jd b/docs/html/distribute/googleplay/publish/register.jd
new file mode 100644
index 000000000000..7ca66969e733
--- /dev/null
+++ b/docs/html/distribute/googleplay/publish/register.jd
@@ -0,0 +1,72 @@
+page.title=Get Started with Publishing
+@jd:body
+
+
+
+Help topics
+
+ - Developer Registration
+ - Supported Locations for Distributing Apps
+ - Policy and Best Practices
+ - Developer Support
+
+
+Get Started
+
+
+
+
+
+You can set up to start publishing on Google Play in only a few minutes. Here's how you do it:
+
+
+- Register for a Google Play publisher account
+- If you will sell apps, set up a Google Checkout Merchant Account
+- Explore the Google Play Android Developer Console and learn about the tools for publishing
+
+
+
+Register for a publisher account
+
+The first step is to visit the Google Play Android Developer Console and register for a publisher account.
+
+Here's what you will do during registration:
+
+
+
+Tips
+
+ - You need a Google account to register. You can create one during the process.
+ - If you are an organization, consider registering a new Google account rather than using a personal account.
+ - Review the developer countries and merchant countries where you can distribute and sell apps.
+
+
+
+
+
+- Visit the Google Play Android Developer Console at https://play.google.com/apps/publish/.
+
- Enter basic information about your developer identity — developer name, email address, and so on. You can modify this information later.
+- Read and accept the Developer Distribution Agreement that applies to your country or region. Note that apps and store listings that you publish on Google Play must comply with the Developer Program Policies and US export law,
+- Pay a $25 USD registration fee using Google Checkout. If you don't have a Google Checkout account, you can quickly set one up during the process.
+
+
+When your registration is verified, you’ll be notified at the email address you specified during registration.
+
+Set up a Google Checkout Merchant account
+
+If you want to sell products on Google Play — priced apps, in-app products, or subscriptions — you will also need to set up a Google Checkout Merchant Account. You can do that at any time, but make sure to first review the list of merchant countries.
+
+To set up a Merchant account from the Developer Console:
+
+
+- Sign in to your Google Play Android Developer Console at https://play.google.com/apps/publish/
+
- Click on the "Edit profile" link.
+
- Select "Setup a Merchant Account at Google Checkout".
+
+
+This will take you to the Google Checkout site to sign up as a Merchant; you'll need to have information about your business handy to complete this step.
+
+Explore the Developer Console
+When your registration is verified, you can sign in to your Android Developer Console, which will be the home for your app publishing operations and tools on Google Play.
diff --git a/docs/html/distribute/googleplay/strategies/app-quality.jd b/docs/html/distribute/googleplay/strategies/app-quality.jd
new file mode 100644
index 000000000000..26d71d751bf0
--- /dev/null
+++ b/docs/html/distribute/googleplay/strategies/app-quality.jd
@@ -0,0 +1,116 @@
+page.title=Improving App Quality
+@jd:body
+
+
+
+
+
+
+With thousands of new apps being published in Google Play every week, it's important to look for any available way to get the most visibility and the highest ratings possible. One way of improving your app's visibility in the ecosystem is by deploying well-targeted mobile advertising campaigns and cross-app promotions. Another time-tested method of fueling the impression-install-ranking cycle is simply: improve the product!
+
+A better app can go a very long way: a higher quality app will translate to higher user ratings, generally better rankings, more downloads, and higher retention (longer install periods). High-quality apps also have a much higher likelihood of getting some unanticipated positive publicity such as being featured in Google Play or getting social media buzz.
+
+The upside to having a higher-quality app is obvious. However, it's not always clear how to make an app "better". The path to improving app quality isn't always well-lit. The term "quality" — along with "polish" and "fit and finish" — aren't always well-defined. Here we'll light the path by looking at some of the key factors in app quality and ways of improving your app along these dimensions.
+
+Listen to Your Users
+
+Most ways of measuring the "success" of an app are dependent on user behavior. User-related metrics such as number of downloads, daily active installs, retention rates, and so on highlight the importance of users. If you aren't doing so already, it's a good idea to start thinking of your app's quality as it relates to your users.
+
+The most obvious way to listen to users is by reading and addressing comments on your app in Google Play. Although the comments aren't always productive or constructive, some will provide valuable insight on aspects of your app that you may not have consciously considered before. It's important to remember that users have the opportunity to change their ratings and comments about an app as much as they'd like.
+
+One way to reach users and help them address their concerns is to set up your own support and discussion destination(s). There are some great support tools out there that can put you in touch with your users directly such as Google Groups, Zoho Discussions, getsatisfaction.com and uservoice.com. Once you get set up with such a tool, make sure to fill in the support link in your Google Play product details page — users do click through to these.
+
+Another way to better listen to your users is by having a public beta or trusted tester program. It's crucial to have some amount of real user testing before releasing something in Google Play. Fortunately, you can distribute your apps to users outside of Google Play via a website; this website can require a login or be publicly accessible — it's entirely up to you. Take advantage of this opportunity by offering your next planned update to some early adopters, before submitting to Google Play. You'll be surprised by how many little, yet impactful, improvements can come out of crowd-sourced, real-user testing.
+
+
+Improve Stability and Eliminate Bugs
+
+
+The effect of overall app stability of ratings and user satisfaction is very well-known and there are many tools and techniques for testing and profiling your app on different devices and user scenarios.
+
+One noteworthy and yet relatively underused tool for catching stability issues such as crashes is the UI/Application Exerciser Monkey (Monkey). Monkey will send random UI events to your app's activities, allowing you to trigger user flows that can uncover stability problems.
+
+Also, with the Google error-reporting features built into most Android devices, users now have a way to report application crashes to developers. The error reports show up in aggregate in the Google Play Developer Console. Make sure to read these reports often and act on them appropriately.
+
+Last, keep an external bug and feature request tracker and let users know how to find it. This will enable them to engage with the app at a closer level, by following features and bugs that affect them. User frustration with app problems can be effectively managed with diligent issue tracking and communication. Some of the community support tools listed above offer issue tracking features, and if your project is open source, most popular repository hosting sites such as Google Code and GitHub will offer this as well.
+
+Improve UI Responsiveness
+
+One sure-fire way to lose your users is to give them a slow, unresponsive UI. Research has shown that speed matters... for any interface, be it desktop, web, or mobile. In fact, the importance of speed is amplified on mobile devices since users often need their information on the go and in a hurry.
+
+You can improve your apps's UI responsiveness by moving long-running operations off the main thread to worker threads. Android offers built-in debugging facilities such as StrictMode for analyzing your app's performance and activities on the main thread. You can see more recommendations in Writing Zippy Android Apps, a developer session from Google I/O 2010,
+
+
+
+
+More resources
+
+
+
+A great way to improve UI performance is to minimize the complexity of your layouts. If you open up hierarchyviewer and see that your layouts are more than 5 levels deep, it may be time to simplify your layout. Consider refactoring those deeply nested LinearLayouts into RelativeLayout. The impact of View objects is cumulative — each one costs about 1 to 2 KB of memory, so large view hierarchies can be a recipe for disaster, causing frequent VM garbage collection passes which block the main (UI) thread. You can learn more in World of ListView, another session at Google I/O.
+
+Lastly, pointed out in the blog post Traceview War Story, tools like traceview and ddms can be your best friends in improving your app by profiling method calls and monitoring VM memory allocations, respectively.
+
+
+Improve Usability
+
+In usability and in app design too, you should listen carefully to your users. Ask a handful of real Android device users (friends, family, etc.) to try out your app and observe them as they interact with it. Look for cases where they get confused, are unsure of how to proceed, or are surprised by certain behaviors. Minimize these cases by rethinking some of the interactions in your app, perhaps working in some of the user interface patterns the Android UI team discussed at Google I/O.
+
+In the same vein, two problems that can plague some Android user interfaces are small tap targets and excessively small font sizes. These are generally easy to fix and can make a big impact on usability and user satisfaction. As a general rule, optimize for ease of use and legibility, while minimizing, or at least carefully balancing, information density.
+
+
+
+More resources
+
+As you are designing or evaluating your app's UI, make sure to read and become familiar with the Android Design guidelines. Included are many examples of UI patterns, styles, and building blocks, as well as tools for the design process.
+
+
+
+
+Another way to incrementally improve usability, based on real-world data, is to implement Analytics throughout your app to log usage of particular sections. Consider demoting infrequently used sections to the overflow menu in the Action bar, or removing them altogether. For often-used sections and UI elements, make sure they're immediately obvious and easily accessible in your app's UI so that users can get to them quickly.
+
+Lastly, usability is an extensive and well-documented subject, with close ties to interface design, cognitive science, and other disciplines.
+
+Professional Appearance and Aesthetics
+
+There's no substitute for a real user interface designer — ideally one who's well-versed in mobile and Android, and ideally handy with both interaction and visual design. One popular venue to post openings for designers is jobs.smashingmagazine.com, and leveraging social connections on Twitter and LinkedIn can surface great talent.
+
+If you don't have the luxury of working with a UI designer, there are some ways in which you can improve your app's appearance yourself. First, get familiar with Adobe Photoshop, Adobe Fireworks, or some other raster image editing tool. Mastering the art of the pixel in these apps takes time, but honing this skill can help build polish across your interface designs. Also, master the resources framework by studying the framework UI assets and layouts and reading through the new resources documentation. Techniques such as 9-patches and resource directory qualifiers are somewhat unique to Android, and are crucial in building flexible yet aesthetic UIs.
+
+Before you get too far in designing your app and writing the code, make sure to visit the Android Design site and learn about the vision, the building blocks, and the tools of designing beautiful and inspiring user interfaces.
+
+Deliver the Right Set of Features
+
+Having the right set of features in your app is important. It's often easy to fall into the trap of feature-creep, building as much functionality into your app as possible. Providing instant gratification by immediately showing the most important or relevant information is crucial on mobile devices. Providing too much information can be as frustrating (or even more so) than not providing enough of it.
+
+Again, listen to your users by collecting and responding to feature requests. Be careful, though, to take feature requests with a grain of salt. Requests can be very useful in aggregate, to get a sense of what kinds of functionality you should be working on, but not every feature request needs to be implemented.
+
+Integrate with the System and Third-Party apps
+
+A great way to deliver a delightful user experience is to integrate tightly with the operating system. Features like Home screen widgets, rich notifications, global search integration, and {@link android.widget.QuickContactBadge Quick Contacts} are fairly low-hanging fruit in this regard.
+
+For some app categories, basic features like home screen widgets are par for the course. Not including them is a sure-fire way to tarnish an otherwise positive user experience. Some apps can achieve even tighter OS integration with Android's contacts, accounts, and sync APIs.
+
+Third-party integrations can provide even more user delight and give the user a feeling of device cohesiveness. It's also a really nice way of adding functionality to your app without writing any extra code (by leveraging other apps' functionalities). For example, if you're creating a camera app, you can allow users to edit their photos in Photoshop Express before saving them to their collection, if they have that third-party application installed. More information on this subject is available in the class, Interacting with Other Apps.
+
+Pay Attention to Details
+
+One particular detail to pay close attention to is your app's icon quality and consistency. Make sure your app icons (especially your launcher icon) are crisp and pixel-perfect at all resolutions, and follow the icon guidelines as much as possible. If you're having trouble or don't have the resources to design the icons yourself, consider using the new Android Asset Studio tool to generate a set.
diff --git a/docs/html/distribute/googleplay/strategies/featuring.jd b/docs/html/distribute/googleplay/strategies/featuring.jd
new file mode 100644
index 000000000000..4c4e67e1dc4f
--- /dev/null
+++ b/docs/html/distribute/googleplay/strategies/featuring.jd
@@ -0,0 +1,4 @@
+page.title=Preparing for Featuring
+@jd:body
+
+Placeholder...
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/strategies/index.jd b/docs/html/distribute/googleplay/strategies/index.jd
new file mode 100644
index 000000000000..3794bbfcac2a
--- /dev/null
+++ b/docs/html/distribute/googleplay/strategies/index.jd
@@ -0,0 +1,33 @@
+page.title=Success Strategies
+page.metaDescription=
+header.hide=1
+footer.hide=1
+
+@jd:body
+
+
+
+
+
+
+
+ Strategies for building ratings, improving reviews, monetizing, and more.
+
+ Preparing for Featuring
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/html/distribute/index.jd b/docs/html/distribute/index.jd
new file mode 100644
index 000000000000..ffdeb2f26706
--- /dev/null
+++ b/docs/html/distribute/index.jd
@@ -0,0 +1,39 @@
+page.title=Distribute Apps
+header.hide=1
+
+@jd:body
+
+
+
+
+
+
+
+
+
+
+
+ Introducing Google Play
+ The most visited store in the world for Android apps. Cloud-connected and always synced, it's never been easier for users to find and download your apps.
+
+
+
+
+
+
+ Growth Engine
+ A billion downloads a month and growing. Get your apps in front of millions of users at Google's scale.
+ Read More ›
+ Build Your Business
Sell your app in over 130 countries. Flexible monetization options with in-app purchase, subscriptions, and more.
+ Read More ›
+ Distribution Control
Deliver your apps to the users you want, on the devices you want, on your schedule.
+ Read More ›
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/distribute/open.jd b/docs/html/distribute/open.jd
new file mode 100644
index 000000000000..edcfc9c8afe2
--- /dev/null
+++ b/docs/html/distribute/open.jd
@@ -0,0 +1,107 @@
+page.title=Open Distribution
+@jd:body
+
+As an open platform, Android offers choice. You
+distribute your Android apps to users in any way you want, using any
+distribution approach or combination of approaches that meets your needs.
+From publishing in an app marketplace to serving your apps from a web site or
+emailing them directly users, you are never locked into any
+particular distribution platform.
+
+The process for building and packaging your app for distribution is the same,
+regardless of how you will distribute your app. This saves you time and lets you
+automate parts of the process as needed. You can read Preparing
+for Release for more information.
+
+The sections below highlight some of the alternatives for distributing
+your apps to users.
+
+Distributing through an App Marketplace
+
+Usually, to reach the broadest possible audience, you would distribute your
+apps through a marketplace, such as Google Play.
+
+Google Play is the premier marketplace for Android apps and is particularly
+useful if you want to distribute your applications to a large global audience.
+However, you can distribute your apps through any app marketplace you want or
+you can use multiple marketplaces.
+
+Distributing your application through email
+
+
+
+
+
+
+The easiest and quickest way to release your application is to send it to users through
+email. To do this, you prepare your application for release and then attach it to an email
+and send it to a user. When users open your email message on their Android-powered device,
+the Android system will recognize the APK and display an Install Now
+button in the email message (see figure 1). Users can install your application by touching the
+button.
+
+Note: The Install Now button
+shown in Figure 1 appears only if users have configured their device to allow
+installation from unknown sources and have opened your
+email with the native Gmail application.
+
+Distributing applications through email is convenient if you are sending your application to
+only a few trusted users, but it provides few protections from piracy and unauthorized
+distribution; that is, anyone you send your application to can simply forward it to someone else.
+
+Distributing through a web site
+
+If you do not want to release your app on a marketplace like Google Play, you
+can make the app available for download on your own website or server, including
+on a private or enterprise server. To do this, you must first prepare your
+application for release in the normal way. Then all you need to do is host the
+release-ready APK file on your website and provide a download link to users.
+
+
+When users browse to the download link from their Android-powered devices,
+the file is downloaded and Android system automatically starts installing it on
+the device. However, the installation process will start automatically only if
+users have configured their Settings to allow the installation of apps from
+unknown sources.
+
+Although it is relatively easy to release your application on your own
+website, it can be inefficient. For example, if you want to monetize your
+application you will have to process and track all financial transactions
+yourself and you will not be able to use Google Play's In-app Billing service
+to sell in-app products. In addition, you will not be able to use the Licensing service to
+help prevent unauthorized installation and use of your application.
+
+
+User Opt-In for Apps from Unknown Sources
+
+
+
+
+
+
+Android protects users from inadvertent download and install of apps from
+locations other than Google Play (which is trusted). It blocks such installs
+until the user opts-in Unknown sources in
+Settings > Security, shown in Figure 2. To allow
+the installation of applications from other sources, users need to enable the
+Unknown sources setting on their devices, and they need to make this
+configuration change before they download your application to their
+devices.
+
+Note that some network providers do not allow users to install
+applications from unknown sources.
+
+
diff --git a/docs/html/favicon-a.ico b/docs/html/favicon-a.ico
new file mode 100644
index 0000000000000000000000000000000000000000..d8884b792b29f4650ee03fdf313476b7e751eb90
GIT binary patch
literal 1150
zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x$gfiO1%0|?U!ELq(49~Xw%i7XEj
z1JTIh*w`?&$a2`kkmZrt*wli=kk!E0Ftyldm>Lj`O+Pk0$YS{PBdf#39?tqz
zAeEF9g%pL9fB=nF6a)gG1e6wp(1L_$kV#;Gre8@(2&fk%qsRy{7RU!Om6U$YXJCNg
h2kZvYhz#zuJz@P!dKp~(AL>x$gfiO1%0|?U!ELq(49~Xw%i7XEj
z1JTIh*w`?&$a2`kkmZrt*wli=kk!E0Ftyldm>Lj`O+Pk0$YS{PBdf#39?tq
For more information about intents, see the Intents and Intent Filters.
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters.
diff --git a/docs/html/guide/appendix/glossary.jd b/docs/html/guide/appendix/glossary.jd
index 06fdef286dac..94cb0f08433b 100644
--- a/docs/html/guide/appendix/glossary.jd
+++ b/docs/html/guide/appendix/glossary.jd
@@ -42,7 +42,7 @@ page.title=Glossary
SDK. It provides tools to browse the device, copy tools on the device, and
forward ports for debugging. If you are developing in Eclipse using the
ADT Plugin, adb is integrated into your development environment. See
- Android Debug Bridge
+ Android Debug Bridge
for more information.
- Application
@@ -91,7 +91,7 @@ page.title=Glossary
with the SDK. It provides screen capture, log dump, and process
examination capabilities. If you are developing in Eclipse using the ADT
Plugin, DDMS is integrated into your development environment. See Using DDMS to learn more about the program.
+ href="{@docRoot}tools/debugging/ddms.html">Using DDMS to learn more about the program.
- Dialog
- A floating window that that acts as a lightweight
form. A dialog can have button controls only and is intended to perform a
@@ -131,7 +131,7 @@ page.title=Glossary
is responsible for resolving the best-available receiver for each Intent,
based on the criteria supplied in the Intent and the Intent Filters
defined by other applications. For more information, see Intents and
+ href="{@docRoot}guide/components/intents-filters.html">Intents and
Intent Filters.
Related: Intent Filter, Broadcast Receiver.
@@ -145,7 +145,7 @@ page.title=Glossary
available intent filters in all applications and passes the Intent to the
application/activity that best matches the Intent and criteria. For more
information, see Intents and
+ href="{@docRoot}guide/components/intents-filters.html">Intents and
Intent Filters.
Related: Intent, Broadcast Receiver.
diff --git a/docs/html/guide/appendix/install-location.jd b/docs/html/guide/appendix/install-location.jd
index 63a3817e7c9f..19c4b3900ef1 100644
--- a/docs/html/guide/appendix/install-location.jd
+++ b/docs/html/guide/appendix/install-location.jd
@@ -174,7 +174,7 @@ external storage, it can never receive this broadcast.
- Copy Protection
- Your application cannot be installed to a device's SD card if it uses Google Play's
Copy Protection feature. However, if you use Google Play's
- Application Licensing instead, your
+ Application Licensing instead, your
application can be installed to internal or external storage, including SD cards.
@@ -198,7 +198,7 @@ applications that should allow installation on external storage, because games d
provide additional services when inactive. When external storage becomes unavailable and a game
process is killed, there should be no visible effect when the storage becomes available again and
the user restarts the game (assuming that the game properly saved its state during the normal
-Activity lifecycle).
+Activity lifecycle).
If your application requires several megabytes for the APK file, you should
carefully consider whether to enable the application to install on the external storage so that
diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index 137f13811d11..93e813662249 100644
--- a/docs/html/guide/appendix/media-formats.jd
+++ b/docs/html/guide/appendix/media-formats.jd
@@ -268,9 +268,9 @@ no dither applied for 24-bit.
- SD (Low quality)
- SD (High quality)
- HD (Not available on all devices)
+ SD (Low quality)
+ SD (High quality)
+ HD (Not available on all devices)
diff --git a/docs/html/guide/topics/fundamentals/activities.jd b/docs/html/guide/components/activities.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/activities.jd
rename to docs/html/guide/components/activities.jd
index b79136cbb8c0..36f651f04c03 100644
--- a/docs/html/guide/topics/fundamentals/activities.jd
+++ b/docs/html/guide/components/activities.jd
@@ -40,8 +40,7 @@ page.title=Activities
See also
@@ -65,7 +64,7 @@ in a stack (the "back stack"). When a new activity starts, it is pushed onto the
takes user focus. The back stack abides to the basic "last in, first out" stack mechanism,
so, when the user is done with the current activity and presses the Back button, it
is popped from the stack (and destroyed) and the previous activity resumes. (The back stack is
-discussed more in the Tasks
+discussed more in the Tasks
and Back Stack document.)
When an activity is stopped because a new activity starts, it is notified of this change in state
@@ -224,7 +223,7 @@ href="{@docRoot}guide/topics/manifest/data-element.html">{@code
respond.
For more information about how your activities can respond to intents, see the Intents and Intent Filters
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters
document.
@@ -329,7 +328,7 @@ the Content Providers document.
For more information about using intents, see the Intents and Intent
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
Filters document.
@@ -602,7 +601,7 @@ from the time {@link android.app.Activity#onPause onPause()} returns to the time
definition in table 1 might still be killed by the system—but that would happen only in
extreme circumstances when there is no other recourse. When an activity might be killed is
discussed more in the Processes and
+href="{@docRoot}guide/components/processes-and-threads.html">Processes and
Threading document.
@@ -772,6 +771,6 @@ android.app.Activity#onStop onStop()}.
For more information about how Android maintains a history of activities and
enables user multitasking, continue with the Tasks and Back
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
Stack document.
-->
\ No newline at end of file
diff --git a/docs/html/guide/topics/fundamentals/bound-services.jd b/docs/html/guide/components/bound-services.jd
similarity index 97%
rename from docs/html/guide/topics/fundamentals/bound-services.jd
rename to docs/html/guide/components/bound-services.jd
index ec7d7230d90e..b6a251286c05 100644
--- a/docs/html/guide/topics/fundamentals/bound-services.jd
+++ b/docs/html/guide/components/bound-services.jd
@@ -42,7 +42,7 @@ perform interprocess communication
See also
@@ -54,7 +54,7 @@ application component and does not run in the background indefinitely.
This document shows you how to create a bound service, including how to bind
to the service from other application components. However, you should also refer to the Services document for additional
+href="{@docRoot}guide/components/services.html">Services document for additional
information about services in general, such as how to deliver notifications from a service, set
the service to run in the foreground, and more.
@@ -71,7 +71,7 @@ clients can use to interact with the service.
Binding to a Started Service
-As discussed in the Services
+
As discussed in the Services
document, you can create a service that is both started and bound. That is, the service can be
started by calling {@link android.content.Context#startService startService()}, which allows the
service to run indefinitely, and also allow a client to bind to the service by calling {@link
@@ -170,7 +170,7 @@ can then extend within your service.
create a bound service, because it may require multithreading capabilities and
can result in a more complicated implementation. As such, AIDL is not suitable for most applications
and this document does not discuss how to use it for your service. If you're certain that you need
-to use AIDL directly, see the AIDL
+to use AIDL directly, see the AIDL
document.
@@ -341,7 +341,7 @@ service, which must then handle multi-threading.
For most applications, the service doesn't need to perform multi-threading, so using a {@link
android.os.Messenger} allows the service to handle one call at a time. If it's important
that your service be multi-threaded, then you should use AIDL to define your interface.
+href="{@docRoot}tools/aidl.html">AIDL to define your interface.
@@ -625,7 +625,7 @@ multiple activities in your application bind to the same service and there is a
two of those activities, the service may be destroyed and recreated as the current activity unbinds
(during pause) before the next one binds (during resume). (This activity transition for how
activities coordinate their lifecycles is described in the Activities
+href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Activities
document.)
@@ -668,7 +668,7 @@ onRebind()} returns void, but the client still receives the {@link android.os.IB
Below, figure 1 illustrates the logic for this kind of lifecycle.
For more information about the lifecycle of an started service, see the Services document.
+href="{@docRoot}guide/components/services.html#Lifecycle">Services document.
diff --git a/docs/html/guide/topics/fundamentals/fragments.jd b/docs/html/guide/components/fragments.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/fragments.jd
rename to docs/html/guide/components/fragments.jd
index 2a223946726f..938e0ab02ea6 100644
--- a/docs/html/guide/topics/fundamentals/fragments.jd
+++ b/docs/html/guide/components/fragments.jd
@@ -73,7 +73,7 @@ you can reuse in different activities).
affected by the host activity's lifecycle. For example, when the activity is paused, so are all
fragments in it, and when the activity is destroyed, so are all fragments. However, while an
activity is running (it is in the resumed lifecycle state), you can
+href="{@docRoot}guide/components/activities.html#Lifecycle">lifecycle state), you can
manipulate each fragment independently, such as add or remove them. When you perform such a
fragment transaction, you can also add it to a back stack that's managed by the
activity—each back stack entry in the activity is a record of the fragment transaction that
@@ -499,7 +499,7 @@ usually not necessary unless the transaction is a dependency for jobs in other t
Caution: You can commit a transaction using {@link
android.app.FragmentTransaction#commit commit()} only prior to the activity saving its
+href="{@docRoot}guide/components/activities.html#SavingActivityState">saving its
state (when the user leaves the activity). If you attempt to commit after that point, an
exception will be thrown. This is because the state after the commit can be lost if the activity
needs to be restored. For situations in which its okay that you lose the commit, use {@link
@@ -690,14 +690,14 @@ either {@link android.app.Fragment#onCreate onCreate()}, {@link
android.app.Fragment#onCreateView onCreateView()}, or {@link
android.app.Fragment#onActivityCreated onActivityCreated()}. For more information about saving
state, see the Activities
+href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities
document.
The most significant difference in lifecycle between an activity and a fragment is how one is
stored in its respective back stack. An activity is placed into a back stack of activities
that's managed by the system when it's stopped, by default (so that the user can navigate back
to it with the Back button, as discussed in Tasks and Back Stack).
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack).
However, a fragment is placed into a back stack managed by the host activity only when you
explicitly request that the instance be saved by calling {@link
android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} during a transaction that
@@ -705,7 +705,7 @@ removes the fragment.
Otherwise, managing the fragment lifecycle is very similar to managing the activity
lifecycle. So, the same practices for managing the activity
+href="{@docRoot}guide/components/activities.html#Lifecycle">managing the activity
lifecycle also apply to fragments. What you also need to understand, though, is how the life
of the activity affects the life of the fragment.
diff --git a/docs/html/guide/topics/fundamentals.jd b/docs/html/guide/components/fundamentals.jd
similarity index 96%
rename from docs/html/guide/topics/fundamentals.jd
rename to docs/html/guide/components/fundamentals.jd
index a86d905ad2ce..1717782129b4 100644
--- a/docs/html/guide/topics/fundamentals.jd
+++ b/docs/html/guide/components/fundamentals.jd
@@ -123,7 +123,7 @@ activities (if the email application allows it). For example, a camera applicati
activity in the email application that composes new mail, in order for the user to share a picture.
An activity is implemented as a subclass of {@link android.app.Activity} and you can learn more
-about it in the Activities
+about it in the Activities
developer guide.
@@ -138,7 +138,7 @@ blocking user interaction with an activity. Another component, such as an activi
service and let it run or bind to it in order to interact with it.
A service is implemented as a subclass of {@link android.app.Service} and you can learn more
-about it in the Services developer
+about it in the Services developer
guide.
@@ -262,11 +262,11 @@ android.content.ContentProvider#query query()} on a {@link android.content.Conte
For more information about using intents, see the Intents and
+href="{@docRoot}guide/components/intents-filters.html">Intents and
Intent Filters document. More information about activating specific components is also provided
in the following documents: Activities, Services, {@link
+href="{@docRoot}guide/components/activities.html">Activities, Services, {@link
android.content.BroadcastReceiver} and Content Providers.
@@ -283,7 +283,7 @@ such as:
- Identify any user permissions the application requires, such as Internet access or
read-access to the user's contacts.
- - Declare the minimum API Level
+
- Declare the minimum API Level
required by the application, based on which APIs the application uses.
- Declare hardware and software features used or required by the application, such as a camera,
bluetooth services, or a multitouch screen.
@@ -380,7 +380,7 @@ activity and launches it when you invoke the intent with {@link android.app.Acti
startActivity()}.
For more about creating intent filters, see the Intents and Intent Filters document.
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters document.
@@ -396,7 +396,7 @@ them, but external services such as Google Play do read them in order to provide
for users when they search for applications from their device.
For example, if your application requires a camera and uses APIs introduced in Android 2.1 (API Level 7), you should declare these as
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level 7), you should declare these as
requirements in your manifest file. That way, devices that do not have a camera and have an
Android version lower than 2.1 cannot install your application from Google Play.
@@ -450,7 +450,7 @@ element.
such as Android 1.6 or Android 2.3. Each successive version often includes additional APIs not
available in the previous version. In order to indicate which set of APIs are available, each
platform version specifies an API Level (for example, Android 1.0 is API Level
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level (for example, Android 1.0 is API Level
1 and Android 2.3 is API Level 9). If you use any APIs that were added to the platform after
version 1.0, you should declare the minimum API Level in which those APIs were introduced using the
{@code <uses-sdk>}
@@ -463,7 +463,7 @@ applications are available on each device. As such, your application should be a
devices that meet all your application requirements.
For more information about how Google Play filters applications based on these (and other)
-requirements, see the Filters on Google Play
+requirements, see the Filters on Google Play
document.
@@ -514,5 +514,5 @@ href="{@docRoot}guide/topics/resources/index.html">Application Resources dev
For a close look at implementing activities—the components your users use to
interact with your application—continue with the Activities document.
+href="{@docRoot}guide/components/activities.html">Activities document.
-->
diff --git a/docs/html/guide/components/index.jd b/docs/html/guide/components/index.jd
new file mode 100644
index 000000000000..87bae53bf22a
--- /dev/null
+++ b/docs/html/guide/components/index.jd
@@ -0,0 +1,56 @@
+page.title=App Components
+page.landing=true
+page.landing.intro=Android's application framework lets you create extremely rich and innovative apps using a set of reusable components. This section explains how Android apps work and how you use components to build them.
+page.landing.image=images/develop/app_components.png
+
+@jd:body
+
+
+
+
+ Blog Articles
+
+
+ Using DialogFragments
+ In this post, I’ll show how to use DialogFragments with the v4 support library (for backward compatibility on pre-Honeycomb devices) to show a simple edit dialog and return a result to the calling Activity using an interface.
+
+
+
+ Fragments For All
+ Today we’ve released a static library that exposes the same Fragments API (as well as the new LoaderManager and a few other classes) so that applications compatible with Android 1.6 or later can use fragments to create tablet-compatible user interfaces.
+
+
+
+ Multithreading for Performance
+ A good practice in creating responsive applications is to make sure your main UI thread
+does the minimum amount of work. Any potentially long task that may hang your application should be
+handled in a different thread.
+
+
+
+
+ Training
+
+
+ Managing the Activity Lifecycle
+ This class explains important lifecycle callback methods that each Activity
+ instance receives and how you can use them so your activity does what the user expects and does not consume system
+ resources when your activity doesn't need them.
+
+
+
+ Building a Dynamic UI with Fragments
+ This class shows you how to create a dynamic user experience with fragments and optimize
+your app's user experience for devices with different screen sizes, all while continuing to support
+devices running versions as old as Android 1.6.
+
+
+
+ Sharing Content
+ This class covers some common ways you can send and receive content between
+ applications using Intent APIs and the ActionProvider object.
+
+
+
+
diff --git a/docs/html/guide/topics/intents/intents-filters.jd b/docs/html/guide/components/intents-filters.jd
similarity index 100%
rename from docs/html/guide/topics/intents/intents-filters.jd
rename to docs/html/guide/components/intents-filters.jd
diff --git a/docs/html/guide/topics/fundamentals/loaders.jd b/docs/html/guide/components/loaders.jd
similarity index 100%
rename from docs/html/guide/topics/fundamentals/loaders.jd
rename to docs/html/guide/components/loaders.jd
diff --git a/docs/html/guide/topics/fundamentals/processes-and-threads.jd b/docs/html/guide/components/processes-and-threads.jd
similarity index 72%
rename from docs/html/guide/topics/fundamentals/processes-and-threads.jd
rename to docs/html/guide/components/processes-and-threads.jd
index 814d34edac4c..07a2667dc73f 100644
--- a/docs/html/guide/topics/fundamentals/processes-and-threads.jd
+++ b/docs/html/guide/components/processes-and-threads.jd
@@ -30,12 +30,11 @@ down the user interface
-When an application component starts and the process that should host that thread is not already
+
When an application component starts and the application does not have any other components
running, the Android system starts a new Linux process for the application with a single thread of
execution. By default, all components of the same application run in the same process and thread
(called the "main" thread). If an application component starts and there already exists a process
-for that application (because another component from the application exists or Android has been
-able to retain its previous process cached in the background), then the component is
+for that application (because another component from the application exists), then the component is
started within that process and uses the same thread of execution. However, you can arrange for
different components in your application to run in separate processes, and you can create additional
threads for any process.
@@ -87,10 +86,7 @@ components running in the process and the state of those components. Processes
importance are eliminated first, then those with the next lowest importance, and so on, as necessary
to recover system resources.
-The exact mapping of processes to importance and the management of these processes is
-an implementation detail of the platform that changes over time. Broadly speaking, there
-are five levels in the current implementation that are of most relevance to application
-developers. The following list presents these different
+
There are five levels in the importance hierarchy. The following list presents the different
types of processes in order of importance (the first process is most important and is
killed last):
@@ -104,15 +100,18 @@ types of processes in order of importance (the first process is most importa
android.app.Activity}'s {@link android.app.Activity#onResume onResume()} method has been
called).
+ - It hosts a {@link android.app.Service} that's bound to the activity that the user is
+interacting with.
+
+ - It hosts a {@link android.app.Service} that's running "in the foreground"—the
+service has called {@link android.app.Service#startForeground startForeground()}.
+
- It hosts a {@link android.app.Service} that's executing one of its lifecycle
callbacks ({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart
onStart()}, or {@link android.app.Service#onDestroy onDestroy()}).
- It hosts a {@link android.content.BroadcastReceiver} that's executing its {@link
android.content.BroadcastReceiver#onReceive onReceive()} method.
-
- - Another foreground process has a dependency on this one: either bound
- to a Service in this process, or using a Content Provider of the process.
Generally, only a few foreground processes exist at any given time. They are killed only as
@@ -131,79 +130,43 @@ visible to the user (its {@link android.app.Activity#onPause onPause()} method h
This might occur, for example, if the foreground activity started a dialog, which allows the
previous activity to be seen behind it.
-
- Another visible process has a dependency on this one: either bound
- to a Service in this process, or using a Content Provider of the process.
+ - It hosts a {@link android.app.Service} that's bound to a visible (or foreground)
+activity.
A visible process is considered extremely important and will not be killed unless doing so
is required to keep all foreground processes running.
- - Perceptible process
-
A process that doesn't have any foreground or visible components, but is still
- doing something that is directly perceptible by the user. A classic example of such
- a process would be one doing background music playback. The main way applications
- get into this state is through {@link android.app.Service#startForeground} or because
- another perceptible process has a dependency on one of its services or content
- providers. In addition, as of {@link android.os.Build.VERSION_CODES#HONEYCOMB},
- processes can go into this state when {@link android.app.Activity#onStop
- Activity.onStop()} is executing, allowing the process to continue executing
- critical code after no longer being visible to the user but before going
- fully into the background.
-
- Like visible processes, a perceptible process is considered extremely important
- and will not be killed unless doing so is required to keep all foreground and
- visible processes running.
-
-
- Service process
A process that is running a service that has been started with the {@link
-android.content.Context#startService startService()} method and does not fall into any of the
+android.content.Context#startService startService()} method and does not fall into either of the two
higher categories. Although service processes are not directly tied to anything the user sees, they
-are generally doing things that the user cares about (such as downloading a file the user has requested),
-so the system keeps them running unless there's not enough memory to retain them along with all
-foreground and visible processes.
-
- Even though Android tries to keep these processes running, it is considered normal
- operation for them to temporarily be killed to support the needs of more important
- processes. For example, if the user opens a very heavy-weight web page that needs
- most of the device's RAM, background services may be temporarily killed to satisfy
- those needs. Services in these processes thus must be prepared to deal gracefully
- with being killed while doing their work and later restarted.
-
- In recent implementations of Android, there are actually a number of sub-divisions
- in this area for processes that Android considers more important to the user and so
- would like to try harder to keep around. For example, the process hosting the current
- home app is generally kept in this area so that the user will not see long delays in
- returning home because that process has been killed.
+are generally doing things that the user cares about (such as playing music in the background or
+downloading data on the network), so the system keeps them running unless there's not enough memory
+to retain them along with all foreground and visible processes.
- - Background (cached) process
-
The final importance level is for processes that are not of current significance.
- This is basically any process that does not fall into one of the previous levels.
- These processes have no direct impact on the user experience, and the system can kill
- them at any time to reclaim memory for the other more important processes.
- This includes everything from processes holding running activity objects that are not currently
- visible to the user (the activity's {@link android.app.Activity#onStop onStop()}
- method has been called) to processes that have no active code at all but may be
- useful to keep around in case they are needed in the near future.
-
- Usually there are many background processes being maintained, so they are kept
- in an LRU list to allow older processes to be killed before more recent ones. This
- helps reduce the frequency that new processes need to be creating, facilitating things
- like more rapid switching between the applications the user has recently visited.
- However, processes in this state must deal correctly with being killed and later
- restarted when needed. For example, if an activity implements its lifecycle methods
+
- Background process
+
A process holding an activity that's not currently visible to the user (the activity's
+{@link android.app.Activity#onStop onStop()} method has been called). These processes have no direct
+impact on the user experience, and the system can kill them at any time to reclaim memory for a
+foreground,
+visible, or service process. Usually there are many background processes running, so they are kept
+in an LRU (least recently used) list to ensure that the process with the activity that was most
+recently seen by the user is the last to be killed. If an activity implements its lifecycle methods
correctly, and saves its current state, killing its process will not have a visible effect on
the user experience, because when the user navigates back to the activity, the activity restores
all of its visible state. See the Activities
+href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities
document for information about saving and restoring state.
+
- Android may also employ other additional policies for killing background processes. For
- example, there are typically restrictions on a maximum number of such processes to
- keep around, and limits on the amount of time they can spend holding wake locks
- or consuming CPU power until they will be removed.
+ - Empty process
+
A process that doesn't hold any active application components. The only reason to keep this
+kind of process alive is for caching purposes, to improve startup time the next time a component
+needs to run in it. The system often kills these processes in order to balance overall system
+resources between process caches and the underlying kernel caches.
@@ -213,48 +176,23 @@ components currently active in the process. For example, if a process hosts a s
activity, the process is ranked as a visible process, not a service process.
In addition, a process's ranking might be increased because other processes are dependent on
-it—a process that is serving another process can not generally be ranked lower than the process it is
+it—a process that is serving another process can never be ranked lower than the process it is
serving. For example, if a content provider in process A is serving a client in process B, or if a
-service in process A has been bound to by a client in process B, process A is always considered at least
+service in process A is bound to a component in process B, process A is always considered at least
as important as process B.
Because a process running a service is ranked higher than a process with background activities,
-an activity that initiates a long-running operation may sometimes start a service for that operation, rather than
-simply create a worker thread—but only when the operation is a specific task that needs
-to be accomplished regardless of whether the user returns to the application.
+an activity that initiates a long-running operation might do well to start a service for that operation, rather than
+simply create a worker thread—particularly if the operation will likely outlast the activity.
For example, an activity that's uploading a picture to a web site should start a service to perform
the upload so that the upload can continue in the background even if the user leaves the activity.
Using a service guarantees that the operation will have at least "service process" priority,
-regardless of what happens to the activity. This is not however an approach that should always
-be used. It would not be appropriate when simply downloading the data for a web page, since
-that can easily be restarted later if the user returns to the web browser. Allowing
-such a process to be in the background (instead of running a service) gives Android better
-information about how to manage that process in relation to others.
-
-
For a similar reason, broadcast receivers will often employ services rather than
- simply put time-consuming operations in a thread.
-
- Some command line tools are available to help you understand how Android is managing
- its processes. The most common command is adb shell dumpsys activity
- which provides a summary of various key state, including at the end a list of the
- process states, one per line (plus an optional second line for any key dependency
- on that process), ordered from higher importance to lowest. The exact
- contents of these lines has changed across different versions of Android, but the
- typical state for one process in the list would be:
-
-Proc # 2: adj=prcp /F trm= 0 848:com.google.android.inputmethod.latin/u0a32 (service)
- com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME<=Proc{417:system/1000}
-
+regardless of what happens to the activity. This is the same reason that broadcast receivers should
+employ services rather than simply put time-consuming operations in a thread.
+
- This is a perceptible process (adj=prcp) that is running with the foreground
- scheduling class (/F), and has not recently been told to trim any memory
- (trm= 0). Its process id is 848; its name is com.google.android.inputmethod.latin;
- its Linux uid is u0a32 (10032), and the key state contributing to its current
- importance level is a service.
- The second line provides the name of the service that is important, because another
- process has a dependency on it (here the system process).
Threads
@@ -283,7 +221,7 @@ database queries will block the whole UI. When the thread is blocked, no events
including drawing events. From the user's perspective, the
application appears to hang. Even worse, if the UI thread is blocked for more than a few seconds
(about 5 seconds currently) the user is presented with the infamous "application not
+href="http://developer.android.com/guide/practices/responsiveness.html">application not
responding" (ANR) dialog. The user might then decide to quit your application and uninstall it
if they are unhappy.
@@ -436,7 +374,7 @@ href="http://code.google.com/p/shelves/">Shelves sample application.
therefore must be written to be thread-safe.
This is primarily true for methods that can be called remotely—such as methods in a bound service. When a call on a
+href="{@docRoot}guide/components/bound-services.html">bound service. When a call on a
method implemented in an {@link android.os.IBinder} originates in the same process in which the
{@link android.os.IBinder IBinder} is running, the method is executed in the caller's thread.
However, when the call originates in another process, the method is executed in a thread chosen from
@@ -474,7 +412,7 @@ transactions, so you can focus on defining and implementing the RPC programming
To perform IPC, your application must bind to a service, using {@link
android.content.Context#bindService bindService()}. For more information, see the Services developer guide.
+href="{@docRoot}guide/components/services.html">Services developer guide.
diff --git a/docs/html/guide/topics/fundamentals/services.jd b/docs/html/guide/components/services.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/services.jd
rename to docs/html/guide/components/services.jd
index 9c38897671c9..ba5e1f03b277 100644
--- a/docs/html/guide/topics/fundamentals/services.jd
+++ b/docs/html/guide/components/services.jd
@@ -58,7 +58,7 @@ perform interprocess communication
See also
@@ -128,7 +128,7 @@ a thread in {@link android.app.Activity#onCreate onCreate()}, start running it i
android.app.Activity#onStart onStart()}, then stop it in {@link android.app.Activity#onStop
onStop()}. Also consider using {@link android.os.AsyncTask} or {@link android.os.HandlerThread},
instead of the traditional {@link java.lang.Thread} class. See the Processes and
+href="{@docRoot}guide/components/processes-and-threads.html#Threads">Processes and
Threading document for more information about threads.
Remember that if you do use a service, it still runs in your application's main thread by
default, so you should still create a new thread within the service if it performs intensive or
@@ -190,7 +190,7 @@ by the system. If the system kills your service, it restarts it as soon as resou
available again (though this also depends on the value you return from {@link
android.app.Service#onStartCommand onStartCommand()}, as discussed later). For more information
about when the system might destroy a service, see the Processes and Threading
+href="{@docRoot}guide/components/processes-and-threads.html">Processes and Threading
document.
In the following sections, you'll see how you can create each type of service and how to use
@@ -252,7 +252,7 @@ attribute and set it to {@code "false"}. This is effective even if your service
filters.
For more information about creating intent filters for your service, see the Intents and Intent Filters
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters
document.
@@ -643,7 +643,7 @@ there are no clients bound to the service, the system destroys the service.
There are multiple ways to implement a bound service and the implementation is more
complicated than a started service, so the bound service discussion appears in a separate
document about Bound Services.
+href="{@docRoot}guide/components/bound-services.html">Bound Services.
@@ -857,10 +857,10 @@ can still receive a call to {@link android.app.Service#onBind onBind()} (when a
{@link android.content.Context#bindService bindService()}).
For more information about creating a service that provides binding, see the Bound Services document,
+href="{@docRoot}guide/components/bound-services.html">Bound Services document,
which includes more information about the {@link android.app.Service#onRebind onRebind()}
callback method in the section about Managing the Lifecycle of
+href="{@docRoot}guide/components/bound-services.html#Lifecycle">Managing the Lifecycle of
a Bound Service.
diff --git a/docs/html/guide/topics/fundamentals/tasks-and-back-stack.jd b/docs/html/guide/components/tasks-and-back-stack.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/tasks-and-back-stack.jd
rename to docs/html/guide/components/tasks-and-back-stack.jd
index 0880614ae646..8b7041cef826 100644
--- a/docs/html/guide/topics/fundamentals/tasks-and-back-stack.jd
+++ b/docs/html/guide/components/tasks-and-back-stack.jd
@@ -29,14 +29,13 @@ to perform other tasks without losing their work
Articles
See also
- Android Design:
Navigation
- - Application Lifecycle video
- {@code <activity>} manifest
element
@@ -46,7 +45,7 @@ element
An application usually contains multiple activities. Each activity
+href="{@docRoot}guide/components/activities.html">activities. Each activity
should be designed around a specific kind of action the user can perform and can start other
activities. For example, an email application might have one activity to show a list of new email.
When the user selects an email, a new activity opens to view that email.
@@ -210,7 +209,7 @@ android.app.Activity#onSaveInstanceState onSaveInstanceState()} callback
methods in your activity.
For more information about how to save your activity state, see the Activities
+href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities
document.
@@ -591,6 +590,6 @@ href="#Clearing">Clearing the stack).
For more information about how to use intents to
activate other application components and publish the intents to which your components
respond, continue with the Intents and Intent
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
Filters document.
-->
diff --git a/docs/html/guide/developing/eclipse-adt.html b/docs/html/guide/developing/eclipse-adt.html
deleted file mode 100644
index 879a35635ba7..000000000000
--- a/docs/html/guide/developing/eclipse-adt.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-Redirecting...
-
-
-You should be redirected. Please click here.
-
-
\ No newline at end of file
diff --git a/docs/html/guide/developing/other-ide.html b/docs/html/guide/developing/other-ide.html
deleted file mode 100644
index 41dba0529b19..000000000000
--- a/docs/html/guide/developing/other-ide.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-Redirecting...
-
-
-You should be redirected. Please click here.
-
-
\ No newline at end of file
diff --git a/docs/html/guide/developing/testing/index.jd b/docs/html/guide/developing/testing/index.jd
deleted file mode 100644
index 8a0895989182..000000000000
--- a/docs/html/guide/developing/testing/index.jd
+++ /dev/null
@@ -1,36 +0,0 @@
-page.title=Testing
-@jd:body
-
- Android includes powerful tools for setting up and running test applications.
- Whether you are working in Eclipse with ADT or working from the command line, these tools
- help you set up and run your tests within an emulator or the device you are targeting.
- The documents listed below explain how to work with the tools in your development environment.
-
-
- If you aren't yet familiar with the Android testing framework, please read the topic
- Testing Fundamentals
- before you get started.
- For a step-by-step introduction to Android testing, try the Hello, Testing
- tutorial, which introduces basic testing concepts and procedures.
- For a more advanced tutorial, try Activity Testing,
- which guides you through a more complex testing scenario.
-
-
- - Testing from Eclipse, with ADT
- -
- The ADT plugin lets you quickly set up and manage test projects directly in
- the Eclipse UI. Once you have written your tests, you can build and run them and
- then see the results in the Eclipse JUnit view. You can also use the SDK command-line
- tools to execute your tests if needed.
-
- - Testing from Other IDEs
- -
- The SDK command-line tools provide the same capabilities as the ADT plugin. You can
- use them to set up and manage test projects, build your test application,
- run your tests, and see the results. You use
- the
android
tool to create and manage test projects, the Ant build system
- to compile them, and the adb
tool to install and run them.
-
-
diff --git a/docs/html/guide/developing/tools/aapt.html b/docs/html/guide/developing/tools/aapt.html
deleted file mode 100644
index e66a2019e494..000000000000
--- a/docs/html/guide/developing/tools/aapt.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-Redirecting...
-
-
-You should be redirected. Please click here.
-
-
\ No newline at end of file
diff --git a/docs/html/guide/google/index.jd b/docs/html/guide/google/index.jd
new file mode 100644
index 000000000000..95c2816b416e
--- /dev/null
+++ b/docs/html/guide/google/index.jd
@@ -0,0 +1,97 @@
+page.title=Google Services
+footer.hide=1
+@jd:body
+
+
+ Google offers a variety of services that help you build new revenue streams, enhance your app's capabilities, manage distribution and payloads, and track usage and installs. Many of the services use static libraries that you download through the Android SDK Manager and build into your app. Others are configurable directly from Google Play Android Developer Console.
+
+ The sections below highlight some of the Google Services and link you to more information about how to use them in your Android app.
+
+
+Monetize Your App
+
+
+
+
+
+ In-App Billing
+ Keep your users engaged by offering in-app purchases and subscriptions directly in your app.
+
+ Learn more »
+
+
+
+ Google AdMob Ads
+ Generate more revenue from your app by
+ displaying ads from multiple ad networks.
+ Learn more »
+
+
+
+ Application Licensing
+ Protect your revenue streams and integrate policies for usage into your app.
+ Learn more »
+
+
+
+
+Manage App Distribution
+
+
+
+
+
+
+
+Google Play Filters
+Make sure your app gets to the right users by
+declaring the hardware and software features needed by your app.
+Learn more »
+
+
+
+Multiple APK Support
+Distribute different APKs based on a variety of properties such as platform version, screen size, and GLES texture compression support.
+Learn more »
+
+
+
+
+APK Expansion files
+Take load off of your servers and utilize APK expansion files
+to deliver up to 4 GB of assets for your Android app, free.
+
+Learn more »
+
+
+
+
+Enhance Your App's Capabilities
+
+
+
+
+
+
+ Android Cloud-to-Device Messaging
+ Notify your apps of events with push messages that are lightweight
+ and battery-saving.
+ Learn more »
+
+
+
+ Google Maps
+ The Google Maps library for Android lets you add powerful mapping and geo-location capabilities to your app.
+ Learn more »
+
+
+
+
+Track Performance with Analytics
+Google Analytics gives you powerful insights into how users find your apps
+ and how they use them.
Start integrating analytics to measure
+ your app's success.
+
+
+
+
\ No newline at end of file
diff --git a/docs/html/guide/google/play/billing/billing_about.html b/docs/html/guide/google/play/billing/billing_about.html
new file mode 100644
index 000000000000..9f41fa62e344
--- /dev/null
+++ b/docs/html/guide/google/play/billing/billing_about.html
@@ -0,0 +1,12 @@
+
+
+
+Redirecting...
+
+
+You should be redirected. Please click
+here.
+
+
\ No newline at end of file
diff --git a/docs/html/guide/market/billing/billing_admin.jd b/docs/html/guide/google/play/billing/billing_admin.jd
similarity index 89%
rename from docs/html/guide/market/billing/billing_admin.jd
rename to docs/html/guide/google/play/billing/billing_admin.jd
index 0f869ab78795..cb288a5381d5 100755
--- a/docs/html/guide/market/billing/billing_admin.jd
+++ b/docs/html/guide/google/play/billing/billing_admin.jd
@@ -15,20 +15,20 @@ parent.link=index.html
Downloads
See also
- - Overview of In-app
+
- Overview of In-app
Billing
- - Implementing In-app
+
- Implementing In-app
Billing
- - Security and
+
- Security and
Design
- - Testing In-app
+
- Testing In-app
Billing
- - In-app Billing
+
- In-app Billing
Reference
@@ -39,13 +39,13 @@ few administrative tasks, including setting up and maintaining your product list
site, registering test accounts, and handling refunds when necessary.
You must have a Google Play publisher account to register test accounts. And you must have a
-Google Checkout merchant account to create a product list and issue refunds to your users. If you
+Google Wallet merchant account to create a product list and issue refunds to your users. If you
already have a publisher account on Google Play, you can use your existing account. You do not
need to register for a new account to support in-app billing. If you do not have a publisher
account, you can register as a Google Play developer and set up a publisher account at the
Google Play publisher site. If you do not have a
-Google Checkout merchant account, you can register for one at the Google Checkout site.
+Google Wallet merchant account, you can register for one at the Google Wallet site.
Creating a Product List
@@ -56,7 +56,7 @@ items that are listed in another application's product list.
You can access an application's product list by clicking the In-App Products
link that appears under each of the applications that are listed for your publisher account (see
-figure 1). The In-App Products link appears only if you have a Google Checkout
+figure 1). The In-App Products link appears only if you have a Google Wallet
merchant account and an application's manifest includes the com.android.vending.BILLING
permission.
@@ -66,7 +66,8 @@ permission.
In-App Products link.
-A product list contains information about the items you are selling, such as a product id,
+
A product list specifies items you are selling in an application — in-app products,
+subscriptions, or a combination of both. For each item, the product list contains information such as a product id,
product description, and price (see figure 2). The product list stores only metadata about the items
you are selling in your application. It does not store any digital content. You are responsible for
storing and delivering the digital content that you sell in your applications.
@@ -77,17 +78,17 @@ storing and delivering the digital content that you sell in your applications.
You can create a product list for any published application or any draft application that's been
-uploaded and saved to the Google Play site. However, you must have a Google Checkout merchant
+uploaded and saved to the Google Play site. However, you must have a Google Wallet merchant
account and the application's manifest must include the com.android.vending.BILLING
permission. If an application's manifest does not include this permission, you will be able to edit
existing items in the product list but you will not be able to add new items to the list. For more
information about this permission, see
-Updating Your
+Updating Your
Application's Manifest.
In addition, an application package can have only one product list. If you create a product
list for an application, and you use the multiple APK feature to distribute
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APK feature to distribute
more than one APK for that application, the product list applies to all APK versions that are
associated with the application listing. You cannot create individual product lists for each APK if
you are using the multiple APK feature.
@@ -99,6 +100,8 @@ application has only a few in-app items or you are adding only a few items to a
product list for testing purposes. The CSV file method is useful if your application has a large
number of in-app items.
+Note: Batch upload of product lists containing subscriptions is not yet supported.
+
Adding items one at a time to a product list
To add an item to a product list using the In-app Products UI, follow these steps:
@@ -129,8 +132,8 @@ number of in-app items.
a product ID.
- Purchase Type
-
The purchase type can be Managed per user account or
- Unmanaged. You can never change an item's purchase type after you set it. For more
+
The purchase type can be Managed per user account, Unmanaged,
+ or Subscription. You can never change an item's purchase type after you set it. For more
information, see Choosing a purchase type later in this
document.
@@ -140,7 +143,7 @@ number of in-app items.
Published and the item's application must be published on Google Play.
Note: This is not true for test accounts. An item is visible to
a test account if the application is not published and the item is published. See Testing In-app
+ href="{@docRoot}guide/google/play/billing/billing_testing.html#billing-testing-real">Testing In-app
Billing for more information.
- Language
@@ -171,6 +174,7 @@ number of in-app items.
To specify prices in other currencies, you can manually enter the price for each
currency or you can click Auto Fill and let Google Play do a one-time
conversion from your home currency to the currencies you are targeting (see figure 4).
+ For subscription items, note that you can not change the item's price once you have published it.
@@ -193,7 +197,16 @@ or modify product IDs after you save them.
To add a batch of items to a product list using a CSV file, you first need to create your CSV
file. The data values that you specify in the CSV file represent the same data values you specify
manually through the In-app Products UI (see Adding items one at a time
-to a product list). The CSV file uses commas (,) and semi-colons (;) to separate data values.
+to a product list).
+
+
If you are importing and exporting CSV files with in-app products, please
+keep tax-inclusive pricing in mind. If you use auto-fill, you can provide a
+tax-exclusive default price and tax-inclusive prices will be auto-filled. If you
+do not use auto-fill, prices you provide must include tax.
+
+Note: Batch upload of product lists containing subscriptions is not yet supported.
+
+The CSV file uses commas (,) and semi-colons (;) to separate data values.
Commas are used to separate primary data values, and semi-colons are used to separate subvalues. For
example, the syntax for the CSV file is as follows:
@@ -419,17 +432,17 @@ times.
In-app billing does not allow users to send a refund request to Google Play. Refunds for
in-app purchases must be directed to you (the application developer). You can then process the
-refund through your Google Checkout merchant account. When you do this, Google Play receives a
-refund notification from Google Checkout, and Google Play sends a refund message to your
+refund through your Google Wallet merchant account. When you do this, Google Play receives a
+refund notification from Google Wallet, and Google Play sends a refund message to your
application. For more information, see Handling
+href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-action-notify">Handling
IN_APP_NOTIFY messages and In-app Billing
Pricing.
-Important: You cannot use the Google Checkout API to issue
+
Important: You cannot use the Google Wallet API to issue
refunds or cancel in-app billing transactions. You must do this manually through your Google
-Checkout merchant account. However, you can use the Google Checkout API to retrieve order
+Wallet merchant account. However, you can use the Google Wallet API to retrieve order
information.
Setting Up Test Accounts
diff --git a/docs/html/guide/market/billing/billing_best_practices.jd b/docs/html/guide/google/play/billing/billing_best_practices.jd
similarity index 88%
rename from docs/html/guide/market/billing/billing_best_practices.jd
rename to docs/html/guide/google/play/billing/billing_best_practices.jd
index e100ce581303..49d2a299f5da 100755
--- a/docs/html/guide/market/billing/billing_best_practices.jd
+++ b/docs/html/guide/google/play/billing/billing_best_practices.jd
@@ -11,20 +11,20 @@ parent.link=index.html
Downloads
See also
- - Overview of In-app
+
- Overview of In-app
Billing
- - Implementing In-app
+
- Implementing In-app
Billing
- - Testing In-app
+
- Testing In-app
Billing
- - Administering In-app
+
- Administering In-app
Billing
- - In-app Billing
+
- In-app Billing
Reference
@@ -58,7 +58,7 @@ sure to encrypt the content and use a device-specific encryption key.
You should obfuscate your in-app billing code so it is difficult for an attacker to reverse
engineer security protocols and other application components. At a minimum, we recommend that you
run an obfuscation tool like Proguard on your
+href="http://developer.android.com/tools/proguard.html">Proguard on your
code.
In addition to running an obfuscation program, we recommend that you use the following techniques
to obfuscate your in-app billing code.
diff --git a/docs/html/guide/market/billing/billing_integrate.jd b/docs/html/guide/google/play/billing/billing_integrate.jd
similarity index 94%
rename from docs/html/guide/market/billing/billing_integrate.jd
rename to docs/html/guide/google/play/billing/billing_integrate.jd
index 4b3650fcc6d5..2d1582eebb34 100755
--- a/docs/html/guide/market/billing/billing_integrate.jd
+++ b/docs/html/guide/google/play/billing/billing_integrate.jd
@@ -21,15 +21,15 @@ parent.link=index.html
See also
- - Overview of In-app
+
- Overview of In-app
Billing
- - Security and
+
- Security and
Design
- - Testing In-app
+
- Testing In-app
Billing
- - Administering In-app
+
- Administering In-app
Billing
- - In-app Billing
+
- In-app Billing
Reference
@@ -41,8 +41,8 @@ you implement in-app billing by stepping through the primary implementation task
billing sample application as an example.
Before you implement in-app billing in your own application, be sure that you read Overview of In-app Billing and Security and Design. These
+href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app Billing and Security and Design. These
documents provide background information that will make it easier for you to implement in-app
billing.
@@ -214,7 +214,7 @@ following:
- Build the sample application in release mode and sign it.
To learn how to build and sign applications, see Building and Running.
+ href="{@docRoot}tools/building/index.html">Building and Running.
@@ -238,11 +238,11 @@ how to do this.
your product list so that sword_001
has a purchase type of "Managed per user
account" and potion_001
has a purchase type of "Unmanaged" so you can see how these
two purchase types behave. To learn how to set up a product list, see Creating a Product
+ href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-list-setup">Creating a Product
List.
Note: You must publish the items in your product
list (sword_001
and potion_001
) even though you are not publishing the
- sample application. Also, you must have a Google Checkout Merchant account to add items to the
+ sample application. Also, you must have a Google Wallet Merchant account to add items to the
sample application's product list.
@@ -255,10 +255,10 @@ onto a device to run it. To run the sample application, do the following:
- Make sure you have at least one test account registered under your Google Play
publisher account.
-
You cannot purchase items from yourself (Google Checkout prohibits this), so you need to
+
You cannot purchase items from yourself (Google Wallet prohibits this), so you need to
create at least one test account that you can use to purchase items in the sample application.
To learn how to set up a test account, see Setting up Test
+ href="{@docRoot}guide/google/play/billing/billing_testing.html#billing-testing-setup">Setting up Test
Accounts.
- Verify that your device is running a supported version of the Google Play
@@ -274,12 +274,12 @@ onto a device to run it. To run the sample application, do the following:
Even though you uploaded the application to Google Play, the application is not published,
so you cannot download it from Google Play to a device. Instead, you must install the
application onto your device. To learn how to install an application onto a device, see Running on a
+ href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a
device.
- Make one of your test accounts the primary account on your device.
The primary account on your device must be one of the test accounts
+ href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">test accounts
that you registered on the Google Play publisher site. If the primary account on your device is not a
test account, you must do a factory reset of the device and then sign in with one of your test
accounts. To perform a factory reset, do the following:
@@ -294,7 +294,7 @@ onto a device to run it. To run the sample application, do the following:
- Run the application and purchase the sword or the potion.
When you use a test account to purchase items, the test account is billed through Google
- Checkout and your Google Checkout Merchant account receives a payout for the purchase.
+ Wallet and your Google Wallet Merchant account receives a payout for the purchase.
Therefore, you may want to refund purchases that are made with test accounts, otherwise the
purchases will show up as actual payouts to your merchant account.
@@ -466,7 +466,7 @@ indicates the item being purchased, and another identifies your application. The
code. However, this is not the complete purchase response; the complete response is delivered with
an asynchronous broadcast intent. For more information about the various Bundle keys that are
supported by the MarketBillingService
, see In-app Billing
+href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-interface">In-app Billing
Service Interface.
You can use the sendBillingRequest()
method to send five types of billing requests.
@@ -475,14 +475,14 @@ key can have the following five values:
CHECK_BILLING_SUPPORTED
—verifies that the Google Play application
- supports in-app billing.
+ supports in-app billing and the version of the In-app Billing API available.
REQUEST_PURCHASE
—sends a purchase request for an in-app item.
GET_PURCHASE_INFORMATION
—retrieves transaction information for a purchase
or refund.
CONFIRM_NOTIFICATIONS
—acknowledges that you received the transaction
information for a purchase or refund.
RESTORE_TRANSACTIONS
—retrieves a user's transaction history for managed
+ href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">managed
purchases.
@@ -511,8 +511,8 @@ application's main thread.
Verifying that in-app billing is supported (CHECK_BILLING_SUPPPORTED)
The following code sample shows how to verify whether the Google Play application supports
-in-app billing. In the sample, mService
is an instance of the
-MarketBillingService
interface.
+in-app billing and confirm what version of the API it supports. In the sample, mService
+is an instance of the MarketBillingService
interface.
/**
@@ -523,13 +523,19 @@ in-app billing. In the sample, mService
is an instance of the
// Do something with this response.
}
+
The makeRequestBundle()
method constructs an initial Bundle, which contains the
three keys that are required for all requests: BILLING_REQUEST
,
-API_VERSION
, and PACKAGE_NAME
. The request returns a synchronous {@link
+API_VERSION
, and PACKAGE_NAME
. If you are offering subscriptions in
+your app, set the API_VERSION key to a value of "2", to confirm that In-app Billing v2 is
+available. For an examnple, see
+Subscriptions.
+
+The CHECK_BILLING_SUPPORTED
request returns a synchronous {@link
android.os.Bundle} response, which contains only a single key: RESPONSE_CODE
. The
RESPONSE_CODE
key can have the following values:
- RESULT_OK
—in-app billing is supported.
+ RESULT_OK
—the spedified version of in-app billing is supported.
RESULT_BILLING_UNAVAILABLE
—in-app billing is not available because the API
version you specified is not recognized or the user is not eligible to make in-app purchases (for
example, the user resides in a country that prohibits in-app purchases).
@@ -571,7 +577,7 @@ Help topic.
You must specify four keys in the request {@link android.os.Bundle}. The following code sample
shows how to set these keys and make a purchase request for a single in-app item. In the sample,
mProductId
is the Google Play product ID of an in-app item (which is listed in the
-application's product
+application's product
list), and mService
is an instance of the MarketBillingService
interface.
@@ -581,6 +587,8 @@ interface.
*/
Bundle request = makeRequestBundle("REQUEST_PURCHASE");
request.putString(ITEM_ID, mProductId);
+ // Request is for a standard in-app product
+ request.putString(ITEM_TYPE, "inapp");
// Note that the developer payload is optional.
if (mDeveloperPayload != null) {
request.putString(DEVELOPER_PAYLOAD, mDeveloperPayload);
@@ -664,7 +672,7 @@ use to retrieve the transaction details for the REQUEST_PURCHASE
re
Note: The Google Play application also sends
an IN_APP_NOTIFY
for refunds. For more information, see Handling
+href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-action-notify">Handling
IN_APP_NOTIFY messages.
Because the purchase process is not instantaneous and can take several seconds (or more), you
@@ -847,7 +855,7 @@ android.content.BroadcastReceiver}. To see an example of how you can send and re
messages, see the BillingReceiver.java
and BillingService.java
files in
the sample application. You can use these samples as a basis for your own implementation. However,
if you use any of the code from the sample application, be sure you follow the guidelines in Security and Design.
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design.
Creating a BroadcastReceiver
@@ -860,19 +868,19 @@ android.content.BroadcastReceiver} that can handle the following intents:
This broadcast intent contains a Google Play response code, and is sent after you make an
in-app billing request. For more information about the response codes that are sent with this
response, see Google Play Response
+ href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-codes">Google Play Response
Codes for In-app Billing.
- com.android.vending.billing.IN_APP_NOTIFY
This response indicates that a purchase has changed state, which means a purchase succeeded,
was canceled, or was refunded. For more information about notification messages, see In-app Billing
+ href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-intents">In-app Billing
Broadcast Intents
- com.android.vending.billing.PURCHASE_STATE_CHANGED
This broadcast intent contains detailed information about one or more transactions. For more
information about purchase state messages, see In-app Billing
+ href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-intents">In-app Billing
Broadcast Intents
@@ -981,7 +989,7 @@ local service (discussed in the next section). The BillingReceiver.javaSecurity and Design .
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design .
Verifying Signatures and Nonces
@@ -1020,7 +1028,7 @@ code shows some simple methods you can use to do this.
PURCHASE_STATE_CHANGED
broadcast intent. The Security.java
file in the
sample application shows you how to do this. If you use this file as a basis for your own security
implementation, be sure to follow the guidelines in Security and Design and
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design and
obfuscate your code.
You will need to use your Google Play public key to perform the signature verification. The
@@ -1067,7 +1075,7 @@ sample application provides an example database (PurchaseDatabase.java); however
database has been simplified for clarity and does not exhibit the security best practices that we
recommend. If you have a remote server, we recommend that you store purchase information on your
server instead of in a local database on a device. For more information about security best
-practices, see Security and
+practices, see Security and
Design.
Note: If you store any purchase information on a device, be sure to
diff --git a/docs/html/guide/market/billing/billing_overview.jd b/docs/html/guide/google/play/billing/billing_overview.jd
similarity index 74%
rename from docs/html/guide/market/billing/billing_overview.jd
rename to docs/html/guide/google/play/billing/billing_overview.jd
index b59381140eca..280b3cf3143e 100755
--- a/docs/html/guide/market/billing/billing_overview.jd
+++ b/docs/html/guide/google/play/billing/billing_overview.jd
@@ -7,6 +7,7 @@ parent.link=index.html
In this document
+ - Product and Purchase Types
- In-app Billing Architecture
- In-app Billing Messages
@@ -20,19 +21,19 @@ parent.link=index.html
Downloads
See also
@@ -47,15 +48,57 @@ order number, the order date and time, and the price paid. At no point does your
handle any financial transactions; that role is provided by Google Play's in-app billing
service.
+Product and Purchase Types
+
+In-app Billing supports different product types and purchase types to give you flexibility in how you monetize your app. In all cases, you define your products using the Google Play Developer Console, including product type, purchase type, SKU, price, description, and so on. For more information, see Administering In-app Billing.
+
+Product Types
+
+With In-app Billing, you can sell two types of products — in-app products and subscriptions. The billing characteristics of the two types are very different, but the In-app Billing API lets you handle the two product types in your app using the same communication model, data structures, and user interactions, as described later in this document.
+
+
+- In-app products — Items that a user would purchase one-at-a-time. For example, typical in-app products would let users purchase digital content, unlock functionality in an app, pay for one-time charges, or add almost anything to the application experience. Unlike with priced applications, once the user has purchased an in-app product there is no refund window. Users desiring refunds must contact the developer directly.
+
+
In-app products can be sold using either the "managed per user account" or "unmanaged" purchase type. In-app products are always explicitly associated with one and only one app. That is, one app cannot purchase an in-app product published for another app, even if they are from the same developer. In-app products are supported in all versions of In-app Billing.
+
+- Subscriptions — Items that are sold with a developer-specified, recurring billing interval. When a user purchases a subscription, Google Play and its payment processor automatically bill the user's account at the specified interval and price, charging the amount to the original payment method. Once the user purchases a subscription, Google Play continues billing the account indefinitely, without requiring approval or action from the user. The user can cancel the subscription at any time.
+
+
Subscriptions can only be sold using the "managed per user account" purchase type. As with in-app products, once the user has purchased an in-app product there is no refund window. Users desiring refunds must contact the developer directly. For more information about subscriptions and how to sell them in your apps, see the Subscriptions document.
+
+
+Purchase Types
+
+In-app Billing offers two purchase types that you can use when selling in-app products, "managed per user account" and "unmanaged". The purchase type controls how Google Play handles and tracks purchases for the products.
+
+
+- Managed per user account — Items that can be purchased only once per user account on Google Play. When a user purchases an item that uses the "managed per user account" purchase type, Google Play permanently stores the transaction information for each item on a per-user basis. This enables you to later query Google Play to restore the state of the items a specific user has purchased. If a user attempts to purchase a managed item that has already been purchased, Google Play prevents the user from purchasing the item again and displays an "Item already purchased" error.
+
+
The "managed per user account" purchase type is useful if you are selling items such as game levels or application features. These items are not transient and usually need to be restored whenever a user reinstalls your application, wipes the data on their device, or installs your application on a new device.
+
+ - Unmanaged — Items that do not have their transaction information stored on Google Play. This means that you cannot later query Google Play to retrieve transaction information for those items. For "unmanaged" purchases, you are responsible for managing the transaction information. Also, Google Play does not attempt to prevent the user from purchasing an item multiple times if it uses the "unmanaged" purchase type. It's up to you to control how many times an unmanaged item can be purchased.
+
+
The "unmanaged" purchase type is useful if you are selling consumable items, such as fuel or magic spells. These items are consumed within your application and are usually purchased multiple times.
+
+
In-app Billing Architecture
-In-app billing uses an asynchronous message loop to convey billing requests and billing responses
-between your application and the Google Play server. In practice, your application never directly
-communicates with the Google Play server (see figure 1). Instead, your application sends billing
-requests to the Google Play application over interprocess communication (IPC) and receives
-purchase responses from the Google Play application in the form of asynchronous broadcast
-intents. Your application does not manage any network connections between itself and the Google
-Play server or use any special APIs from the Android platform.
+Your app accesses the In-app Billing service using an API that is exposed by
+the Google Play app installed on the device. The Google Play app then uses an
+asynchronous message loop to convey billing requests and responses between your
+application and the Google Play server. In practice, your application never
+directly communicates with the Google Play server (see figure 1). Instead, your
+application sends billing requests to the Google Play application over
+interprocess communication (IPC) and receives purchase responses from the Google
+Play application in the form of asynchronous broadcast intents. Your application
+does not manage any network connections between itself and the Google Play
+server or use any special APIs from the Android platform.
+
+
+
+
+Some in-app billing implementations may also use a private remote server to deliver content or
validate transactions, but a remote server is not required to implement in-app billing. A remote
@@ -66,13 +109,6 @@ verification. Although you can handle all security-related tasks in your applica
those tasks on a remote server is recommended because it helps make your application less vulnerable
to security attacks.
-
-
-
-
-A typical in-app billing implementation relies on three components:
- A {@link android.app.Service} (named
BillingService
in the sample application),
@@ -118,17 +154,17 @@ messaging that takes place between your application and the Google Play applicat
Your application sends in-app billing requests by invoking a single IPC method
(sendBillingRequest()
), which is exposed by the MarketBillingService
interface. This interface is defined in an Android Interface Definition Language file
+href="{@docRoot}tools/aidl.html">Android Interface Definition Language file
(IMarketBillingService.aidl
). You can download this AIDL
+href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">download this AIDL
file with the in-app billing sample application.
The sendBillingRequest()
method has a single {@link android.os.Bundle} parameter.
The Bundle that you deliver must include several key-value pairs that specify various parameters for
-the request, such as the type of billing request you are making, the item that is being purchased,
-and the application that is making the request. For more information about the Bundle keys that are
-sent with a request, see In-app Billing
+the request, such as the type of billing request you are making, the item that is being purchased and
+its type, and the application that is making the request. For more information about the Bundle keys
+that are sent with a request, see In-app Billing
Service Interface.
One of the most important keys that every request Bundle must have is the
@@ -162,8 +198,10 @@ requests:
RESTORE_TRANSACTIONS
This request retrieves a user's transaction status for managed
- purchases. You should send this request only when you need to retrieve a user's transaction
+ href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">managed
+ purchases and subscriptions.
+ You should send this request only when you need to retrieve a user's transaction
status, which is usually only when your application is reinstalled or installed for the first
time on a device.
@@ -202,7 +240,7 @@ include the following:
request. This response is not used to report any purchase state changes (such as refund
or purchase information). For more information about the response codes that are sent with this
response, see Server Response Codes
+ href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-codes">Server Response Codes
for In-app Billing.
com.android.vending.billing.IN_APP_NOTIFY
@@ -223,22 +261,22 @@ include the following:
The JSON string that is returned with the PURCHASE_STATE_CHANGED
intent provides
your application with the details of one or more billing transactions. An example of this JSON
-string is shown below:
-
-{ "nonce" : 1836535032137741465,
+string for a subscription item is shown below:
+{ "nonce" : 1836535032137741465,
"orders" :
- { "notificationId" : "android.test.purchased",
- "orderId" : "transactionId.android.test.purchased",
- "packageName" : "com.example.dungeons",
- "productId" : "android.test.purchased",
- "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
- "purchaseTime" : 1290114783411,
- "purchaseState" : 0 }
+ [{ "notificationId" : "android.test.purchased",
+ "orderId" : "transactionId.android.test.purchased",
+ "packageName" : "com.example.dungeons",
+ "productId" : "android.test.purchased",
+ "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
+ "purchaseTime" : 1290114783411,
+ "purchaseState" : 0,
+ "purchaseToken" : "rojeslcdyyiapnqcynkjyyjh" }]
}
For more information about the fields in this JSON string, see In-app Billing
+href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-intents">In-app Billing
Broadcast Intents.
Messaging sequence
@@ -396,11 +434,11 @@ application can handle this message the same way it handles the response from an
application-initiated REQUEST_PURCHASE
message, so that ultimately your application
receives a PURCHASE_STATE_CHANGED
broadcast intent message that includes information
about the item that has been purchased. This applies only to items that have their purchase type set
+href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">purchase type set
to "managed per user account."
In the second case, your application can receive an IN_APP_NOTIFY
broadcast intent
-when Google Play receives a refund notification from Google Checkout. In this case, Google
+when Google Play receives a refund notification from Google Wallet. In this case, Google
Play sends an IN_APP_NOTIFY
message to your application. Your application can handle
this message the same way it handles responses from an application-initiated
REQUEST_PURCHASE
message so that ultimately your application receives a
@@ -409,9 +447,9 @@ refunded. The refund information is included in the JSON string that accompanies
PURCHASE_STATE_CHANGED
broadcast intent. Also, the purchaseState
field in
the JSON string is set to 2.
-Important: You cannot use the Google Checkout API to
+
Important: You cannot use the Google Wallet API to
issue refunds or cancel in-app billing transactions. You must do this manually through your
-Google Checkout merchant account. However, you can use the Google Checkout API to retrieve order
+Google Wallet merchant account. However, you can use the Google Wallet API to retrieve order
information.
Security Controls
@@ -439,7 +477,7 @@ application. When your application receives the JSON string, you need to verify
the signature of the JSON string.
For more information about best practices for security and design, see Security and Design.
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design.
In-app Billing Requirements and Limitations
@@ -449,10 +487,10 @@ limitations.
- In-app billing can be implemented only in applications that you publish through Google
Play.
- - You must have a Google Checkout Merchant account to use Google Play In-app Billing.
- - If your device is running Android 3.0, in-app billing requires version 5.0.12 (or higher) of
- the MyApps application. If your device is running any other version of Android, in-app billing
- requires version 2.3.4 (or higher) of the Google Play application.
+ - You must have a Google Wallet Merchant account to use Google Play In-app Billing.
+ - In-app billing requires version 2.3.4 (or higher) of the Android Market application.
+ To support subscriptions, version 3.5 or higher of the Google Play app is required. On devices
+ running Android 3.0, version 5.0.12 (or higher) of the MyApps application is required.
- An application can use in-app billing only if the device is running Android 1.6 (API level 4)
or higher.
- You can use in-app billing to sell only digital content. You cannot use in-app billing to sell
@@ -465,5 +503,5 @@ limitations.
For more information about in-app billing requirements, see In-App Billing Availability
-and Policies.
+href="https://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153481">In-App
+Billing Availability and Policies.
diff --git a/docs/html/guide/market/billing/billing_reference.jd b/docs/html/guide/google/play/billing/billing_reference.jd
similarity index 78%
rename from docs/html/guide/market/billing/billing_reference.jd
rename to docs/html/guide/google/play/billing/billing_reference.jd
index e8cf2ee86ec9..f8c69678bb50 100755
--- a/docs/html/guide/market/billing/billing_reference.jd
+++ b/docs/html/guide/google/play/billing/billing_reference.jd
@@ -10,24 +10,25 @@ parent.link=index.html
- Server Response Codes for In-app Billing
- In-app Billing Service Interface
- In-app Billing Broadcast Intents
-
+ - Other Broadcast Intents
+ - In-app Billing API Versions
Downloads
See also
- - Overview of In-app
+
- Overview of In-app
Billing
- - Implementing In-app
+
- Implementing In-app
Billing
- - Security and
+
- Security and
Design
- - Testing In-app
+
- Testing In-app
Billing
- - Administering In-app
+
- Administering In-app
Billing
@@ -39,9 +40,11 @@ parent.link=index.html
- Google Play Server Response Codes for In-app Billing
- In-app Billing Interface Parameters
- In-app Billing Broadcast Intents
+ - Other Intents
+ - In-app Billing API Versions
-Google Play Server Response Codes for In-app Billing
+Server Response Codes for In-app Billing
The following table lists all of the server response codes that are sent from Google Play to
your application. Google Play sends these response codes asynchronously as
@@ -102,7 +105,7 @@ codes returned by Google Play.
RESULT_ERROR
6
Indicates an unexpected server error. For example, this error is triggered if you try to
-purchase an item from yourself, which is not allowed by Google Checkout.
+purchase an item from yourself, which is not allowed by Google Wallet.
@@ -111,7 +114,7 @@ purchase an item from yourself, which is not allowed by Google Checkout.
The following section describes the interface for Google Play's in-app billing service. The
interface is defined in the IMarketBillingService.aidl
file, which is included with the
in-app billing sample
+href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">sample
application.
The interface consists of a single request method sendBillingRequest()
. This method
takes a single {@link android.os.Bundle} parameter. The Bundle parameter includes several key-value
@@ -142,10 +145,13 @@ pairs, which are summarized in table 2.
API_VERSION
int
- 1
+
Yes
- The version of Google Play's in-app billing service you are using. The current version is
- 1.
+ The version of Google Play's in-app billing service you want to use. The current version is
+ 2.
PACKAGE_NAME
@@ -227,7 +233,7 @@ pairs, which are summarized in table 2.
RESTORE_TRANSACTIONS
This request retrieves a user's transaction status for managed purchases (see Choosing a
+ href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">Choosing a
Purchase Type for more information). You should send this message only when you need to
retrieve a user's transaction status, which is usually only when your application is reinstalled
or installed for the first time on a device.
@@ -298,7 +304,7 @@ each in-app billing request type.
Play application. These broadcast intents inform your application about in-app billing actions
that have occurred. Your application must implement a {@link android.content.BroadcastReceiver} to
receive these broadcast intents, such as the BillingReceiver
that's shown in the in-app
-billing sample
+billing sample
application.
com.android.vending.billing.RESPONSE_CODE
@@ -388,7 +394,7 @@ a PURCHASE_STATE_CHANGED
intent.
orderId
- A unique order identifier for the transaction. This corresponds to the Google Checkout Order
+ A unique order identifier for the transaction. This corresponds to the Google Wallet Order
ID.
@@ -407,8 +413,15 @@ a PURCHASE_STATE_CHANGED
intent.
purchaseState
- The purchase state of the order. Possible values are 0 (purchased), 1 (canceled), or 2
- (refunded).
+ The purchase state of the order. Possible values are 0 (purchased), 1 (canceled), 2
+ (refunded), or 3 (expired, for subscription purchases only).
+
+
+ purchaseToken
+ A token that uniquely identifies a subscription purchase for a given item and user pair.
+ You can use the token to specify the subscription when querying for subscription validity.
+
+
Supported only in In-app Billing API version 2 and higher.
developerPayload
@@ -416,3 +429,63 @@ a PURCHASE_STATE_CHANGED
intent.
specify a value for this field when you make a REQUEST_PURCHASE
request.
+
+
+
+HTTP API for verification and cancelation
+
+Google Play offers an HTTP-based API that you can use to remotely query the
+validity of a specific subscription at any time or cancel a subscription. The
+API is designed to be used from your backend servers as a way of securely
+managing subscriptions, as well as extending and integrating subscriptions with
+other services. See
+Google Play Android Developer API for more information.
+
+In-app Billing API Versions
+
+The In-app Billing API is versioned, with each version offering
+additional features to your app. At run time, your app can query the Google Play app to determine
+what version of the API it supports and what features are available. Typically, the Google Play app
+will be updated and will support the latest version of the API. For a summary of versions see
+In-app Billing
+API Versions.
+
+The sections below list the supported versions of the In-app Billing API.
+Versions are specified in the API_VERSION
key of the Bundle object
+passed in the sendBillingRequest()
, which is defined in the defined
+in the IMarketBillingService.aidl
file, which is included with the
+in-app billing
+sample application. For more information, see In-app Billing Service Interface.
+In-app Billing version 2
+
+May 2012
+
+
+- Adds support for subscriptions.
+
+ - Adds a new supported string value, "2", for the
API_VERSION
key
+ of the Bundle object passed in the sendBillingRequest()
.
+ - Adds a new JSON field,
purchaseToken
, to the
+ orders
list returned in a PURCHASE_STATE_CHANGED
+ intent.
+ - Adds a new
purchaseState
value, 3
(expired), to the
+ orders
list returned in a PURCHASE_STATE_CHANGED
+ intent. The value indicates that a subscription has expired and is no longer valid.
+- Requires Google Play (Play Store) version 3.5 or higher.
+
+
+In-app Billing version 1
+
+March 2011
+
+
+- Initial release.
+- Requires Google Play/Android Market 2.3.4 or higher.
+
+
diff --git a/docs/html/guide/google/play/billing/billing_subscriptions.jd b/docs/html/guide/google/play/billing/billing_subscriptions.jd
new file mode 100755
index 000000000000..3cf97777dea8
--- /dev/null
+++ b/docs/html/guide/google/play/billing/billing_subscriptions.jd
@@ -0,0 +1,859 @@
+page.title=Subscriptions
+parent.title=In-app Billing
+parent.link=index.html
+@jd:body
+
+
+
+ In this document
+
+ - Overview of Subscriptions
+
+
+ - Implementing Subscriptions
+
+
+ - Administering Subscriptions
+
+ - Google Play Android Developer API
+
+
+
+ Downloads
+
+ See also
+
+
+
+
+Subscriptions let you sell content, services, or features in your app with
+automated, recurring billing. Adding support for subscriptions is
+straightforward and you can easily adapt an existing In-app Billing
+implementation to sell subscriptions.
+
+If you have already implemented In-app Billing for one-time purchase
+products, you will find that you can add support for subscriptions with minimal
+impact on your code. If you are new to In-app Billing, you can implement
+subscriptions using the standard communication model, data structures, and user
+interactions as for other in-app products.subscriptions. Because the
+implementation of subscriptions follows the same path as for other in-app
+products, details are provided outside of this document, starting with the In-app Billing
+Overview.
+
+This document is focused on highlighting implementation details that are
+specific to subscriptions, along with some strategies for the associated billing
+and business models.
+
+Overview of Subscriptions
+
+A subscription is a new product type offered in In-app Billing that lets you
+sell content, services, or features to users from inside your app with recurring
+monthly or annual billing. You can sell subscriptions to almost any type of
+digital content, from any type of app or game.
+
+As with other in-app products, you configure and publish subscriptions using
+the Developer Console and then sell them from inside apps installed on an
+Android-powered devices. In the Developer console, you create subscription
+products and add them to a product list, setting a price for each, choosing a
+billing interval of monthly or annually, and then publishing. In your apps, it’s
+straightforward to add support for subscription purchases. The implementation
+extends the standard In-app Billing API to support a new product type but uses
+the same communication model, data structures, and user interactions as for
+other in-app products.
+
+When users purchase subscriptions in your apps, Google Play handles all
+checkout details so your apps never have to directly process any financial
+transactions. Google Play processes all payments for subscriptions through
+Google Wallet, just as it does for standard in-app products and app purchases.
+This ensures a consistent and familiar purchase flow for your users.
+
+
+
+
+After users have purchase subscriptions, they can view the subscriptions and
+cancel them, if necessary, from the My Apps screen in the Play Store app or
+from the app's product details page in the Play Store app.
+
+
+
+Once users have purchased a subscription through In-app Billing, you can
+easily give them extended access to additional content on your web site (or
+other service) through the use of a server-side API provided for In-app Billing.
+The server-side API lets you validate the status of a subscription when users
+sign into your other services. For more information about the API, see Google Play Android Developer API, below.
+
+You can also build on your existing external subscriber base from inside your
+Android apps. If you sell subscriptions on a web site, for example, you can add
+your own business logic to your Android app to determine whether the user has
+already purchased a subscription elsewhere, then allow access to your content if
+so or offer a subscription purchase from Google Play if not.
+
+With the flexibility of In-app Billing, you can even implement your own
+solution for sharing subscriptions across as many different apps or products as
+you want. For example, you could sell a subscription that gives a subscriber
+access to an entire collection of apps, games, or other content for a monthly or
+annual fee. To implement this solution, you could add your own business logic to
+your app to determine whether the user has already purchased a given
+subscription and if so, allow access to your content.
+
+
+
+ Subscriptions at a glance
+
+ - Subscriptions let you sell products with automated, recurring billing
+ - You can set up subscriptions with either monthly or annual billing
+ - You can sell multiple subscription items in an app with various billing
+ intervals or prices, such as for promotions
+ - Users purchase your subscriptions from inside your apps, rather than
+ directly from Google Play
+ - Users manage their purchased subscriptions from the My Apps screen in
+ the Play Store app
+ - Google Play uses the original form of payment for recurring billing
+ - If a user cancels a subscription, Google Play considers the subscription valid
+ until the end of the current billing cycle. The user continues to enjoy the content
+ for the rest of the cycle and is not granted a refund.
+
+
+
+
+In general the same basic policies and terms apply to subscriptions as to
+standard in-app products, however there are some differences. For complete
+information about the current policies and terms, please read the policies document.
+
+
+Subscription publishing and unpublishing
+
+To sell a subscription in an app, you use the tools in the Developer Console
+to set up a product list for the app and then create and configure a new
+subscription. In the subscription, you set the price and billing interval and
+define a subscription ID, title, and description. When you are ready, you can
+then publish the subscription in the app product list.
+
+In the product list, you can add subscriptions, in-app products, or both. You
+can add multiple subscriptions that give access to different content or
+services, or you can add multiple subscriptions that give access to the same
+content but for different intervals or different prices, such as for a
+promotion. For example, a news outlet might decide to offer both monthly and
+annual subscriptions to the same content, with annual having a discount. You can
+also offer in-app purchase equivalents for subscription products, to ensure that
+your content is available to users of older devices that do not support
+subscriptions.
+
+After you add a subscription or in-app product to the product list, you must
+publish the product before Google Play can make it available for purchase. Note
+that you must also publish the app itself before Google Play will make the
+products available for purchase inside the app.
+
+Important: At this time, the capability to
+unpublish a subscription is not available. Support for unpublishing a
+subscription is coming to the Developer Console in the weeks ahead, so this is a
+temporary limitation. In the short term, instead of unpublishing,
+you can remove the subscription product from the product list offered in your
+app to prevent users from seeing or purchasing it.
+
+Subscription pricing
+
+When you create a subscription in the Developer Console, you can set a price
+for it in any available currencies. Each subscription must have a non-zero
+price. You can price multiple subscriptions for the same content differently
+— for example you could offer a discount on an annual subscription
+relative to the monthly equivalent.
+
+Important: At this time, once you publish a
+subscription product, you cannot change its price in any currency. Support for
+changing the price of published subscriptions is coming to the Developer Console
+in the weeks ahead. In the short term, you can work around this limitation by
+publishing a new subscription product ID at a new price, then offer it in your
+app instead of the original product. Users who have already purchased will
+continue to be charged at the original price, but new users will be charged at
+the new price.
+
+User billing
+
+You can sell subscription products with automated recurring billing at
+either of two intervals:
+
+
+ - Monthly — Google Play bills the customer’s Google Wallet account at
+ the time of purchase and monthly subsequent to the purchase date (exact billing
+ intervals can vary slightly over time)
+ - Annually — Google Play bills the customer's Google Wallet account at
+ the time of purchase and again on the same date in subsequent years.
+
+
+Billing continues indefinitely at the interval and price specified for the
+subscription. At each subscription renewal, Google Play charges the user account
+automatically, then notifies the user of the charges afterward by email. Billing
+cycles will always match subscription cycles, based on the purchase date.
+
+Over the life of a subscription, the form of payment billed remains the same
+— Google Play always bills the same form of payment (such as credit card,
+Direct Carrier Billing) that was originally used to purchase the
+subscription.
+
+When the subscription payment is approved by Google Wallet, Google Play
+provides a purchase token back to the purchasing app through the In-app Billing
+API. For details, see Purchase token, below. Your apps can
+store the token locally or pass it to your backend servers, which can then use
+it to validate or cancel the subscription remotely using the Google Play Android Developer API.
+
+In the case of billing errors, such as could happen if the customer’s credit
+card becomes invalid, Google Play notifies your app of the change in purchase
+state.
+
+As a best practice, we recommend that your app includes business logic to
+notify your backend servers of subscription purchases, tokens, and any billing
+errors that may occur. Your backend servers can use the server-side API to query
+and update your records and follow up with customers directly, if needed.
+
+Subscription cancellation
+
+Users can view the status of all of their subscriptions and cancel them if
+necessary from the My Apps screen in the Play Store app. Currently, the In-app
+Billing API does not provide support for canceling subscriptions direct from
+inside the purchasing app, although your app can broadcast an Intent to launch
+the Play Store app directly to the My Apps screen.
+
+When the user cancels a subscription, Google Play does not offer a refund for
+the current billing cycle. Instead, it allows the user to have access to the
+cancelled subscription until the end of the current billing cycle, at which time
+it terminates the subscription. For example, if a user purchases a monthly
+subscription and cancels it on the 15th day of the cycle, Google Play will
+consider the subscription valid until the end of the 30th day (or other day,
+depending on the month).
+
+In some cases, the user may contact you directly to request cancellation of a
+subscription. In this and similar cases, you can use the server-side API to
+query and directly cancel the user’s subscription from your servers.
+
+
Important: In all cases, you must continue
+to offer the content that your subscribers have purchased through their
+subscriptions, for as long any users are able to access it. That is, you must
+not remove any subscriber’s content while any user still has an active
+subscription to it, even if that subscription will terminate at the end of the
+current billing cycle. Removing content that a subscriber is entitled to access
+will result in penalties. Please see the policies document for more information.
+
+App uninstallation
+
+When the user uninstalls an app that includes purchased subscriptions, the Play Store app will notify the user that there are active subscriptions. If the user chooses to continue with the uninstalltion, the app is removed and the subscriptions remain active and recurring billing continues. The user can return to cancel the associated subscriptions at any time in the My Apps screen of the Play Store app. If the user chooses to cancel the uninstallation, the app and subscriptions remain as they were.
+
+Refunds
+
+As with other in-app products, Google Play does not provide a refund window
+for subscription purchases. For example, users who purchase an app can ask for a
+refund from Google Play within a 15-minute window. With subscriptions, Google
+Play does not provide a refund window, so users will need to contact you
+directly to request a refund.
+
+
If you receive requests for refunds, you can use the server-side API to
+cancel the subscription or verify that it is already cancelled. However, keep in
+mind that Google Play considers cancelled subscriptions valid until the end of
+their current billing cycles, so even if you grant a refund and cancel the
+subscription, the user will still have access to the content.
+
+
Note: Partial refunds for canceled
+subscriptions are not available at this time.
+
+Payment processing and policies
+
+In general, the terms of Google Play allow you to sell in-app subscriptions
+only through the standard payment processor, Google Wallet. For purchases of any
+subscription products, just as for other in-app products and apps, the
+transaction fee for subscriptions, just as for other in-app purchases, is the
+same as the transaction fee for application purchases (30%).
+
+Apps published on Google Play that are selling subscriptions must use In-app
+Billing to handle the transaction and may not provide links to a purchase flow
+outside of the app and Google Play (such as to a web site).
+
+For complete details about terms and policies, see the policies
+document.
+
+System requirements for subscriptions
+
+In-app purchases of subscriptions are supported only on devices that meet
+these minimum requirements:
+
+
+ - Must run Android 2.2 or higher
+ - Google Play Store app, version 3.5 or higher, must be installed
+
+
+Google Play 3.5 and later versions include support for the In-app Billing
+v2 API or higher, which is needed to support handling of subscription
+products.
+
+Compatibility considerations
+
+As noted in the previous section, support for subscriptions is available only
+on devices that meet the system requirements. Not all devices will receive or
+install Google Play 3.5, so not all users who install your apps will have access
+to the In-app Billing API and subscriptions.
+
+If you are targeting older devices that run Android 2.1 or earlier, we
+recommend that you offer those users an alternative way buy the content that is
+available through subscriptions. For example, you could create standard in-app
+products (one-time purchases) that give access to similar content as your
+subscriptions, possibly for a longer interval such as a year.
+
+
+Implementing Subscriptions
+
+Subscriptions are a standard In-app Billing product type. If you have already
+implemented In-app Billing for one-time purchase products, you will find that
+adding support for subscriptions is straightforward, with minimal impact on your
+code. If you are new to In-app Billing, you can implement subscriptions using
+the standard communication model, data structures, and user interactions as for
+other in-app products.subscriptions.
+
+The full implementation details for In-app Billing are provided outside of
+this document, starting with the In-app Billing
+Overview. This document is focused on highlighting implementation details
+that are specific to subscriptions, along with some strategies for the
+associated billing and business models.
+
+
+Sample application
+
+To help you get started with your In-app Billing implementation and
+subscriptions, an updated version of the In-app Billing sample app is available.
+You can download the sample app from the Android SDK repository using the
+Android SDK Manager. For details, see
+Downloading the Sample Application.
+
+Application model
+
+With subscriptions, your app uses the standard In-app Billing application
+model, sending billing requests to the Play Store application over interprocess
+communication (IPC) and receiving purchase responses from the Play Store app in
+the form of asynchronous broadcast intents. Your application does not manage any
+network connections between itself and the Google Play server or use any special
+APIs from the Android platform.
+
+Your app also uses the standard In-app Billing components — a billing
+Service for sending requests, a BroadcastReceiver for receiving the responses,
+and a security component for verifying that the response was sent by Google
+Play. Also recommended are a response Handler for processing notifications,
+errors, and status messages, and an observer for sending callbacks to your
+application as needed. All of these components and their interactions are
+described in full in the In-app Billing
+Overview and related documents.
+
+To initiate different types of billing communication with Google Play, your
+app will use the standard set of in-app billing requests and receive the same
+responses. Inside the requests and responses are two new fields described below.
+
+
+Purchase token
+
+Central to the end-to-end architecture for subscriptions is the purchase
+token, a string value that uniquely identifies (and associates) a user ID and a
+subscription ID. Google Play generates the purchase token when the user
+completes the purchase of a subscription product (and payment is approved by
+Google Wallet) and then sends it to the purchasing app on the device through the
+In-app Billing API.
+
+At the conclusion of a PURCHASE_REQUEST
message flow, your app
+can retrieve the purchase token and other transaction details by initiating a
+GET_PURCHASE_INFORMATION
request. The Bundle returned by the call
+contains an JSON array of order objects. In the order corresponding to the
+subscription purchase, the token is available in the purchaseToken
+field.
+
+An example of a JSON order object that includes a subscription purchase token
+is shown below.
+
+{ "nonce" : 1836535032137741465,
+ "orders" :
+ [{ "notificationId" : "android.test.purchased",
+ "orderId" : "transactionId.android.test.purchased",
+ "packageName" : "com.example.dungeons",
+ "productId" : "android.test.purchased",
+ "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
+ "purchaseTime" : 1290114783411,
+ "purchaseState" : 0,
+ "purchaseToken" : "rojeslcdyyiapnqcynkjyyjh" }]
+}
+
+
+After receiving a purchase token, your apps can store the token locally or
+pass it to your backend servers, which can then use it to query the billing
+status or cancel the subscription remotely. If your app will store the token
+locally, please read the Security and
+Design document for best practices for maintaining the security of your
+data.
+
+Checking the In-app Billing API version
+
+Subscriptions support is available only in versions of Google Play that
+support the In-app Billing v2 API (Google Play 3.5 and higher). For your app,
+an essential first step at launch is to check whether the version of Google Play
+installed on the device supports the In-app Billing v2 API and
+subscriptions.
+
+To do this, create a CHECK_BILLING_SUPPORTED request Bundle that includes the
+required key-value pairs, together with
+
+
+ - The
API_VERSION
key, assigning a value of 2.
+ - The
BILLING_REQUEST_ITEM_TYPE
key, assigning a value of “subs”
+
+
+Send the request using sendBillingRequest(Bundle)
and receive
+the response Bundle. You can extract the response from the
+BILLING_RESPONSE_RESPONSE_CODE
key of the response. RESULT_OK
+indicates that subscriptions are supported.
+
+The sample app declares constants for the accepted
+BILLING_REQUEST_ITEM_TYPE
values (from Consts.java):
+
+ // These are the types supported in the IAB v2
+ public static final String ITEM_TYPE_INAPP = "inapp";
+ public static final String ITEM_TYPE_SUBSCRIPTION = "subs";
+
+
+It sets up a convenience method for building the request bundle (from BillingService.java):
+
+ protected Bundle makeRequestBundle(String method) {
+ Bundle request = new Bundle();
+ request.putString(Consts.BILLING_REQUEST_METHOD, method);
+ request.putInt(Consts.BILLING_REQUEST_API_VERSION
, 2);
+ request.putString(Consts.BILLING_REQUEST_PACKAGE_NAME, getPackageName());
+ return request;
+ }
+
+
+Here’s an example of how to test support for In-App Billing v2 and subscriptions
+(from BillingService.java):
+
+ /**
+ * Wrapper class that checks if in-app billing is supported.
+ */
+ class CheckBillingSupported extends BillingRequest {
+ public String mProductType = null;
+ public CheckBillingSupported() {
+ // This object is never created as a side effect of starting this
+ // service so we pass -1 as the startId to indicate that we should
+ // not stop this service after executing this request.
+ super(-1);
+ }
+
+ public CheckBillingSupported(String type) {
+ super(-1);
+ mProductType = type;
+ }
+
+ @Override
+ protected long run() throws RemoteException {
+ Bundle request = makeRequestBundle("CHECK_BILLING_SUPPORTED");
+ if (mProductType != null) {
+ request.putString(Consts.BILLING_REQUEST_ITEM_TYPE
, mProductType);
+ }
+ Bundle response = mService.sendBillingRequest(request);
+ int responseCode = response.getInt(Consts.BILLING_RESPONSE_RESPONSE_CODE
);
+ if (Consts.DEBUG) {
+ Log.i(TAG, "CheckBillingSupported response code: " +
+ ResponseCode.valueOf(responseCode));
+ }
+ boolean billingSupported = (responseCode == ResponseCode.RESULT_OK.ordinal());
+ ResponseHandler.checkBillingSupportedResponse(billingSupported, mProductType);
+ return Consts.BILLING_RESPONSE_INVALID_REQUEST_ID;
+ }
+ }
+
+
+Requesting a subscription purchase
+
+Once you’ve checked the API version as described above and determined that
+subscriptions are supported, you can present subscription products to the user
+for purchase. When the user has selected a subscription product and initiated a
+purchase, your app handles the purchase just as it would for other in-app
+products — by sending a REQUEST_PURCHASE request. You can then launch
+Google Play to display the checkout user interface and handle the financial
+transaction..
+
+
The REQUEST_PURCHASE includes a Bundle containing the item details, as
+described in the In-app Billing
+Overview. For a subscription, the Bundle must also specify:
+
+
+ - The
ITEM_ID
key, with a value that specifies a valid, published
+ subscription product.
+ - The
ITEM_TYPE
key, with a value of “subs”
+ (ITEM_TYPE_SUBSCRIPTION
in the sample app). If the request does not
+ specify the subscription's ITEM_TYPE
, Google Play attempts to
+ handle the request as a standard in-app purchase (one-time purchase).
+
+
+Google Play synchronously returns a response bundle that includes
+RESPONSE_CODE
, PURCHASE_INTENT
, and
+REQUEST_ID
. Your app uses the PURCHASE_INTENT
to
+launch the checkout UI and the message flow proceeds exactly as described in Messaging sequence.
+
+Here’s how the sample app initiates a purchase for a subscription, where
+mProductType
is ITEM_TYPE_SUBSCRIPTION
(from
+BillingService.java).
+
+ /**
+ * Wrapper class that requests a purchase.
+ */
+ class RequestPurchase extends BillingRequest {
+ public final String mProductId;
+ public final String mDeveloperPayload;
+ public final String mProductType;
+
+. . .
+
+ @Override
+ protected long run() throws RemoteException {
+ Bundle request = makeRequestBundle("REQUEST_PURCHASE");
+ request.putString(Consts.BILLING_REQUEST_ITEM_ID, mProductId);
+ request.putString(Consts.BILLING_REQUEST_ITEM_TYPE
, mProductType);
+ // Note that the developer payload is optional.
+ if (mDeveloperPayload != null) {
+ request.putString(Consts.BILLING_REQUEST_DEVELOPER_PAYLOAD, mDeveloperPayload);
+ }
+ Bundle response = mService.sendBillingRequest(request);
+ PendingIntent pendingIntent
+ = response.getParcelable(Consts.BILLING_RESPONSE_PURCHASE_INTENT);
+ if (pendingIntent == null) {
+ Log.e(TAG, "Error with requestPurchase");
+ return Consts.BILLING_RESPONSE_INVALID_REQUEST_ID;
+ }
+
+ Intent intent = new Intent();
+ ResponseHandler.buyPageIntentResponse(pendingIntent, intent);
+ return response.getLong(Consts.BILLING_RESPONSE_REQUEST_ID,
+ Consts.BILLING_RESPONSE_INVALID_REQUEST_ID);
+ }
+
+ @Override
+ protected void responseCodeReceived(ResponseCode responseCode) {
+ ResponseHandler.responseCodeReceived(BillingService.this, this, responseCode);
+ }
+ }
+
+
+Restoring transactions
+
+Subscriptions always use the managed by user account purchase type,
+so that you can restore a record of subscription transactions on the device when
+needed. When a user installs your app onto a new device, or when the user
+uninstalls/reinstalls the app on the original device, your app should restore
+the subscriptions that the user has purchased.
+
+The process for restoring subscriptions transactions is the same as described
+in Messaging sequence. Your app sends a
+RESTORE_TRANSACTIONS
request to Google Play. Google Play sends two
+broadcast intents as asynchronous responses — a RESPONSE_CODE
+intent and a PURCHASE_STATE_CHANGED
intent.
+
+The PURCHASE_STATE_CHANGED
intent contains a notification ID
+that your app can use to retrieve the purchase details, including the purchase
+token, by sending a standard GET_PURCHASE_INFORMATION
request. The
+Bundle
returned in the call includes an JSON array of order objects
+corresponding to subscription (and in-app product) purchases that you can
+restore locally.
+
+Your app can store the restored purchase state and other transaction details
+in the way that best meets your needs. Your app can use it later to check the
+subscription validity, although please read the Security and
+Design document for best practices for maintaining the security of your
+data.
+
+Checking subscription validity
+
+Subscriptions are time-bound purchases that require successful billing
+recurrences over time to remain valid. Your app should check the validity of
+purchased subscriptions at launch or prior to granting access to subscriber
+content.
+
+With In-app Billing, you validate a subscription by keeping track of its
+purchase state, such as purchased or cancelled, and then checking the state
+whenever needed. Google Play provides two ways to let you know when the purchase
+state of a subscription changes:
+
+
+ - In-app Billing Notifications. Google Play pushes a notification
+ to your app whenever the purchase state of a subscription changes. Your app can
+ store the most recent purchase state for a given purchase token and then check
+ that state at run time, as needed.
+ - Google Play Android Developer API. You can use this HTTP-based
+ API to poll Google Play for the current purchase state of a subscription. You
+ can store the purchased state for each
purchaseToken
on your
+ backend servers. For more information, see Google Play
+ Android Developer API, below.
+
+
+For most use-cases, especially those where backend servers are already keeping
+track of subscribed users, implementing a combination of both methods is the
+recommended approach. A typical implementation might work like this:
+
+
+ - When the user successfully purchases a new subscription, your app notifies a
+ backend server, which stores the purchase token, user name, and other
+ information in a secure location.
+ - Since your app cannot know the expiration date, your server can poll Google
+ Play to get the expiration and store it with the purchase token and other
+ data.
+ - Because your server now knows the expiration date, it does not need to poll
+ Google Play again until after the expiration date, at which time it can confirm
+ that the subscription was not cancelled.
+ - On the client side, your app can continue to update the server whenever the
+ purchase state changes, storing the state locally.
+
+
+If you are using both notifications and the Google Play Android Developer API to validate subscriptions, we recommend the following:
+
+
+ - If your app wants to check validity but you can’t reach your server (or
+you don’t have a server), use the latest purchase state received by
+notification.
+ - If you have a server and it’s reachable, always give preference to the
+purchase state obtained from your server over the state received in
+notifications.
+
+
+If necessary, you can also use a RESTORE_TRANSACTIONS
request to retrieve a record of all managed and in-app products purchased by the user, which you can then store locally. However, using RESTORE_TRANSACTIONS
on a regular basis is not recommended because of performance impacts.
+
+Regardless of the approach you choose, your app should check subscriptions
+and validity at launch, such as prior to accessing subscriber content, game
+levels, and so on.
+
+
+
+
+
+State purchaseState Value Comments
+
+
+Purchased successfully 0
Sent at original purchase only (not at recurring billing cycles).
+Cancelled 1
Sent at original purchase only if the purchase has failed for some reason.
+Refunded 2
The purchase was refunded.
+Subscription expired 3
Sent if a subscription expires because of non-payment or user cancelation.
+
+
+
+Launching your product page to let the user cancel or view subscriptions
+
+In-app Billing does not currently provide an API to let users directly view or cancel
+subscriptions from within the purchasing app. Instead, users can launch the Play
+Store app on their devices and go to the My Apps screen to manage subscriptions. In My Apps,
+users can see a list of their subscriptions organized by application. Tapping one of the
+subscriptions loads the app's product page, from which users can see active subscriptions
+and billing status and cancel subscriptions as needed.
+
+To make it easier for users to find and manage their subscriptions from inside your app,
+we recommend that you offer a "View My Subscriptions" or "Manage Subscriptions" option in
+your UI that directly loads your app's product page in the Play Store app.
+
+To do this, create an intent with the ACTION_VIEW
+action and include the market://
URI (rather than the http://
+URI) of your app's details page. Here’s an example:
+
+Intent intent = new Intent(Intent.ACTION_VIEW);
+intent.setData(Uri.parse("market://details?id=com.example.app"));
+startActivity(intent);
+
+For more information, see
+ Linking to Your Products.
+
+Recurring billing and changes in purchase state
+
+Google Play notifies your app when the user completes the purchase of a
+subscription, but the purchase state does not change over time, provided that
+recurring billing takes place successfully. Google Play does not notify your app
+of a purchase state change until the subscription expires because of
+non-payment or user cancellation.
+
+Over the life of a subscription, your app does not need to initiate any
+recurring billing events — those are all handled by Google Play and they
+are transparent to your application if billing is successful.
+
+Modifying your app for subscriptions
+
+For subscriptions, you make the same types of modifications to your app as
+are described in
+Modifying your Application Code.
+
+Note that, in your UI that lets users view and select subscriptions for
+purchase, you should add logic to check for purchased subscriptions and validate
+them. Your UI should not present subscriptions if the user has already purchased
+them.
+
+Administering Subscriptions
+
+To create and manage subscriptions, you use the tools in the Developer
+Console, just as for other in-app products.
+
+At the Developer Console, you can configure these attributes for each
+subscription product:
+
+
+- Purchase Type: always set to “subscription”
+- Subscription ID: An identifier for the subscription
+- Publishing State: Unpublished/Published
+- Language: The default language for displaying the subscription
+- Title: The title of the subscription product
+- Description: Details that tell the user about the subscription
+- Price: USD price of subscription per recurrence
+- Recurrence: monthly or yearly
+- Additional currency pricing (can be auto-filled)
+
+
+For details, please see Administering
+In-app Billing.
+
+
+Google Play Android Developer API
+
+Google Play offers an HTTP-based API that you can use to remotely query the
+validity of a specific subscription at any time or cancel a subscription. The
+API is designed to be used from your backend servers as a way of securely
+managing subscriptions, as well as extending and integrating subscriptions with
+other services.
+
+Using the API
+
+To use the API, you must first register a project at the Google APIs Console and receive
+a Client ID and shared secret that your app will present when calling the
+Google Play Android Developer API. All calls to the API are authenticated with
+OAuth 2.0.
+
+Once your app is registered, you can access the API directly, using standard
+HTTP methods to retrieve and manipulate resources, or you can use the Google
+APIs Client Libraries, which are extended to support the API.
+
+The Google Play Android Developer API is built on a RESTful design that uses
+HTTP and JSON, so any standard web stack can send requests and parse the
+responses. However, if you don’t want to send HTTP requests and parse responses
+manually, you can access the API using the client libraries, which provide
+better language integration, improved security, and support for making calls
+that require user authorization.
+
+For more information about the API and how to access it through the Google
+APIs Client Libraries, see the documentation at:
+
+https://developers.
+google.com/android-publisher/v1/
+
+Quota
+
+Applications using the Google Play Android Developer API are limited to an
+initial courtesy usage quota of 15000 requests per day (per
+application). This should provide enough access for normal
+subscription-validation needs, assuming that you follow the recommendation in
+this section.
+
+If you need to request a higher limit for your application, please use the
+“Request more” link in the Google APIs Console.
+Also, please read the section below on design best practices for minimizing your
+use of the API.
+
+Authorization
+
+Calls to the Google Play Android Developer API require authorization. Google
+uses the OAuth 2.0 protocol to allow authorized applications to access user
+data. To learn more, see Authorization
+in the Google Play Android Developer API documentation.
+
+Using the API efficiently
+
+Access to the Google Play Android Developer API is regulated to help ensure a
+high-performance environment for all applications that use it. While you can
+request a higher daily quota for your application, we highly recommend that you
+minimize your access using the technique(s) below.
+
+
+ - Store subscription expiry on your servers — your servers
+ should use the Google Play Android Developer API to query the expiration date
+ for new subscription tokens, then store the expiration date locally. This allows
+ you to check the status of subscriptions only at or after the expiration (see
+ below).
+ - Cache expiration and purchaseState — If your app contacts
+ your backend servers at runtime to verify subscription validity, your server
+ should cache the expiration and purchaseState to ensure the fastest possible
+ response (and best experience) for the user.
+ - Query for subscription status only at expiration — Once your
+ server has retrieved the expiration date of subscription tokens, it should not
+ query the Google Play servers for the subscription status again until the
+ subscription is reaching or has passed the expiration date. Typically, your
+ servers would run a batch query each day to check the status of
+ expiring subscriptions, then update the database. Note that:
+
+ - Your servers should not query all subscriptions every day
+ - Your servers should never query subscription status dynamically, based on
+ individual requests from your Android application.
+
+
+
+
+By following those general guidelines, your implementation will offer the
+best possible performance for users and minimize use of the Google Play Android
+Developer API.
+
diff --git a/docs/html/guide/market/billing/billing_testing.jd b/docs/html/guide/google/play/billing/billing_testing.jd
similarity index 86%
rename from docs/html/guide/market/billing/billing_testing.jd
rename to docs/html/guide/google/play/billing/billing_testing.jd
index 77aa3edc51f7..e2d4a014cbbf 100755
--- a/docs/html/guide/market/billing/billing_testing.jd
+++ b/docs/html/guide/google/play/billing/billing_testing.jd
@@ -13,20 +13,20 @@ parent.link=index.html
Downloads
See also
@@ -42,7 +42,7 @@ must run a standard version of the Android 1.6 or later platform (API level 4 or
the most current version of the Google Play application installed. If a device is not running the
most current Google Play application, your application won't be able to send in-app billing
requests to Google Play. For general information about how to set up a device for use in
-developing Android applications, see Using Hardware
+developing Android applications, see Using Hardware
Devices.
The following section shows you how to set up and use the in-app billing test tools.
@@ -62,7 +62,7 @@ product ID android.test.purchased.
You do not need to list the reserved products in your application's product list. Google Play
@@ -91,10 +91,10 @@ reserved product IDs.
When you make an in-app billing request with this product ID, Google Play responds as
though the purchase was refunded. Refunds cannot be initiated through Google Play's in-app
billing service. Refunds must be initiated by you (the merchant). After you process a refund
- request through your Google Checkout account, a refund message is sent to your application by
- Google Play. This occurs only when Google Play gets notification from Google Checkout that
+ request through your Google Wallet account, a refund message is sent to your application by
+ Google Play. This occurs only when Google Play gets notification from Google Wallet that
a refund has been made. For more information about refunds, see Handling
+ href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-action-notify">Handling
IN_APP_NOTIFY messages and In-app Billing
Pricing.
@@ -108,7 +108,7 @@ reserved product IDs.
In some cases, the reserved items may return signed static responses, which lets you test
signature verification in your application. To test signature verification with the special reserved
product IDs, you may need to set up test accounts or
+href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">test accounts or
upload your application as a unpublished draft application. Table 1 shows you the conditions under
which static responses are signed.
@@ -178,7 +178,7 @@ application's product list you use one of the reserved product IDs.
You cannot use the emulator to test in-app billing; you must install your application on a
device to test in-app billing.
To learn how to install an application on a device, see Running on a
+ href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a
device.
- Sign in to your device with your developer account.
@@ -216,16 +216,16 @@ testing.
To test your in-app billing implementation with actual in-app purchases, you will need to
register at least one test account on the Google Play publisher site. You cannot use your
-developer account to test the complete in-app purchase process because Google Checkout does not let
+developer account to test the complete in-app purchase process because Google Wallet does not let
you buy items from yourself. If you have not set up test accounts before, see Setting up test
+href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">Setting up test
accounts.
Also, a test account can purchase an item in your product list only if the item is published. The
application does not need to be published, but the item does need to be published.
-When you use a test account to purchase items, the test account is billed through Google Checkout
-and your Google Checkout Merchant account receives a payout for the purchase. Therefore, you may
+
When you use a test account to purchase items, the test account is billed through Google Wallet
+and your Google Wallet Merchant account receives a payout for the purchase. Therefore, you may
want to refund purchases that are made with test accounts, otherwise the purchases will show up as
actual payouts to your merchant account.
@@ -243,20 +243,20 @@ actual payouts to your merchant account.
- Add items to the application's product list.
Make sure that you publish the items (the application can remain unpublished). See Creating a product
+ href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-catalog">Creating a product
list to learn how to do this.
- Install your application on an Android-powered device.
You cannot use the emulator to test in-app billing; you must install your application on a
device to test in-app billing.
To learn how to install an application on a device, see Running on a
+ href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a
device.
- Make one of your test accounts the primary account on your device.
To perform end-to-end testing of in-app billing, the primary account on your device must be
one of the test accounts
+ href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">test accounts
that you registered on the Google Play site. If the primary account on your device is not a
test account, you must do a factory reset of the device and then sign in with one of your test
accounts. To perform a factory reset, do the following:
@@ -286,8 +286,8 @@ do a factory reset, making sure you log on with your primary account first.
When you are finished testing your in-app billing implementation, you are ready to
publish your application on Google Play. You can follow the normal steps for preparing, signing, and publishing your application.
+href="{@docRoot}tools/publishing/preparing.html">preparing, signing, and publishing on Google Play.
diff --git a/docs/html/guide/google/play/billing/index.jd b/docs/html/guide/google/play/billing/index.jd
new file mode 100755
index 000000000000..a33b19961f13
--- /dev/null
+++ b/docs/html/guide/google/play/billing/index.jd
@@ -0,0 +1,116 @@
+page.title=In-app Billing
+@jd:body
+
+
+
+
+ Topics
+
+ - Overview of In-app
+ Billing
+ - Implementing In-app
+ Billing
+ - Subscriptions
+ - Security and
+ Design
- Testing In-app
+ Billing
+ - Administering In-app
+ Billing
+
+ Reference
+
+ Downloads
+
+
+
+
+In-app Billing is a Google Play service that lets you sell digital content from inside
+your applications. You can use the service to sell a wide range of content, including downloadable
+content such as media files or photos, virtual content such as game levels or potions, premium services
+and features, and more. You can use In-app Billing to sell products as
+
+
+- Standard in-app products (one-time billing), or
+- Subscriptions, (recurring, automated billing)
+
+
+
+
+ Support for subscriptions New!
+ In-app Billing now lets you sell subscriptions in your apps, as well as standard in-app products.
+ For details on how to sell subscriptions to content, services, and features, see the
+ Subscriptions documentation.
+
+
+
+When you use the in-app billing service to sell an item,
+whether it's an in-app product or a subscription, Google Play
+handles all checkout details so your application never has to directly process
+any financial transactions. Google Play uses the same checkout backend service as
+is used for application purchases, so your users experience a consistent and
+familiar purchase flow (see figure 1). Also, the transaction fee for in-app
+purchases is the same as the transaction fee for application purchases
+(30%).
+
+Any application that you publish through Google Play can implement In-app Billing. No special
+account or registration is required other than an Android Market publisher account and a Google
+Wallet Merchant account. Also, because the service uses no dedicated framework APIs, you can add
+in-app billing to any application that uses a minimum API level of 4 or higher.
+
+To help you integrate in-app billing into your application, the Android SDK
+provides a sample application that demonstrates how to sell standard in-app
+products and subscriptions from inside an app. The sample contains examples of
+billing-related classes you can use to implement in-app billing in your
+application. It also contains examples of the database, user interface, and
+business logic you might use to implement in-app billing.
+
+Important: Although the sample application is a working example
+of how you can implement in-app billing, we strongly recommend that you modify and
+obfuscate the sample code before you use it in a production application. For more information, see
+Security and Design.
+
+
+
+
+To learn more about Google Play's in-app billing service and start integrating it into your
+applications, read the following documents:
+
+
+ - Overview of In-app
+ Billing
+ - Learn how the service works and what a typical in-app billing implementation looks
+ like.
+ - Implementing
+ In-app Billing
+ - Use this step-by-step guide to start incorporating in-app billing into your
+ application. The instructions apply to both one-time and subscription purchases.
+
+ - Subscriptions
+ - Learn how subscriptions work and how to implement support for them in your app.
+ - Security
+ and Design
+ - Review these best practices to help ensure that your in-app billing implementation is
+ secure and well designed.
+ - Testing In-app
+ Billing
+ - Understand how the in-app billing test tools work and learn how to test your in-app billing
+ implementation.
+ - Administering
+ In-app Billing
+ - Learn how to set up your product list, register test accounts, and handle refunds.
+ - In-app Billing
+ Reference
+ - Get detailed information about Google Play response codes and the in-app billing
+ interface.
+
+
diff --git a/docs/html/guide/market/expansion-files.jd b/docs/html/guide/google/play/expansion-files.jd
similarity index 97%
rename from docs/html/guide/market/expansion-files.jd
rename to docs/html/guide/google/play/expansion-files.jd
index 36b8f9ca043e..62ca1e2572f8 100644
--- a/docs/html/guide/market/expansion-files.jd
+++ b/docs/html/guide/google/play/expansion-files.jd
@@ -52,8 +52,8 @@ page.title=APK Expansion Files
See also
@@ -215,7 +215,7 @@ already saved on the device.
- If yes, your app is ready to go.
- If no, your app must download the expansion files over HTTP from Google Play. Your app
must send a request to the Google Play client using the Google Play's Application Licensing service, which
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing service, which
responds with the name, file size, and URL for each expansion file. With this information, you then
download the files and save them to the proper storage location.
@@ -242,7 +242,7 @@ application:
Space is precious and you should keep your total application size as small as possible. If your app
uses more than 50MB in order to provide multiple versions of your graphic assets for multiple screen
densities, consider instead publishing multiple APKs in which each APK
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APKs in which each APK
contains only the assets required for the screens that it targets.
- Determine which application resources to separate from your APK and package them in a
file to use as the main expansion file.
@@ -259,7 +259,7 @@ Library.
- Add logic to your application's main activity that checks whether the expansion files
are on the device upon start-up. If the files are not on the device, use Google Play's Application Licensing service to request URLs
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing service to request URLs
for the expansion files, then download and save them.
To greatly reduce the amount of code you must write and ensure a good user experience
during the download, we recommend you use the Downloader
@@ -292,16 +292,16 @@ provide the URLs for your expansion files if the application was installed by ot
provides for each file is unique for every download and each one expires shortly after it is given
to your application.
- If you update your application with a new APK or upload multiple APKs for the same
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APKs for the same
application, you can select expansion files that you've uploaded for a previous APK. The
expansion file's name does not change—it retains the version received by the APK to
which the file was originally associated.
- If you use expansion files in combination with multiple APKs in order to
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APKs in order to
provide different expansion files for different devices, you still must upload separate APKs
for each device in order to provide a unique {@code versionCode}
-value and declare different filters for
+value and declare different filters for
each APK.
- You cannot issue an update to your application by changing the expansion files
alone—you must upload a new APK to update your app. If your changes only
@@ -333,7 +333,7 @@ time it installs or updates the APK. This way, the expansion files are available
application launches for the first time. However, in some cases your app must download the
expansion files itself by requesting them from a URL provided to you in a response
from Google Play's Application Licensing service.
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing service.
The basic logic you need to download your expansion files is the following:
@@ -346,7 +346,7 @@ href="#StorageLocation">shared storage location (in the
- If the expansion files are not there:
- Perform a request using Google Play's Application Licensing to get your
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing to get your
app's expansion file names, sizes, and URLs.
- Use the URLs provided by Google Play to download the expansion files and save
the expansion files. You must save the files to the
If your application is free (not a paid app), then you probably haven't used the Application Licensing service. It's primarily
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing
service. It's primarily
designed for you to enforce
licensing policies for your application and ensure that the user has the right to
use your app (he or she rightfully paid for it on Google Play). In order to facilitate the
@@ -409,7 +409,7 @@ download your expansion files. The information in the following sections explain
the library into your application.
If you'd rather develop your own solution to download the expansion files using the Google
-Play URLs, you must follow the Application
+Play URLs, you must follow the Application
Licensing documentation to perform a license request, then retrieve the expansion file names,
sizes, and URLs from the response extras. You should use the {@code
APKExpansionPolicy} class (included in the License Verification Library) as your licensing
@@ -447,7 +447,7 @@ receives updates about the download progress.
download two packages from the SDK Manager and add the appropriate libraries to your
application.
-First, open the Android SDK Manager, expand
+
First, open the Android SDK Manager, expand
Extras and download:
- Google Market Licensing package
@@ -571,11 +571,11 @@ DownloaderService} class and override three methods to provide specific applicat
- {@code getPublicKey()}
- This must return a string that is the Base64-encoded RSA public key for your publisher
account, available from the profile page on the Developer Console (see Setting Up for Licensing).
+href="{@docRoot}guide/google/play/licensing/setting-up.html">Setting Up for Licensing).
- {@code getSALT()}
- This must return an array of random bytes that the licensing {@code Policy} uses to
create an {@code
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html#impl-Obfuscator">{@code
Obfuscator}. The salt ensures that your obfuscated {@link android.content.SharedPreferences}
file in which your licensing data is saved will be unique and non-discoverable.
- {@code getAlarmReceiverClassName()}
@@ -924,7 +924,7 @@ expansion files:
For more information about how to use the {@code APKExpansionPolicy} when you're not
using the Downloader Library, see the documentation for Adding Licensing to Your App,
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding Licensing to Your App,
which explains how to implement a license policy such as this one.
@@ -1200,7 +1200,7 @@ finalize these details before publishing your application.
the application as a draft, such that your application is not published for Google Play users,
but the expansion files are available for you to test the download process.
- Install the application on your test device using the Eclipse tools or {@code adb}.
+href="{@docRoot}tools/help/adb.html">{@code adb}.
- Launch the app.
diff --git a/docs/html/guide/appendix/market-filters.jd b/docs/html/guide/google/play/filters.jd
similarity index 99%
rename from docs/html/guide/appendix/market-filters.jd
rename to docs/html/guide/google/play/filters.jd
index 3e502d7d5f19..3db9cb634d06 100644
--- a/docs/html/guide/appendix/market-filters.jd
+++ b/docs/html/guide/google/play/filters.jd
@@ -400,7 +400,7 @@ country (as determined by SIM carrier) in which paid apps are available.Native Platform An application that includes native
libraries that target a specific platform (ARM EABI v7 or x86, for example) are
visible only on devices that support that platform. For details about the NDK and using
- native libraries, see What is the
+ native libraries, see What is the
Android NDK?
Copy-Protected Applications To
copy protect an application, set copy protection to "On" when you configure publishing
@@ -451,4 +451,4 @@ requires that you follow specific rules within your filters and that you pay ext
version codes for each APK to ensure proper update paths for each configuration.
If you need more information about how to publish multiple APKs on Google Play, read Multiple APK Support.
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Multiple APK Support.
diff --git a/docs/html/guide/google/play/index.jd b/docs/html/guide/google/play/index.jd
new file mode 100644
index 000000000000..b11bcdca8001
--- /dev/null
+++ b/docs/html/guide/google/play/index.jd
@@ -0,0 +1,16 @@
+page.title=Google Play APIs
+page.landing=1
+page.landing.intro=When you ditribute your Android app using Google Play you have the opportunity to enhance your app's capabilities with services such as in-app billing and control your app distribution with advanced device filtering.
+@jd:body
+
+
+
+
+ Monetize with in-app billing
Lorem ipsum dolor sit amet, soldum
+consectetur adipiscing elit. Learn more »
+ Control your app distribution
Lorem ipsum dolor sit amet, soldum consectetur
+adipiscing elit. Learn more »
+ Protect from piracy
Lorem ipsum dolor sit amet, soldum
+consectetur adipiscing elit. Learn more »
+
+
\ No newline at end of file
diff --git a/docs/html/guide/market/licensing/adding-licensing.jd b/docs/html/guide/google/play/licensing/adding-licensing.jd
similarity index 97%
rename from docs/html/guide/market/licensing/adding-licensing.jd
rename to docs/html/guide/google/play/licensing/adding-licensing.jd
index d4dd008bcf7c..49375c206b67 100644
--- a/docs/html/guide/market/licensing/adding-licensing.jd
+++ b/docs/html/guide/google/play/licensing/adding-licensing.jd
@@ -72,11 +72,11 @@ most applications).
The sections below describe these tasks. When you are done with the
integration, you should be able to compile your application successfully and you
can begin testing, as described in Setting Up the Test
+href="{@docRoot}guide/google/play/licensing/setting-up.html#test-env">Setting Up the Test
Environment.
For an overview of the full set of source files included in the LVL, see Summary of LVL Classes
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#lvl-summary">Summary of LVL Classes
and Interfaces.
@@ -224,7 +224,7 @@ in local persistent storage.
cached response is valid, rather than making a request to the licensing server.
Setting the response validity according to the server-provided VT
extra is highly recommended. See Server Response Extras
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response Extras
for more information.
- Uses an exponential backoff period, if retrying any requests the result in
errors. Note that the Google Play client automatically retries failed
@@ -247,7 +247,7 @@ server-provided settings is straightforward and making use of them is highly
recommended. See the ServerManagedPolicy implementation for an example of how to
extract and use the extras. For a list of server settings and information about
how to use them, see Server Response
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response
Extras.
ServerManagedPolicy
@@ -261,7 +261,7 @@ settings to the responses, to help the application manage licensing effectively.
See Server Response Extras
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response Extras
for
a list of settings and ServerManagedPolicy.java
for information
about how a {@code Policy} can use the extras.
@@ -294,7 +294,7 @@ retry count, among others. ServerManagedPolicy extracts the values from the
license response in its processServerResponse()
method and checks
them in its allowAccess()
method. For a list of the server-provided
settings used by ServerManagedPolicy, see Server Response
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response
Extras.
For convenience, best performance, and the benefit of using license settings
@@ -650,8 +650,7 @@ new license check if the reason
supplied is {@code Policy.RETRY}. <
deep-links the user to the application's details page on Google Play, from which the
use can purchase the application. For more information on how to set up such
links, see Linking to your apps
-on Google Play.
+href="{@docRoot}distribute/googleplay/promote/linking.html">Linking to Your Products.
- Display a Toast notification that indicates that the features of the
application are limited because it is not licensed.
@@ -698,9 +697,9 @@ private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
Additionally, you should implement the applicationError()
method, which the LVL calls to let your application handle errors that are not
retryable. For a list of such errors, see Server
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#server-response-codes">Server
Response Codes in the Licensing Reference. You can implement
+href="guide/google/play/licensing/licensing-reference.html">Licensing Reference. You can implement
the method in any way needed. In most cases, the
method should log the error code and call dontAllow()
.
@@ -999,9 +998,9 @@ Play Licensing.
When you are finished testing your license implementation, you are ready to
publish the application on Google Play. Follow the normal steps to prepare, sign, and then publish the application.
+href="{@docRoot}tools/publishing/preparing.html">prepare, sign, and then publish the application.
Removing Copy Protection
diff --git a/docs/html/guide/market/licensing/index.jd b/docs/html/guide/google/play/licensing/index.jd
similarity index 86%
rename from docs/html/guide/market/licensing/index.jd
rename to docs/html/guide/google/play/licensing/index.jd
index 1f15303e4e8e..d393738bac17 100644
--- a/docs/html/guide/market/licensing/index.jd
+++ b/docs/html/guide/google/play/licensing/index.jd
@@ -31,25 +31,25 @@ on Google Play. However, any application (including free apps) may use the licen
to initiate the download of an APK expansion file. In which case, the request that your application
sends to the licensing service is not to check whether the user paid for the app, but to request the
URL of the expansion files. For information about downloading expansion files for your application,
-read the guide to APK Expansion Files.
+read the guide to APK Expansion Files.
To learn more about Google Play's application licensing service and start integrating it into
your applications, read the following documents:
- - Licensing
+
- Licensing
Overview
- Describes how the service works and what a typical licensing implementation looks
like.
- - Setting Up for
+
- Setting Up for
Licensing
- Explains how to set up your Google Play account, development environment, and
testing environment in order to add licensing to your app.
- - Adding
+
- Adding
Licensing to Your App
- Provides a step-by-step guide to add licensing verification to your application.
- - Licensing
+
- Licensing
Reference
- Provides detailed information about the licensing library's classes and the service response
codes.
diff --git a/docs/html/guide/market/licensing/licensing-reference.jd b/docs/html/guide/google/play/licensing/licensing-reference.jd
similarity index 98%
rename from docs/html/guide/market/licensing/licensing-reference.jd
rename to docs/html/guide/google/play/licensing/licensing-reference.jd
index 0a7e03331b8e..d3d522460ee3 100644
--- a/docs/html/guide/market/licensing/licensing-reference.jd
+++ b/docs/html/guide/google/play/licensing/licensing-reference.jd
@@ -230,7 +230,7 @@ implementation.
Note: As documented in
+href="{@docRoot}guide/google/play/licensing/setting-up.html#test-env">
Setting Up The Testing Environment, the response code can be manually
overridden for the application developer and any registered test users via the
Google Play publisher site.
@@ -251,13 +251,13 @@ testing purposes.
period and provide other information, The licensing server includes several pieces of
information in the license responses. Specifically, the service provides recommended values for the
application's license validity period, retry grace period, maximum allowable retry count, and other
-settings. If your application uses APK
+settings. If your application uses APK
expansion files, the response also includes the file names, sizes, and URLs. The server appends
the settings as key-value pairs in the license response "extras" field.
Any {@code Policy} implementation can extract the extras settings from the license
response and use them as needed. The LVL default {@code Policy} implementation, {@code
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html#ServerManagedPolicy">{@code
ServerManagedPolicy}, serves as a working
implementation and an illustration of how to obtain, store, and use the
settings.
diff --git a/docs/html/guide/market/licensing/overview.jd b/docs/html/guide/google/play/licensing/overview.jd
similarity index 98%
rename from docs/html/guide/market/licensing/overview.jd
rename to docs/html/guide/google/play/licensing/overview.jd
index e7e23f877dad..467a3a2c151c 100644
--- a/docs/html/guide/market/licensing/overview.jd
+++ b/docs/html/guide/google/play/licensing/overview.jd
@@ -206,7 +206,7 @@ secure.
functions when run on a device that does not offer Google Play.
- You can implement licensing controls for a free app, but only if you're using the service to
provide APK expansion files.
+href="{@docRoot}guide/google/play/expansion-files.html">APK expansion files .
@@ -237,7 +237,7 @@ across all compatible devices, locked or unlocked, that run Android 1.5 or
higher version of the platform.
To begin adding application licensing to your application, continue to Setting Up for Licensing.
+href="{@docRoot}guide/google/play/licensing/setting-up.html">Setting Up for Licensing .
diff --git a/docs/html/guide/market/licensing/setting-up.jd b/docs/html/guide/google/play/licensing/setting-up.jd
similarity index 95%
rename from docs/html/guide/market/licensing/setting-up.jd
rename to docs/html/guide/google/play/licensing/setting-up.jd
index 0de7819b0108..80a44192c754 100644
--- a/docs/html/guide/market/licensing/setting-up.jd
+++ b/docs/html/guide/google/play/licensing/setting-up.jd
@@ -46,7 +46,7 @@ href="http://play.google.com/apps/publish">http://play.google.com/apps/publish
For more information, see Publishing on Google Play.
+href="{@docRoot}distribute/googleplay/publish/register.html">Get Started with Publishing .
If you already have a publisher account on Google Play, use your existing
account to set up licensing.
@@ -102,7 +102,7 @@ responses, see Setting Up a Testing Environment, below.
The sections below describe these tasks. When you are done with setup,
-you can begin Adding
+you can begin Adding
Licensing to Your App.
To get started, you need to set up a proper runtime environment on which
@@ -146,7 +146,7 @@ be able to communicate with the Google Play licensing server.
For general information about how to set up a device for use in developing
Android applications, see Using Hardware Devices.
+href="{@docRoot}tools/device.html">Using Hardware Devices.
Running on an Android emulator
@@ -199,7 +199,7 @@ Android Virtual Devices.
If you are not familiar with AVDs or how to use them, see Managing Virtual Devices.
+href="{@docRoot}tools/devices/index.html">Managing Virtual Devices.
Updating your project configuration
@@ -266,7 +266,7 @@ the LVL library project and the example application into these directories:
application)
If you aren't familiar with how to download packess into your SDK, see the
-Adding SDK Packages
+Exploring the SDK
document.
@@ -306,7 +306,7 @@ version of the LVL.
share its code and resources across multiple applications.
If you aren't familiar with library projects or how
-to use them, see
+to use them, see
Managing Projects.
@@ -345,7 +345,7 @@ no further configuration is needed.
For more information about how to create an application project or work with
library projects in Eclipse, see Managing Projects from
+href="{@docRoot}tools/projects/projects-eclipse.html">Managing Projects from
Eclipse with ADT.
@@ -358,7 +358,7 @@ LVL's library/src/com
directory into your application's
If you add the LVL sources directly to your application, you can skip the
next section and start working with the library, as described in Adding
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding
Licensing to Your App.
@@ -379,7 +379,7 @@ haven't done that already, do it now before continuing.
Select the "Android" properties group and click Add, then
choose the LVL library project (com_android_vending_licensing) and click
OK. For more information, see
-
+
Managing Projects from Eclipse with ADT.
@@ -407,7 +407,7 @@ properties, including the reference to the library project:
For more information about working with library projects,
-see
+see
Setting up a Library Project.
@@ -483,9 +483,9 @@ test in your application.
In general, you should make sure to test your application's licensing
implementation with every response code available in the Test Response menu.
For a description of the codes, see Server
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#server-response-codes">Server
Response Codes in the Licensing Reference.
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html">Licensing Reference.
See Server
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#server-response-codes">Server
Response Codes for a list of
test responses available and their meanings.
@@ -695,7 +695,7 @@ publisher account or test account each time you wipe data when restarting the
emulator.
Once you've completed the setup procedures, continue to Adding Licensing to Your App.
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding Licensing to Your App.
diff --git a/docs/html/guide/market/publishing/multiple-apks.jd b/docs/html/guide/google/play/publishing/multiple-apks.jd
similarity index 96%
rename from docs/html/guide/market/publishing/multiple-apks.jd
rename to docs/html/guide/google/play/publishing/multiple-apks.jd
index e7cfa33dac95..e41817e4520d 100644
--- a/docs/html/guide/market/publishing/multiple-apks.jd
+++ b/docs/html/guide/google/play/publishing/multiple-apks.jd
@@ -45,11 +45,11 @@ support all desired devices with a single APK
See also
- - Filters on Google Play
+ - Filters on Google Play
- Supporting Multiple Screens
- - Compatibility
+
- Compatibility
Package
- - Android API Levels
+ - Android API Levels
@@ -192,7 +192,7 @@ following sections describe more about how it works.
Supported filters
Which devices receive each APK is determined by Google Play filters that are specified by
+href="{@docRoot}guide/google/play/filters.html">Google Play filters that are specified by
elements in the manifest file of each APK. However, Google Play allows you to publish multiple
APKs only when each APK uses filters to support a variation of the following
device characteristics:
@@ -286,7 +286,7 @@ higher, as per the previous note).
Other manifest elements that enable Google Play filters—but are not
+href="{@docRoot}guide/google/play/filters.html">Google Play filters—but are not
listed above—are still applied for each APK as usual. However, Google Play does not allow
you to publish multiple APKs based on variations of them. Thus, you cannot publish
multiple APKs if the above listed filters are the same for each APK (but the APKs differ based on
@@ -402,7 +402,7 @@ as textures—based on the build configuration.)
Tip: One way to avoid duplicating large portions of your
application code is to use a library project. A library
+href="{@docRoot}tools/projects/index.html#LibraryProjects">library project. A library
project holds shared code and resources, which you can include in your actual application
projects.
@@ -523,7 +523,7 @@ APK—by using only one APK, you can simply increase the version code with e
be done.
- You need to manage only a single code base.
Although you can use a library project
+href="{@docRoot}tools/projects/index.html#LibraryProjects">library project
to share code between multiple Android projects, it's still likely that you'll reproduce some code
across each project and this could become difficult to manage, especially when resolving
bugs.
@@ -600,8 +600,8 @@ different screen sizes.
href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens.
Additionally, you should consider using a support library from the Compatibility Package so that you can add Fragments to your activity designs
+href="{@docRoot}tools/extras/support-library.html">Compatibility Package so that you can add Fragments to your activity designs
when running on larger screens such as tablets.
@@ -612,14 +612,14 @@ when running on larger screens such as tablets.
only APIs available in the lowest reasonable version. For example, your application may not require
APIs newer than Android 2.1 (API Level 7), which makes an application available to
over 95% of Android-powered devices (as indicated by the Platform Versions dashboard).
+href="{@docRoot}about/dashboards/index.html">Platform Versions dashboard).
By using a support library from the Compatibility Package, you can also use APIs
+href="{@docRoot}tools/extras/support-library.html">Compatibility Package, you can also use APIs
from some of the latest versions (such as Android 3.0) while
still supporting versions as low as Android 1.6. The support library includes APIs for Fragments, Loaders, and more. Using the fragment
+href="{@docRoot}guide/components/fragments.html">Fragments, Loaders, and more. Using the fragment
APIs is particularly valuable so that you can optimize your user interface for large devices such as
tablets.
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 62d18aee3f9a..44b977e327dd 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -5,236 +5,80 @@
Below are template spans for adding localized doc titles. Please ensure that
localized titles are added in the language order specified below.
?>
-
-
- -
-
- Android Basics
-
-
-
-
-
-
-
-
-
-
-
- -
-
- Framework Topics
-
-
-
-
-
-
-
-
+
For more information on using DDMS to spoof location data, see
-Using DDMS.
+Using DDMS.
Using the "geo" command in the emulator console
@@ -451,4 +451,4 @@ lat/long coordinates, with a GPX file for route playback, or a KML file for mult
For information about how to connect to the emulator console, see
-Using the Emulator Console.
+Using the Emulator Console.
diff --git a/docs/html/guide/topics/manifest/action-element.jd b/docs/html/guide/topics/manifest/action-element.jd
index 8ad94cdc1d50..037d0dc75d3d 100644
--- a/docs/html/guide/topics/manifest/action-element.jd
+++ b/docs/html/guide/topics/manifest/action-element.jd
@@ -16,7 +16,7 @@ parent.link=manifest-intro.html
An <intent-filter>
element must contain
one or more {@code <action>} elements. If it doesn't contain any, no
Intent objects will get through the filter. See
-Intents and
+Intents and
Intent Filters for details on intent filters and the role of action
specifications within a filter.
diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd
index 9dc124be4f3e..88f226c7e61b 100644
--- a/docs/html/guide/topics/manifest/activity-element.jd
+++ b/docs/html/guide/topics/manifest/activity-element.jd
@@ -508,7 +508,7 @@ other activities and tasks using the Back button.
For more information on launch modes and their interaction with Intent
flags, see the
-Tasks and Back Stack
+Tasks and Back Stack
document.
diff --git a/docs/html/guide/topics/manifest/category-element.jd b/docs/html/guide/topics/manifest/category-element.jd
index f392c0a30f52..41a2cfdedb71 100644
--- a/docs/html/guide/topics/manifest/category-element.jd
+++ b/docs/html/guide/topics/manifest/category-element.jd
@@ -12,7 +12,7 @@ parent.link=manifest-intro.html
- description:
- Adds a category name to an intent filter. See
-Intents and
+Intents and
Intent Filters for details on intent filters and the role of category
specifications within a filter.
diff --git a/docs/html/guide/topics/manifest/compatible-screens-element.jd b/docs/html/guide/topics/manifest/compatible-screens-element.jd
index a27c31624de2..bb004fbef46c 100644
--- a/docs/html/guide/topics/manifest/compatible-screens-element.jd
+++ b/docs/html/guide/topics/manifest/compatible-screens-element.jd
@@ -54,7 +54,7 @@ href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code
<supports-screens>} element to declare whether the system should resize your
application for different screen sizes.
- Also see the Filters on Google Play
+
Also see the Filters on Google Play
document for more information about how Google Play filters applications using this and
other manifest elements.
@@ -138,5 +138,5 @@ entry looks like if your application is compatible with only small and normal sc
- see also:
- Supporting Multiple Screens
-- Filters on Google Play
+- Filters on Google Play
diff --git a/docs/html/guide/topics/manifest/data-element.jd b/docs/html/guide/topics/manifest/data-element.jd
index 9b0d0df6ae06..8fd91deae6a2 100644
--- a/docs/html/guide/topics/manifest/data-element.jd
+++ b/docs/html/guide/topics/manifest/data-element.jd
@@ -62,7 +62,7 @@ options. None of its attributes have default values.
Information on how intent filters work, including the rules for how Intent objects
are matched against filters, can be found in another document,
-Intents and
+Intents and
Intent Filters. See also the
Intent Filters
section in the introduction.
diff --git a/docs/html/guide/topics/manifest/intent-filter-element.jd b/docs/html/guide/topics/manifest/intent-filter-element.jd
index d2934005f47b..f90541cafd17 100644
--- a/docs/html/guide/topics/manifest/intent-filter-element.jd
+++ b/docs/html/guide/topics/manifest/intent-filter-element.jd
@@ -41,7 +41,7 @@ Most of the contents of the filter are described by its
For a more detailed discussion of filters, see the separate
-Intents
+Intents
and Intent Filters document, as well as the
Intents Filters
section in the introduction.
diff --git a/docs/html/guide/topics/manifest/manifest-element.jd b/docs/html/guide/topics/manifest/manifest-element.jd
index 98968d739f12..a3d4a955e396 100644
--- a/docs/html/guide/topics/manifest/manifest-element.jd
+++ b/docs/html/guide/topics/manifest/manifest-element.jd
@@ -152,7 +152,7 @@ either internal or external storage through the system settings.
Caution: If your application uses Google Play's Copy
Protection feature, it cannot be installed to a device's SD card. However, if you use Google
- Play's Application Licensing instead,
+ Play's Application Licensing instead,
your application can be installed to internal or external storage, including SD cards.
Note: By default, your application will be installed on the
diff --git a/docs/html/guide/topics/manifest/manifest-intro.jd b/docs/html/guide/topics/manifest/manifest-intro.jd
index 0f2030556587..a130f7d9761e 100644
--- a/docs/html/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html/guide/topics/manifest/manifest-intro.jd
@@ -345,7 +345,7 @@ filters.
For information on how Intent objects are tested against intent filters,
see a separate document,
-Intents
+Intents
and Intent Filters.
diff --git a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
index ebdd0b10917a..6dfc59e0b800 100644
--- a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
+++ b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
@@ -141,7 +141,7 @@ and others.
- see also:
-
diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd
index 5f0a501c3670..f60529513cfc 100644
--- a/docs/html/guide/topics/manifest/uses-feature-element.jd
+++ b/docs/html/guide/topics/manifest/uses-feature-element.jd
@@ -207,7 +207,7 @@ can check at run-time whether a higher level of OpenGL ES is available.)
- {@link android.content.pm.FeatureInfo}
- {@link android.content.pm.ConfigurationInfo}
<uses-permission>
- - Filters on Google Play
+ - Filters on Google Play
@@ -501,7 +501,7 @@ If you are using SDK Tools r8 or higher, you can find aapt
in the
Note: You must use the version of
aapt
that is provided for the latest Platform-Tools component available. If
you do not have the latest Platform-Tools component, download it using the Android SDK Manager.
+href="{@docRoot}sdk/exploring.html">Android SDK Manager.
- Run
aapt
using this syntax:
diff --git a/docs/html/guide/topics/manifest/uses-library-element.jd b/docs/html/guide/topics/manifest/uses-library-element.jd
index 2f8eb508c270..3ad8ddb5589a 100644
--- a/docs/html/guide/topics/manifest/uses-library-element.jd
+++ b/docs/html/guide/topics/manifest/uses-library-element.jd
@@ -46,7 +46,7 @@ parent.link=manifest-intro.html
-
Google Play filters applications based on the libraries installed on the
user's device. For more information about filtering, see the topic
- Filters on Google Play.
+ Filters on Google Play.
diff --git a/docs/html/guide/topics/manifest/uses-sdk-element.jd b/docs/html/guide/topics/manifest/uses-sdk-element.jd
index 8fa39d156914..29dcb56b8b74 100644
--- a/docs/html/guide/topics/manifest/uses-sdk-element.jd
+++ b/docs/html/guide/topics/manifest/uses-sdk-element.jd
@@ -3,6 +3,29 @@ parent.title=The AndroidManifest.xml File
parent.link=manifest-intro.html
@jd:body
+
+
+
+
+In this document
+
+
+
+
- syntax:
@@ -25,9 +48,8 @@ The API Level is always a single integer. You cannot derive the API Level from
its associated Android version number (for example, it is not the same as the
major version or the sum of the major and minor versions).
-For more information, read about
-Android API Levels and
-Versioning Your Applications.
+
Also read the document about
+Versioning Your Applications.
@@ -42,7 +64,7 @@ version-compatibility. To do this, Google Play checks the <uses-sdk>
attributes in each application's manifest to establish its version-compatibility
range, then shows or hides the application based on a comparison with the API
Level of the user's Android system version. For more information, see Filters on Google Play.
+href="{@docRoot}guide/google/play/filters.html">Filters on Google Play.
@@ -156,3 +178,403 @@ download.
- API Level 1
+
+
+
+
+
+
+
+
+
+
+What is API Level?
+
+API Level is an integer value that uniquely identifies the framework API
+revision offered by a version of the Android platform.
+
+The Android platform provides a framework API that applications can use to
+interact with the underlying Android system. The framework API consists of:
+
+
+- A core set of packages and classes
+- A set of XML elements and attributes for declaring a manifest file
+- A set of XML elements and attributes for declaring and accessing resources
+- A set of Intents
+- A set of permissions that applications can request, as well as permission
+enforcements included in the system
+
+
+Each successive version of the Android platform can include updates to the
+Android application framework API that it delivers.
+
+Updates to the framework API are designed so that the new API remains
+compatible with earlier versions of the API. That is, most changes in the API
+are additive and introduce new or replacement functionality. As parts of the API
+are upgraded, the older replaced parts are deprecated but are not removed, so
+that existing applications can still use them. In a very small number of cases,
+parts of the API may be modified or removed, although typically such changes are
+only needed to ensure API robustness and application or system security. All
+other API parts from earlier revisions are carried forward without
+modification.
+
+The framework API that an Android platform delivers is specified using an
+integer identifier called "API Level". Each Android platform version supports
+exactly one API Level, although support is implicit for all earlier API Levels
+(down to API Level 1). The initial release of the Android platform provided
+API Level 1 and subsequent releases have incremented the API Level.
+
+The following table specifies the API Level supported by each version of the
+Android platform.
+
+
+ Platform Version API Level VERSION_CODE Notes
+
+ Android 4.0.3
+ 15
+ {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1}
+ Platform
+Highlights
+
+ Android 4.0, 4.0.1, 4.0.2
+ 14
+ {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}
+
+
+ Android 3.2
+ 13
+ {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}
+
+
+ Android 3.1.x
+ 12
+ {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}
+ Platform Highlights
+
+ Android 3.0.x
+ 11
+ {@link android.os.Build.VERSION_CODES#HONEYCOMB}
+ Platform Highlights
+
+ Android 2.3.4
Android 2.3.3
+ 10
+ {@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1}
+ Platform
+Highlights
+
+ Android 2.3.2
Android 2.3.1
Android
+2.3
+ 9
+ {@link android.os.Build.VERSION_CODES#GINGERBREAD}
+
+
+ Android 2.2.x
+ 8
+ {@link android.os.Build.VERSION_CODES#FROYO}
+ Platform Highlights
+
+ Android 2.1.x
+ 7
+ {@link android.os.Build.VERSION_CODES#ECLAIR_MR1}
+ Platform
+Highlights
+
+ Android 2.0.1
+ 6
+ {@link android.os.Build.VERSION_CODES#ECLAIR_0_1}
+
+
+ Android 2.0
+ 5
+ {@link android.os.Build.VERSION_CODES#ECLAIR}
+
+
+ Android 1.6
+ 4
+ {@link android.os.Build.VERSION_CODES#DONUT}
+ Platform Highlights
+
+ Android 1.5
+ 3
+ {@link android.os.Build.VERSION_CODES#CUPCAKE}
+ Platform Highlights
+
+ Android 1.1
+ 2
+ {@link android.os.Build.VERSION_CODES#BASE_1_1}
+
+ Android 1.0
+ 1
+ {@link android.os.Build.VERSION_CODES#BASE}
+
+
+
+
+Uses of API Level in Android
+
+The API Level identifier serves a key role in ensuring the best possible
+experience for users and application developers:
+
+
+- It lets the Android platform describe the maximum framework API revision
+that it supports
+- It lets applications describe the framework API revision that they
+require
+- It lets the system negotiate the installation of applications on the user's
+device, such that version-incompatible applications are not installed.
+
+
+Each Android platform version stores its API Level identifier internally, in
+the Android system itself.
+
+Applications can use a manifest element provided by the framework API —
+<uses-sdk>
— to describe the minimum and maximum API
+Levels under which they are able to run, as well as the preferred API Level that
+they are designed to support. The element offers three key attributes:
+
+
+android:minSdkVersion
— Specifies the minimum API Level
+on which the application is able to run. The default value is "1".
+android:targetSdkVersion
— Specifies the API Level
+on which the application is designed to run. In some cases, this allows the
+application to use manifest elements or behaviors defined in the target
+API Level, rather than being restricted to using only those defined
+for the minimum API Level.
+android:maxSdkVersion
— Specifies the maximum API Level
+on which the application is able to run. Important: Please read the <uses-sdk>
+documentation before using this attribute.
+
+
+For example, to specify the minimum system API Level that an application
+requires in order to run, the application would include in its manifest a
+<uses-sdk>
element with a android:minSdkVersion
+attribute. The value of android:minSdkVersion
would be the integer
+corresponding to the API Level of the earliest version of the Android platform
+under which the application can run.
+
+When the user attempts to install an application, or when revalidating an
+appplication after a system update, the Android system first checks the
+<uses-sdk>
attributes in the application's manifest and
+compares the values against its own internal API Level. The system allows the
+installation to begin only if these conditions are met:
+
+
+- If a
android:minSdkVersion
attribute is declared, its value
+must be less than or equal to the system's API Level integer. If not declared,
+the system assumes that the application requires API Level 1.
+- If a
android:maxSdkVersion
attribute is declared, its value
+must be equal to or greater than the system's API Level integer.
+If not declared, the system assumes that the application
+has no maximum API Level. Please read the <uses-sdk>
+documentation for more information about how the system handles this attribute.
+
+
+When declared in an application's manifest, a <uses-sdk>
+element might look like this:
+
+<manifest>
+ <uses-sdk android:minSdkVersion="5" />
+ ...
+</manifest>
+
+The principal reason that an application would declare an API Level in
+android:minSdkVersion
is to tell the Android system that it is
+using APIs that were introduced in the API Level specified. If the
+application were to be somehow installed on a platform with a lower API Level,
+then it would crash at run-time when it tried to access APIs that don't exist.
+The system prevents such an outcome by not allowing the application to be
+installed if the lowest API Level it requires is higher than that of the
+platform version on the target device.
+
+For example, the {@link android.appwidget} package was introduced with API
+Level 3. If an application uses that API, it must declare a
+android:minSdkVersion
attribute with a value of "3". The
+application will then be installable on platforms such as Android 1.5 (API Level
+3) and Android 1.6 (API Level 4), but not on the Android 1.1 (API Level 2) and
+Android 1.0 platforms (API Level 1).
+
+For more information about how to specify an application's API Level
+requirements, see the <uses-sdk>
+ section of the manifest file documentation.
+
+
+Development Considerations
+
+The sections below provide information related to API level that you should
+consider when developing your application.
+
+Application forward compatibility
+
+Android applications are generally forward-compatible with new versions of
+the Android platform.
+
+Because almost all changes to the framework API are additive, an Android
+application developed using any given version of the API (as specified by its
+API Level) is forward-compatible with later versions of the Android platform and
+higher API levels. The application should be able to run on all later versions
+of the Android platform, except in isolated cases where the application uses a
+part of the API that is later removed for some reason.
+
+Forward compatibility is important because many Android-powered devices
+receive over-the-air (OTA) system updates. The user may install your
+application and use it successfully, then later receive an OTA update to a new
+version of the Android platform. Once the update is installed, your application
+will run in a new run-time version of the environment, but one that has the API
+and system capabilities that your application depends on.
+
+In some cases, changes below the API, such those in the underlying
+system itself, may affect your application when it is run in the new
+environment. For that reason it's important for you, as the application
+developer, to understand how the application will look and behave in each system
+environment. To help you test your application on various versions of the Android
+platform, the Android SDK includes multiple platforms that you can download.
+Each platform includes a compatible system image that you can run in an AVD, to
+test your application.
+
+Application backward compatibility
+
+Android applications are not necessarily backward compatible with versions of
+the Android platform older than the version against which they were compiled.
+
+
+Each new version of the Android platform can include new framework APIs, such
+as those that give applications access to new platform capabilities or replace
+existing API parts. The new APIs are accessible to applications when running on
+the new platform and, as mentioned above, also when running on later versions of
+the platform, as specified by API Level. Conversely, because earlier versions of
+the platform do not include the new APIs, applications that use the new APIs are
+unable to run on those platforms.
+
+Although it's unlikely that an Android-powered device would be downgraded to
+a previous version of the platform, it's important to realize that there are
+likely to be many devices in the field that run earlier versions of the
+platform. Even among devices that receive OTA updates, some might lag and
+might not receive an update for a significant amount of time.
+
+Selecting a platform version and API Level
+
+When you are developing your application, you will need to choose
+the platform version against which you will compile the application. In
+general, you should compile your application against the lowest possible
+version of the platform that your application can support.
+
+
You can determine the lowest possible platform version by compiling the
+application against successively lower build targets. After you determine the
+lowest version, you should create an AVD using the corresponding platform
+version (and API Level) and fully test your application. Make sure to declare a
+android:minSdkVersion
attribute in the application's manifest and
+set its value to the API Level of the platform version.
+
+Declaring a minimum API Level
+
+If you build an application that uses APIs or system features introduced in
+the latest platform version, you should set the
+android:minSdkVersion
attribute to the API Level of the latest
+platform version. This ensures that users will only be able to install your
+application if their devices are running a compatible version of the Android
+platform. In turn, this ensures that your application can function properly on
+their devices.
+
+If your application uses APIs introduced in the latest platform version but
+does not declare a android:minSdkVersion
attribute, then
+it will run properly on devices running the latest version of the platform, but
+not on devices running earlier versions of the platform. In the latter
+case, the application will crash at runtime when it tries to use APIs that don't
+exist on the earlier versions.
+
+Testing against higher API Levels
+
+After compiling your application, you should make sure to test it on the
+platform specified in the application's android:minSdkVersion
+attribute. To do so, create an AVD that uses the platform version required by
+your application. Additionally, to ensure forward-compatibility, you should run
+and test the application on all platforms that use a higher API Level than that
+used by your application.
+
+The Android SDK includes multiple platform versions that you can use,
+including the latest version, and provides an updater tool that you can use to
+download other platform versions as necessary.
+
+To access the updater, use the android
command-line tool,
+located in the <sdk>/tools directory. You can launch the SDK updater by
+executing android sdk
. You can
+also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
+In ADT, you can also access the updater by selecting
+Window > Android SDK
+Manager.
+
+To run your application against different platform versions in the emulator,
+create an AVD for each platform version that you want to test. For more
+information about AVDs, see Creating and Managing Virtual Devices. If
+you are using a physical device for testing, ensure that you know the API Level
+of the Android platform it runs. See the table at the top of this document for
+a list of platform versions and their API Levels.
+
+Using a Provisional API Level
+
+In some cases, an "Early Look" Android SDK platform may be available. To let
+you begin developing on the platform although the APIs may not be final, the
+platform's API Level integer will not be specified. You must instead use the
+platform's provisional API Level in your application manifest, in order
+to build applications against the platform. A provisional API Level is not an
+integer, but a string matching the codename of the unreleased platform version.
+The provisional API Level will be specified in the release notes for the Early
+Look SDK release notes and is case-sensitive.
+
+The use of a provisional API Level is designed to protect developers and
+device users from inadvertently publishing or installing applications based on
+the Early Look framework API, which may not run properly on actual devices
+running the final system image.
+
+The provisional API Level will only be valid while using the Early Look SDK
+and can only be used to run applications in the emulator. An application using
+the provisional API Level can never be installed on an Android device. At the
+final release of the platform, you must replace any instances of the provisional
+API Level in your application manifest with the final platform's actual API
+Level integer.
+
+
+Filtering the Reference Documentation by API Level
+
+Reference documentation pages on the Android Developers site offer a "Filter
+by API Level" control in the top-right area of each page. You can use the
+control to show documentation only for parts of the API that are actually
+accessible to your application, based on the API Level that it specifies in
+the android:minSdkVersion
attribute of its manifest file.
+
+To use filtering, select the checkbox to enable filtering, just below the
+page search box. Then set the "Filter by API Level" control to the same API
+Level as specified by your application. Notice that APIs introduced in a later
+API Level are then grayed out and their content is masked, since they would not
+be accessible to your application.
+
+Filtering by API Level in the documentation does not provide a view
+of what is new or introduced in each API Level — it simply provides a way
+to view the entire API associated with a given API Level, while excluding API
+elements introduced in later API Levels.
+
+If you decide that you don't want to filter the API documentation, just
+disable the feature using the checkbox. By default, API Level filtering is
+disabled, so that you can view the full framework API, regardless of API Level.
+
+
+Also note that the reference documentation for individual API elements
+specifies the API Level at which each element was introduced. The API Level
+for packages and classes is specified as "Since <api level>" at the
+top-right corner of the content area on each documentation page. The API Level
+for class members is specified in their detailed description headers,
+at the right margin.
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/guide/topics/media/camera.jd b/docs/html/guide/topics/media/camera.jd
index 7d72491ef109..a63270a77ead 100644
--- a/docs/html/guide/topics/media/camera.jd
+++ b/docs/html/guide/topics/media/camera.jd
@@ -162,8 +162,7 @@ information, you must request location permission:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
For more information about getting user location, see
-Obtaining User
-Location.
+Location Strategies.
diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd
index 0e0412a10d52..a750c9a8809f 100644
--- a/docs/html/guide/topics/media/index.jd
+++ b/docs/html/guide/topics/media/index.jd
@@ -1,63 +1,56 @@
-page.title=Multimedia and Camera
+page.title=Media and Camera
+page.landing=true
+page.landing.intro=Add video, audio, and photo capabilities to your app with Android's robust APIs for playing and recording media.
+page.landing.image=
+
@jd:body
-
-
-
-Topics
-
-
-Key classes
-
-- {@link android.media.MediaPlayer}
-- {@link android.media.JetPlayer}
-- {@link android.hardware.Camera}
-- {@link android.media.MediaRecorder}
-- {@link android.media.AudioManager}
-- {@link android.media.SoundPool}
-
-
-See also
-
-
-
-
-
-The Android multimedia framework includes support for capturing and playing audio, video and
-images in a variety of common media types, so that you can easily integrate them into your
-applications. You can play audio or video from media files stored in your application's resources,
-from standalone files in the file system, or from a data stream arriving over a
-network connection, all using the {@link android.media.MediaPlayer} or {@link
-android.media.JetPlayer} APIs. You can also record audio, video and take pictures using the {@link
-android.media.MediaRecorder} and {@link android.hardware.Camera} APIs if supported by the device
-hardware.
-
-The following topics show you how to use the Android framework to implement multimedia capture
-and playback.
-
-
- - Media Playback
-
- - How to play audio and video in your application.
-
- - JetPlayer
- - How to play interactive audio and video in your application using content created with
-JetCreator.
-
- - Camera
- - How to use a device camera to take pictures or video in your application.
-
- - Audio
-Capture
- - How to record sound in your application.
-
\ No newline at end of file
+
+
+
+ Blog Articles
+
+ Allowing applications to play nice(r) with each other: Handling remote control
+buttons
+ If your media playback application creates a media playback service, just like Music, that
+responds to the media button events, how will the user know where those events are going to? Music,
+or your new application?
+
+
+
+ Making Android Games that Play Nice
+ Making a game on Android is easy. Making a great game for a mobile, multitasking, often
+multi-core, multi-purpose system like Android is trickier. Even the best developers frequently make
+mistakes in the way they interact with the Android system and with other applications
+
+
+
+ More Android Games that Play Nice
+ Android users get used to using the back key. We expect the volume keys to work in some
+intuitive fashion. We expect that the home key behaves in a manner consistent with the Android
+navigation paradigm.
+
+
+
+
+ Training
+
+
+ Capturing Photos
+ This class gets you clicking fast with some super-easy ways of leveraging existing camera
+applications. In later lessons, you dive deeper and learn how to control the camera hardware
+directly.
+
+
+
+ Managing Audio Playback
+ After this class, you will be able to build apps that respond to hardware audio key
+presses, which request audio focus when playing audio, and which respond appropriately to changes in
+audio focus caused by the system or other applications.
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/html/guide/topics/media/mediaplayer.jd b/docs/html/guide/topics/media/mediaplayer.jd
index 002d113ea31a..45a58a7b5c4a 100644
--- a/docs/html/guide/topics/media/mediaplayer.jd
+++ b/docs/html/guide/topics/media/mediaplayer.jd
@@ -457,7 +457,7 @@ stopForeground(true);
For more information, see the documentation about Services and
+href="{@docRoot}guide/components/services.html#Foreground">Services and
Status Bar Notifications.
diff --git a/docs/html/guide/topics/providers/calendar-provider.jd b/docs/html/guide/topics/providers/calendar-provider.jd
index d30dda423ec5..f53b0625841d 100644
--- a/docs/html/guide/topics/providers/calendar-provider.jd
+++ b/docs/html/guide/topics/providers/calendar-provider.jd
@@ -250,27 +250,30 @@ and store its events on the device.
Querying a calendar
-Here is an example that shows how to get all the calendars for a particular
+
Here is an example that shows how to get the calendars that are owned by a particular
user. For simplicity's sake, in this example the query operation is shown in the
user interface thread ("main thread"). In practice, this should be done in an asynchronous
thread instead of on the main thread. For more discussion, see
-Loaders. If you are not just reading data but modifying it, see {@link android.content.AsyncQueryHandler}.
+Loaders. If you are not just
+reading data but modifying it, see {@link android.content.AsyncQueryHandler}.
- // Projection array. Creating indices for this array instead of doing
- // dynamic lookups improves performance.
- public static final String[] EVENT_PROJECTION = new String[] {
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
Calendars._ID, // 0
Calendars.ACCOUNT_NAME, // 1
- Calendars.CALENDAR_DISPLAY_NAME // 2
- };
+ Calendars.CALENDAR_DISPLAY_NAME, // 2
+ Calendars.OWNER_ACCOUNT // 3
+};
- // The indices for the projection array above.
- private static final int PROJECTION_ID_INDEX = 0;
- private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
- private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;
Why must you include
@@ -291,11 +294,15 @@ synced.
In the next part of the example, you construct your query. The selection
specifies the criteria for the query. In this example the query is looking for
-all calendars that have the ACCOUNT_NAME
-"sampleuser@google.com" and the ACCOUNT_TYPE
-"com.google". The query returns a {@link android.database.Cursor}
+calendars that have the ACCOUNT_NAME
+"sampleuser@google.com", the ACCOUNT_TYPE
+"com.google", and the OWNER_ACCOUNT
+"sampleuser@google.com". If you want to see all calendars that a user
+has viewed, not just calendars the user owns, omit the OWNER_ACCOUNT
.
+The query returns a {@link android.database.Cursor}
object that you can use to traverse the result set returned by the database
-query. For more discussion of using queries in content providers, see Content Providers.
+query. For more discussion of using queries in content providers,
+see Content Providers.
// Run query
@@ -303,8 +310,10 @@ Cursor cur = null;
ContentResolver cr = getContentResolver();
Uri uri = Calendars.CONTENT_URI;
String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND ("
- + Calendars.ACCOUNT_TYPE + " = ?))";
-String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google"};
+ + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+ + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+ "sampleuser@gmail.com"};
// Submit the query and get a Cursor object back.
cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);
@@ -316,12 +325,14 @@ for each field.
while (cur.moveToNext()) {
long calID = 0;
String displayName = null;
- String accountName = null;
+ String accountName = null;
+ String ownerName = null;
// Get the field values
calID = cur.getLong(PROJECTION_ID_INDEX);
displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+ ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
// Do something with the values...
@@ -1179,5 +1190,3 @@ However, a sync adapter is restricted to the ACCOUNT_NAME
and
For a sample implementation of a sync adapter (not specifically related to Calendar), see
SampleSyncAdapter.
-