Merge "docs: plugin reference update" into lmp-docs
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index fb10e17..6d524eb 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -4000,7 +4000,7 @@
*
* Unlike the other styles provided here, MediaStyle can also modify the standard-size
* {@link Notification#contentView}; by providing action indices to
- * {@link #setShowActionsInCompactView(int...)} you can promote up to 2 actions to be displayed
+ * {@link #setShowActionsInCompactView(int...)} you can promote up to 3 actions to be displayed
* in the standard view alongside the usual content.
*
* Notifications created with MediaStyle will have their category set to
diff --git a/docs/html/design/patterns/notifications.jd b/docs/html/design/patterns/notifications.jd
index f5cd2a7..fdd435c 100644
--- a/docs/html/design/patterns/notifications.jd
+++ b/docs/html/design/patterns/notifications.jd
@@ -15,6 +15,14 @@
</div>
</a>
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
+<div>
+ <h3>Video</h3>
+ <p>DevBytes: Notifications in the Android L Developer Preview</p>
+</div>
+</a>
+
<style>
.col-5, .col-6, .col-7 {
margin-left:0px;
diff --git a/docs/html/sdk/exploring.jd b/docs/html/sdk/exploring.jd
deleted file mode 100644
index b34c1cf..0000000
--- a/docs/html/sdk/exploring.jd
+++ /dev/null
@@ -1,10 +0,0 @@
-page.title=Exploring the SDK
-excludeFromSuggestions=true
-walkthru=1
-
-@jd:body
-
-
-
-
-
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index e56f3f5..5d73d72 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,48 +1,49 @@
page.title=Download Android Studio and SDK Tools
-page.tags=download
+page.tags=sdk, android studio
page.template=sdk
header.hide=1
page.metaDescription=Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.
-studio.version=1.0.0
+studio.version=1.0.1
-studio.linux_bundle_download=android-studio-ide-135.1629389-linux.zip
-studio.linux_bundle_bytes=243909934
-studio.linux_bundle_checksum=601a302f10cf8a22ba4216e0884a035bdfec38b3
+studio.linux_bundle_download=android-studio-ide-135.1641136-linux.zip
+studio.linux_bundle_bytes=243917559
+studio.linux_bundle_checksum=7c8f2d0cec21b98984cdba45ab5a25f26d67f23a
-studio.mac_bundle_download=android-studio-ide-135.1629389.dmg
-studio.mac_bundle_bytes=245757810
-studio.mac_bundle_checksum=0d9e0e230ece9f2e696b1b076c36ee1e73edcf3c
+studio.mac_bundle_download=android-studio-ide-1641136.dmg
+studio.mac_bundle_bytes=245729073
+studio.mac_bundle_checksum=49506ba2cf6b56be4f7d07e6a00c4ec3ba2249d5
-studio.win_bundle_exe_download=android-studio-bundle-135.1629389.exe
-studio.win_bundle_exe_bytes=868337656
+studio.win_bundle_exe_download=android-studio-bundle-135.1641136.exe
+studio.win_bundle_exe_bytes=868344232
studio.win_bundle_exe_checksum=1931dbaeadb52f5e0a8ba6e2ae60d9df20b2076b
-studio.win_notools_exe_download=android-studio-ide-135.1629389.exe
-studio.win_notools_exe_bytes=262099808
-studio.win_notools_exe_checksum=bfc6e9397f72969bcb3db80c9abe3a205540c8ab
+studio.win_notools_exe_download=android-studio-ide-135.1641136.exe
+studio.win_notools_exe_bytes=260272840
+studio.win_notools_exe_checksum=464d1c5497ab3d1bdef441365791ab36c89cd5ae
-studio.win_bundle_download=android-studio-ide-135.1629389-windows.zip
-studio.win_bundle_bytes=246241434
-studio.win_bundle_checksum=6951e678a41b94b6172276727537db8590be7270
+studio.win_bundle_download=android-studio-ide-135.1641136-windows.zip
+studio.win_bundle_bytes=246249059
+studio.win_bundle_checksum=6d6856aca83f6ff747ca40b10f70edfbbcccd91c
-sdk.linux_download=android-sdk_r24-linux.tgz
-sdk.linux_bytes=141308131
-sdk.linux_checksum=3cc1fcec302a8478e240e42b94dd2de73b9d0cc9
+sdk.linux_download=android-sdk_r24.0.2-linux.tgz
+sdk.linux_bytes=140097024
+sdk.linux_checksum=b6fd75e8b06b0028c2427e6da7d8a09d8f956a86
-sdk.mac_download=android-sdk_r24-macosx.zip
-sdk.mac_bytes=88535806
-sdk.mac_checksum=89b256c82e6ab432881fa7d726bdd0541c656616
+sdk.mac_download=android-sdk_r24.0.2-macosx.zip
+sdk.mac_bytes=87262823
+sdk.mac_checksum=3ab5e0ab0db5e7c45de9da7ff525dee6cfa97455
-sdk.win_download=android-sdk_r24-windows.zip
-sdk.win_bytes=140738187
-sdk.win_checksum=8d20f800cbace1b92873ebba1e16ff134a2b062b
+sdk.win_download=android-sdk_r24.0.2-windows.zip
+sdk.win_bytes=139473113
+sdk.win_checksum=51269c8336f936fc9b9538f9b9ca236b78fb4e4b
-sdk.win_installer=installer_r24-windows.exe
-sdk.win_installer_bytes=92179689
-sdk.win_installer_checksum=71ec3d91a4239b44128bf43add888bc357776be9
+sdk.win_installer=installer_r24.0.2-windows.exe
+sdk.win_installer_bytes=91428280
+sdk.win_installer_checksum=edac14e1541e97d68821fa3a709b4ea8c659e676
+
@@ -89,7 +90,7 @@
display:block;
padding:0;
white-space: nowrap;
- text-indent: 10000px;
+ text-indent: -10000px;
font-size:0px;
background: url(../images/tools/studio-logo.png);
background-image: -webkit-image-set(url(../images/tools/studio-logo.png) 1x, url(../images/tools/studio-logo_2x.png) 2x);
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
index 14d274f0..9a02382 100644
--- a/docs/html/sdk/installing/index.jd
+++ b/docs/html/sdk/installing/index.jd
@@ -1,4 +1,5 @@
page.title=Installing the Android SDK
+excludeFromSuggestions=true
page.tags=sdk tools
helpoutsWidget=true
diff --git a/docs/html/tools/help/adt.jd b/docs/html/tools/help/adt.jd
index 0130524..8abe1b4 100644
--- a/docs/html/tools/help/adt.jd
+++ b/docs/html/tools/help/adt.jd
@@ -509,10 +509,10 @@
revision of the Android SDK Tools. If such dependencies exist, you will need to
update the SDK Tools package of the SDK after installing the new revision of
ADT. To update the SDK Tools package, use the Android SDK Manager, as
-described in <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>.</p>
+described in <a href="{@docRoot}sdk/installing/adding-packages.html">Adding SDK Packages</a>.</p>
<p>To learn about new features of each ADT revision and also any dependencies on
-the SDK Tools, see the listings in the <a href="#notes">Revisions</a>
+the SDK Tools, see the listings in the <a href="{@docRoot}tools/revisions/index.html">Revisions</a>
section. To determine the version currently installed, open the
Eclipse Installed Software window using <strong>Help</strong>
> <strong>Software Updates</strong> and refer to the version listed for
diff --git a/docs/html/tools/help/monkey.jd b/docs/html/tools/help/monkey.jd
index b6300a7..941f5d9 100644
--- a/docs/html/tools/help/monkey.jd
+++ b/docs/html/tools/help/monkey.jd
@@ -12,7 +12,7 @@
<a name="overview"></a>
<h2>Overview</h2>
-<p>The Monkey is a command-line tool that that you can run on any emulator
+<p>The Monkey is a command-line tool that you can run on any emulator
instance or on a device. It sends a pseudo-random stream of
user events into the system, which acts as a stress test on the application software you are
developing.</p>
diff --git a/docs/html/tools/revisions/studio.jd b/docs/html/tools/revisions/studio.jd
index 422beaa..3806933 100644
--- a/docs/html/tools/revisions/studio.jd
+++ b/docs/html/tools/revisions/studio.jd
@@ -39,9 +39,32 @@
<p>The sections below provide notes about successive releases of
Android Studio, as denoted by revision number. </p>
+
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+ alt=""/>Android Studio v1.0.1</a> <em>(December 2014)</em>
+ </p>
+
+ <div class="toggle-content-toggleme">
+ <p>Various fixes and enhancements:</p>
+ <ul>
+ <li>Fixed AVD Manager and <strong>device.xml</strong> file lock issue. </li>
+ <li>Fixed the emulator log on Windows systems. </li>
+ <li>Fixed issue with creating AVDs with Android Studio and Android SDK installed on different
+ drives on Windows systems.</li>
+ <li>Sets the default update channel for new downloads to <strong>Stable</strong>. If you
+ installed the 1.0.0 version of Android Studio and would like stable, production-ready version
+ updates, use <strong>File > Settings > Updates</strong> to change to the <strong>Stable</strong>
+ update channel.
+ </li>
+ </div>
+</div>
+
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
alt=""/>Android Studio v1.0</a> <em>(December 2014)</em>
</p>
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index ed48887..e50b7ac 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -25,6 +25,33 @@
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+ alt=""/>SDK Tools, Revision 24.0.2</a> <em>(December 2014)</em>
+ </p>
+
+ <div class="toggle-content-toggleme">
+
+ <dl>
+ <dt>Dependencies:</dt>
+
+ <dd>
+ <ul>
+ <li>Android SDK Platform-tools revision 19 or later.</li>
+ </ul>
+ </dd>
+
+ <dt>General Notes:</dt>
+ <dd>
+ <ul>
+ <li>Fixed issue with creating projects and activities from templates using Eclipse ADT.</li>
+ </ul>
+ </dd>
+ </div>
+</div>
+
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
alt=""/>SDK Tools, Revision 24.0.1</a> <em>(December 2014)</em>
</p>
@@ -898,7 +925,7 @@
<li>Added a flag that sets <em>jumbo mode</em> for DEX files, which allows a larger
number of strings in the DEX files. Enable this mode by adding the following line to
the {@code project.properties} file of your project:
- <pre>set dex.force.jumbo=true</pre></li>
+ <pre>dex.force.jumbo=true</pre></li>
<li>Improved the build time by pre-dexing libraries (both JAR files and library
projects).</li>
<li>Updated the build to generate {@code R} resource classes for library projects
diff --git a/docs/html/training/location/index.jd b/docs/html/training/location/index.jd
index f0024e2..059a1e9 100644
--- a/docs/html/training/location/index.jd
+++ b/docs/html/training/location/index.jd
@@ -67,9 +67,10 @@
<h2>Lessons</h2>
<dl>
<dt>
- <b><a href="retrieve-current.html">Retrieving the Current Location</a></b>
+ <b><a href="retrieve-current.html">Getting the Last Known Location</a></b>
</dt> <dd>
- Learn how to retrieve the user's current location.
+ Learn how to retrieve the last known location of an Android device, which
+ is usually equivalent to the user's current location.
</dd> <dt>
<b><a href="receive-location-updates.html">Receiving Location
Updates</a></b>
diff --git a/docs/html/training/location/retrieve-current.jd b/docs/html/training/location/retrieve-current.jd
index f079040..5bac3fa 100644
--- a/docs/html/training/location/retrieve-current.jd
+++ b/docs/html/training/location/retrieve-current.jd
@@ -1,386 +1,162 @@
-page.title=Retrieving the Current Location
+page.title=Getting the Last Known Location
trainingnavtop=true
@jd:body
+
<div id="tb-wrapper">
-<div id="tb">
+ <div id="tb">
-<h2>This lesson teaches you to</h2>
-<ol>
- <li><a href="#AppPermissions">Specify App Permissions</a></li>
- <li><a href="#CheckServices">Check for Google Play services</a></li>
- <li><a href="#DefineCallbacks">Define Location Services Callbacks</a></li>
- <li><a href="#ConnectClient">Connect the Location Client</a></li>
- <li><a href="#GetLocation">Get the Current Location</a></li>
-</ol>
+ <h2>This lesson teaches you how to</h2>
+ <ol>
+ <li><a href="#setup">Set Up Google Play Services</a></li>
+ <li><a href="#permissions">Specify App Permissions</a></li>
+ <li><a href="#play-services">Connect to Google Play Services</a></li>
+ <li><a href="#last-known">Get the Last Known Location</a></li>
+ </ol>
-<h2>You should also read</h2>
-<ul>
- <li>
- <a href="{@docRoot}google/play-services/setup.html">Setup Google Play Services SDK</a>
- </li>
-</ul>
+ <h2>You should also read</h2>
+ <ul>
+ <li>
+ <a href="{@docRoot}google/play-services/setup.html">Setting up Google Play
+ Services</a>
+ </li>
+ </ul>
-<h2>Try it out</h2>
-
-<div class="download-box">
- <a href="http://developer.android.com/shareables/training/LocationUpdates.zip" class="button">Download the sample</a>
- <p class="filename">LocationUpdates.zip</p>
+ <h2>Try it out</h2>
+ <ul>
+ <li>
+ <a href="https://github.com/googlesamples/android-play-location/tree/master/BasicLocationSample" class="external-link">BasicLocationSample</a>
+ </li>
+ </ul>
+ </div>
</div>
-</div>
-</div>
+<p>Using the Google Play services location APIs, your app can request the last
+ known location of the user's device. In most cases, you are interested in the
+ user's current location, which is usually equivalent to the last known
+ location of the device.</p>
-<p>
- Location Services automatically maintains the user's current location, so all your app has to do
- is retrieve it as needed. The location's accuracy is based on the location permissions you've
- requested and location sensors that are currently active for the device.
-<p>
- Location Services sends the current location to your app through a location client, which is
- an instance of the Location Services class
-<code><a href="{@docRoot}reference/com/google/android/gms/location/LocationClient.html">LocationClient</a></code>.
- All requests for location information go through this client.
-</p>
-<p class="note">
- <strong>Note:</strong> Before you start the lesson, be sure that your development environment
- and test device are set up correctly. To learn more about this, read the
- <a href="{@docRoot}google/play-services/setup.html">Setup</a> section in the Google Play
- services guide.
-</p>
-<!--
- Specify App Permissions
- -->
-<h2 id="AppPermissions">Specify App Permissions</h2>
-<p>
- Apps that use Location Services must request location permissions. Android has two location
- permissions: {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION}
- and {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}. The
- permission you choose controls the accuracy of the current location. If you request only coarse
- location permission, Location Services obfuscates the returned location to an accuracy
- that's roughly equivalent to a city block.
-</p>
-<p>
- Requesting {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION} implies
- a request for {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION}.
-</p>
-<p>
- For example, to add {@link android.Manifest.permission#ACCESS_COARSE_LOCATION
- ACCESS_COARSE_LOCATION}, insert the following as a child element of the
- <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code>
- element:
-</p>
-<pre>
-<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
-</pre>
-<!--
- Check for Google Play Services
- -->
-<h2 id="CheckServices">Check for Google Play Services</h2>
-<p>
- Location Services is part of the Google Play services APK. Since it's hard to anticipate the
- state of the user's device, you should always check that the APK is installed before you attempt
- to connect to Location Services. To check that the APK is installed, call
-<code><a href="{@docRoot}reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">GooglePlayServicesUtil.isGooglePlayServicesAvailable()</a></code>,
- which returns one of the
- integer result codes listed in the reference documentation for
-<code><a href="{@docRoot}reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code>.
- If you encounter an error, call
-<code><a href="{@docRoot}reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)">GooglePlayServicesUtil.getErrorDialog()</a></code>
- to retrieve localized dialog that prompts users to take the correct action, then display
- the dialog in a {@link android.support.v4.app.DialogFragment}. The dialog may allow the
- user to correct the problem, in which case Google Play services may send a result back to your
- activity. To handle this result, override the method
- {@link android.support.v4.app.FragmentActivity#onActivityResult onActivityResult()}.
-</p>
-<p>
- Since you usually need to check for Google Play services in more than one place in your code,
- define a method that encapsulates the check, then call the method before each connection
- attempt. The following snippet contains all of the code required to check for Google
- Play services:
-</p>
-<pre>
-public class MainActivity extends FragmentActivity {
- ...
- // Global constants
- /*
- * Define a request code to send to Google Play services
- * This code is returned in Activity.onActivityResult
- */
- private final static int
- CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;
- ...
- // Define a DialogFragment that displays the error dialog
- public static class ErrorDialogFragment extends DialogFragment {
- // Global field to contain the error dialog
- private Dialog mDialog;
- // Default constructor. Sets the dialog field to null
- public ErrorDialogFragment() {
- super();
- mDialog = null;
- }
- // Set the dialog to display
- public void setDialog(Dialog dialog) {
- mDialog = dialog;
- }
- // Return a Dialog to the DialogFragment.
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- return mDialog;
- }
- }
- ...
- /*
- * Handle results returned to the FragmentActivity
- * by Google Play services
- */
- @Override
- protected void onActivityResult(
- int requestCode, int resultCode, Intent data) {
- // Decide what to do based on the original request code
- switch (requestCode) {
- ...
- case CONNECTION_FAILURE_RESOLUTION_REQUEST :
- /*
- * If the result code is Activity.RESULT_OK, try
- * to connect again
- */
- switch (resultCode) {
- case Activity.RESULT_OK :
- /*
- * Try the request again
- */
- ...
- break;
- }
- ...
- }
- }
- ...
- private boolean servicesConnected() {
- // Check that Google Play services is available
- int resultCode =
- GooglePlayServicesUtil.
- isGooglePlayServicesAvailable(this);
- // If Google Play services is available
- if (ConnectionResult.SUCCESS == resultCode) {
- // In debug mode, log the status
- Log.d("Location Updates",
- "Google Play services is available.");
- // Continue
- return true;
- // Google Play services was not available for some reason.
- // resultCode holds the error code.
- } else {
- // Get the error dialog from Google Play services
- Dialog errorDialog = GooglePlayServicesUtil.getErrorDialog(
- resultCode,
- this,
- CONNECTION_FAILURE_RESOLUTION_REQUEST);
+<p>Specifically, use the
+ <a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html">fused
+ location provider</a> to retrieve the device's last known location. The fused
+ location provider is one of the location APIs in Google Play services. It
+ manages the underlying location technology and provides a simple API so that
+ you can specify requirements at a high level, like high accuracy or low power.
+ It also optimizes the device's use of battery power.</p>
- // If Google Play services can provide an error dialog
- if (errorDialog != null) {
- // Create a new DialogFragment for the error dialog
- ErrorDialogFragment errorFragment =
- new ErrorDialogFragment();
- // Set the dialog in the DialogFragment
- errorFragment.setDialog(errorDialog);
- // Show the error dialog in the DialogFragment
- errorFragment.show(getSupportFragmentManager(),
- "Location Updates");
- }
- }
- }
- ...
-}
-</pre>
-<p>
- Snippets in the following sections call this method to verify that Google Play services is
- available.
-</p>
-<!--
- Define Location Services Callbacks
- -->
-<h2 id="DefineCallbacks">Define Location Services Callbacks</h2>
-<p>
- To get the current location, create a location client, connect it
- to Location Services, and then call its
-<code><a href="{@docRoot}reference/com/google/android/gms/location/LocationClient.html#getLastLocation()">getLastLocation()</a></code>
- method. The return value is the best, most recent location, based on the permissions your
- app requested and the currently-enabled location sensors.
-<p>
-<p>
- Before you create the location client, implement the interfaces that Location Services uses to
- communicate with your app:
-</p>
-<dl>
- <dt>
-<code><a href="{@docRoot}reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html">ConnectionCallbacks</a></code>
- </dt>
- <dd>
- Specifies methods that Location Services calls when a location client is connected or
- disconnected.
- </dd>
- <dt>
-<code><a href="{@docRoot}reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html">OnConnectionFailedListener</a></code>
- </dt>
- <dd>
- Specifies a method that Location Services calls if an error occurs while attempting to
- connect the location client. This method uses the previously-defined {@code showErrorDialog}
- method to display an error dialog that attempts to fix the problem using Google Play
- services.
- </dd>
-</dl>
-<p>
- The following snippet shows how to specify the interfaces and define the methods:
-</p>
-<pre>
-public class MainActivity extends FragmentActivity implements
- GooglePlayServicesClient.ConnectionCallbacks,
- GooglePlayServicesClient.OnConnectionFailedListener {
- ...
- /*
- * Called by Location Services when the request to connect the
- * client finishes successfully. At this point, you can
- * request the current location or start periodic updates
- */
- @Override
- public void onConnected(Bundle dataBundle) {
- // Display the connection status
- Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
+<p>This lesson shows you how to make a single request for the location of a
+ device using the
+ <a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLastLocation(com.google.android.gms.common.api.GoogleApiClient)">{@code getLastLocation()}</a>
+ method in the fused location provider.
- }
+<h2 id="setup">Set Up Google Play Services</h2>
+
+<p>To access the fused location provider, your app's development project must
+ include Google Play services. Download and install the Google Play services
+ component via the <a href="{@docRoot}tools/help/sdk-manager.html">SDK
+ Manager</a> and add the library to your project. For details, see the guide to
+ <a href="{@docRoot}google/play-services/setup.html">Setting Up Google Play
+ Services</a>.</p>
+
+<h2 id="permissions">Specify App Permissions</h2>
+
+<p>Apps that use location services must request location permissions. Android
+ offers two location permissions:
+ {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION}
+ and
+ {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}.
+ The permission you choose determines the accuracy of the location returned by
+ the API. If you specify
+ {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION},
+ the API returns a location with an accuracy approximately equivalent to a city
+ block.</p>
+
+<p>This lesson requires only coarse location. Request this permission with the
+ {@code uses-permission} element in your app manifest, as shown in the
+ following example:
+
+<pre>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.google.android.gms.location.sample.basiclocationsample" >
+
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
+</manifest>
+</pre>
+
+<h2 id="play-services">Connect to Google Play Services</h2>
+
+<p>To connect to the API, you need to create an instance of the
+ Google Play services API client. For details about using the client, see
+ the guide to
+ <a href="{@docRoot}google/auth/api-client.html#Starting">Accessing Google
+ APIs</a>.
+</p>
+
+<p>In your activity's {@link android.app.Activity#onCreate onCreate()} method,
+ create an instance of Google API Client using
+ <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">{@code GoogleApiClient.Builder}</a>.
+ Use the builder to add the
+ <a href="{@docRoot}reference/com/google/android/gms/location/LocationServices.html">{@code LocationServices}</a>
+ API.</p>
+
+<p>The sample app defines a {@code buildGoogleApiClient()} method, called from
+ the activity's {@link android.app.Activity#onCreate onCreate()} method,
+ which includes the following code.</p>
+
+<pre>
+protected synchronized void buildGoogleApiClient() {
+ mGoogleApiClient = new GoogleApiClient.Builder(this)
+ .addConnectionCallbacks(this)
+ .addOnConnectionFailedListener(this)
+ .addApi(LocationServices.API)
+ .build();
+}
+</pre>
+
+<h2 id="last-known">Get the Last Known Location</h2>
+
+<p>Once you have connected to Google Play services and the location services
+ API, you can get the last known location of a user's device. When your app is
+ connected to these you can use the fused location provider's
+ <a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLastLocation(com.google.android.gms.common.api.GoogleApiClient)">{@code getLastLocation()}</a>
+ method to retrieve the device location. The precision of the location returned
+ by this call is determined by the permission setting you put in your app
+ manifest, as described in the <a href="#permissions">Specify App
+ Permissions</a> section of this document.</p>
+
+<p>To request the last known location, call the
+ <a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLastLocation(com.google.android.gms.common.api.GoogleApiClient)">{@code getLastLocation()}</a>
+ method, passing it your instance of the
+ <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html">{@code GoogleApiClient}</a>
+ object. Do this in the
+ <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">{@code onConnected()}</a>
+ callback provided by Google API Client, which is called when the client is
+ ready. The following code sample illustrates the request and a simple
+ handling of the response:</p>
+
+<pre>
+public class MainActivity extends ActionBarActivity implements
+ ConnectionCallbacks, OnConnectionFailedListener {
...
- /*
- * Called by Location Services if the connection to the
- * location client drops because of an error.
- */
@Override
- public void onDisconnected() {
- // Display the connection status
- Toast.makeText(this, "Disconnected. Please re-connect.",
- Toast.LENGTH_SHORT).show();
- }
- ...
- /*
- * Called by Location Services if the attempt to
- * Location Services fails.
- */
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- /*
- * Google Play services can resolve some errors it detects.
- * If the error has a resolution, try sending an Intent to
- * start a Google Play services activity that can resolve
- * error.
- */
- if (connectionResult.hasResolution()) {
- try {
- // Start an Activity that tries to resolve the error
- connectionResult.startResolutionForResult(
- this,
- CONNECTION_FAILURE_RESOLUTION_REQUEST);
- /*
- * Thrown if Google Play services canceled the original
- * PendingIntent
- */
- } catch (IntentSender.SendIntentException e) {
- // Log the error
- e.printStackTrace();
- }
- } else {
- /*
- * If no resolution is available, display a dialog to the
- * user with the error.
- */
- showErrorDialog(connectionResult.getErrorCode());
+ public void onConnected(Bundle connectionHint) {
+ mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
+ mGoogleApiClient);
+ if (mLastLocation != null) {
+ mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
+ mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
}
}
- ...
}
</pre>
-<!--
- Connect the Location Client
- -->
-<h2 id="ConnectClient">Connect the Location Client</h2>
-<p>
- Now that the callback methods are in place, create the location client and connect it to
- Location Services.
-</p>
-<p>
- You should create the location client in {@link android.support.v4.app.FragmentActivity#onCreate
- onCreate()}, then connect it in
- {@link android.support.v4.app.FragmentActivity#onStart onStart()}, so that Location Services
- maintains the current location while your activity is fully visible. Disconnect the client in
- {@link android.support.v4.app.FragmentActivity#onStop onStop()}, so that when your app is not
- visible, Location Services is not maintaining the current location. Following this pattern of
- connection and disconnection helps save battery power. For example:
-</p>
-<p class="note">
- <strong>Note:</strong> The current location is only maintained while a location client is
- connected to Location Service. Assuming that no other apps are connected to Location Services,
- if you disconnect the client and then sometime later call
-<code><a href="{@docRoot}reference/com/google/android/gms/location/LocationClient.html#getLastLocation()">getLastLocation()</a></code>,
- the result may be out of date.
-</p>
-<pre>
-public class MainActivity extends FragmentActivity implements
- GooglePlayServicesClient.ConnectionCallbacks,
- GooglePlayServicesClient.OnConnectionFailedListener {
- ...
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- ...
- /*
- * Create a new location client, using the enclosing class to
- * handle callbacks.
- */
- mLocationClient = new LocationClient(this, this, this);
- ...
- }
- ...
- /*
- * Called when the Activity becomes visible.
- */
- @Override
- protected void onStart() {
- super.onStart();
- // Connect the client.
- mLocationClient.connect();
- }
- ...
- /*
- * Called when the Activity is no longer visible.
- */
- @Override
- protected void onStop() {
- // Disconnecting the client invalidates it.
- mLocationClient.disconnect();
- super.onStop();
- }
- ...
-}
-</pre>
-<!--
- Get the Current Location
- -->
-<h2 id="GetLocation">Get the Current Location</h2>
-<p>
- To get the current location, call
-<code><a href="{@docRoot}reference/com/google/android/gms/location/LocationClient.html#getLastLocation()">getLastLocation()</a></code>.
- For example:
-</p>
-<pre>
-public class MainActivity extends FragmentActivity implements
- GooglePlayServicesClient.ConnectionCallbacks,
- GooglePlayServicesClient.OnConnectionFailedListener {
- ...
- // Global variable to hold the current location
- Location mCurrentLocation;
- ...
- mCurrentLocation = mLocationClient.getLastLocation();
- ...
-}
-</pre>
-<p>
- The next lesson, <a href="receive-location-updates.html">Receiving Location Updates</a>, shows
- you how to receive periodic location updates from Location Services.
-</p>
+
+<p>The
+ <a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLastLocation(com.google.android.gms.common.api.GoogleApiClient)">{@code getLastLocation()}</a>
+ method returns a
+ <a href="{@docRoot}reference/android/location/Location.html">{@code Location}</a>
+ object from which you can retrieve the latitude and longitude coordinates of a
+ geographic location. The location object returned may be null in rare cases
+ when the location is not available.</p>
+
+<p>The next lesson,
+ <a href="receive-location-updates.html">Receiving Location Updates</a>, shows
+ you how to receive periodic location updates.</p>
diff --git a/docs/html/training/multiscreen/screendensities.jd b/docs/html/training/multiscreen/screendensities.jd
index 7817830..fcb65cc 100644
--- a/docs/html/training/multiscreen/screendensities.jd
+++ b/docs/html/training/multiscreen/screendensities.jd
@@ -15,8 +15,8 @@
<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
+<div id="tb-wrapper">
+<div id="tb">
<h2>This lesson teaches you to</h2>
<ol>
@@ -33,16 +33,15 @@
</ul>
<h2>Try it out</h2>
-
-<div class="download-box">
+
+<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Download
the sample app</a>
-<p class="filename">NewsReader.zip</p>
-</div>
-
-
-</div>
-</div>
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
<p>This lesson shows you how to support different screen densities
by providing different resources and using resolution-independent units of
@@ -54,19 +53,29 @@
absolute pixels to define distances or sizes. Defining layout dimensions with
pixels is a problem because different screens have different pixel densities,
so the same number of pixels may correspond to different physical sizes on
-different devices. Therefore, when specifying dimensions, always use either
+different devices. Therefore, when specifying dimensions, always use either
<code>dp</code> or <code>sp</code> units. A <code>dp</code> is a density-independent pixel
that corresponds to the physical size of a pixel at 160 dpi. An <code>sp</code> is the same
base unit, but is scaled by the user's preferred text size (it’s a
scale-independent pixel), so you should use this measurement unit when defining
text size (but never for layout sizes).</p>
-<p>For example, when you specify spacing between two views, use <code>dp</code>
+ <!-- video box -->
+<a class="notice-developers-video left" href="https://www.youtube.com/watch?v=zhszwkcay2A">
+<div>
+ <h3>Video</h3>
+ <p>DesignBytes: Density-independent Pixels</p>
+</div>
+</a>
+
+<br style="clear:left">
+
+<p>For example, when you specify spacing between two views, use <code>dp</code>
rather than <code>px</code>:</p>
<pre>
-<Button android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+<Button android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="@string/clickme"
android:layout_marginTop="20dp" />
</pre>
@@ -74,8 +83,8 @@
<p>When specifying text size, always use <code>sp</code>:</p>
<pre>
-<TextView android:layout_width="match_parent"
- android:layout_height="wrap_content"
+<TextView android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:textSize="20sp" />
</pre>
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index f3b2693..2489b91 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -694,7 +694,7 @@
<ul>
<li>
<a href="<?cs var:toroot ?>training/location/retrieve-current.html">
- Retrieving the Current Location
+ Getting the Last Known Location
</a>
</li>
<li>
diff --git a/docs/html/training/tv/playback/index.jd b/docs/html/training/tv/playback/index.jd
index 31c7524..5427d48 100644
--- a/docs/html/training/tv/playback/index.jd
+++ b/docs/html/training/tv/playback/index.jd
@@ -17,9 +17,20 @@
<li><a href="{@docRoot}design/tv/index.html">
Design for TV</a></li>
</ul>
+
</div>
</div>
+ <!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=72K1VhjoL98">
+<div>
+ <h3>Video</h3>
+ <p>DevBytes: Android TV — Using the Leanback library</p>
+</div>
+</a>
+
+
+
<p>
Browsing and playing media files is frequently part of the user experience provided by a TV app.
Building such an experience from scratch, while making sure that it is fast, fluid, and attractive
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 78714d2..e692084 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -127,10 +127,10 @@
* <receiver android:name=".TvInputReceiver">
* <intent-filter>
* <action android:name=
- * "android.media.tv.TvInputManager.ACTION_QUERY_CONTENT_RATING_SYSTEMS" />
+ * "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS" />
* </intent-filter>
* <meta-data
- * android:name="android.media.tv.TvInputManager.META_DATA_CONTENT_RATING_SYSTEMS"
+ * android:name="android.media.tv.metadata.CONTENT_RATING_SYSTEMS"
* android:resource="@xml/tv_content_rating_systems" />
* </receiver>}</pre></p>
* In the above example, the <code>@xml/tv_content_rating_systems</code> resource refers to an