Merge "docs: Adds new topic: Change Location Settings" into mnc-docs
This commit is contained in:
committed by
Android (Google) Code Review
commit
209d3a4b38
251
docs/html/training/location/change-location-settings.jd
Normal file
251
docs/html/training/location/change-location-settings.jd
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
page.title=Changing Location Settings
|
||||||
|
trainingnavtop=true
|
||||||
|
@jd:body
|
||||||
|
|
||||||
|
<div id="tb-wrapper">
|
||||||
|
<div id="tb">
|
||||||
|
|
||||||
|
<h2>This lesson teaches you how to</h2>
|
||||||
|
<ol>
|
||||||
|
<li><a href="#connect">Connect to Location Services</a></li>
|
||||||
|
<li><a href="#location-request">Set Up a Location Request</a></li>
|
||||||
|
<li><a href="#get-settings">Get Current Location Settings</a></li>
|
||||||
|
<li><a href="#prompt">Prompt the User to Change Location Settings</a></li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h2>You should also read</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://developers.google.com/android/guides/setup"
|
||||||
|
class="external-link">Setting up Google Play Services</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="retrieve-current.html">Getting the Last Known Location</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>If your app needs to request location or receive permission updates, the
|
||||||
|
device needs to enable the appropriate system settings, such as GPS or Wi-Fi
|
||||||
|
scanning. Rather than directly enabling services such as the device's GPS,
|
||||||
|
your app specifies the required level of accuracy/power consumption and
|
||||||
|
desired update interval, and the device automatically makes the appropriate
|
||||||
|
changes to system settings. These settings are defined by the
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest"
|
||||||
|
class="external-link">{@code LocationRequest}</a>
|
||||||
|
data object. </p>
|
||||||
|
|
||||||
|
<p>This lesson shows you how to use the
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi">Settings API</a>
|
||||||
|
to check which settings are enabled, and present the Location Settings
|
||||||
|
dialog for the user to update their settings with a single tap.</p>
|
||||||
|
|
||||||
|
<h2 id="connect">Connect to Location Services</h2>
|
||||||
|
|
||||||
|
<p>In order to use the location services provided by Google Play Services and
|
||||||
|
the fused location provider, connect your app using the
|
||||||
|
<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient">Google API Client</a>,
|
||||||
|
then check the current location settings and prompt the user to enable the
|
||||||
|
required settings if needed. For details on connecting with the
|
||||||
|
Google API client, see <a href="retrieve-current.html">Getting the Last Known Location</a>.</p>
|
||||||
|
|
||||||
|
<p>Apps that use location services must request location permissions. For this
|
||||||
|
lesson, coarse location detection is sufficient. Request this permission
|
||||||
|
with the <code>uses-permission</code> element in your app manifest, as shown
|
||||||
|
in the following example:</p>
|
||||||
|
|
||||||
|
<pre><code><manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.google.android.gms.location.sample.locationupdates" >
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||||
|
</manifest>
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>If the device is running Android 6.0 or higher, and your app's target
|
||||||
|
SDK is 23 or higher, the app has to list the permissions in the manifest
|
||||||
|
<em>and</em> request those permissions at run time. For more information, see
|
||||||
|
<a href="{@docRoot}training/permissions/requesting.html">Requesting Permissions at Run Time</a>.</p>
|
||||||
|
|
||||||
|
<h2 id="location-request">Set Up a Location Request</h2>
|
||||||
|
|
||||||
|
<p>To store parameters for requests to the fused location provider, create a
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>.
|
||||||
|
The parameters determine the level of accuracy for location requests. For
|
||||||
|
details of all available location request options, see the
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>
|
||||||
|
class reference. This lesson sets the update interval, fastest update
|
||||||
|
interval, and priority, as described below:</p>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
Update interval
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>
|
||||||
|
- This method sets the rate in milliseconds at which your app prefers to
|
||||||
|
receive location updates. Note that the location updates may be faster than
|
||||||
|
this rate if another app is receiving updates at a faster rate, or slower
|
||||||
|
than this rate, or there may be no updates at all (if the device has no
|
||||||
|
connectivity, for example).
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
Fastest update interval
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
|
||||||
|
- This method sets the <strong>fastest</strong> rate in milliseconds at which
|
||||||
|
your app can handle location updates. You need to set this rate because
|
||||||
|
other apps also affect the rate at which updates are sent. The Google Play
|
||||||
|
services location APIs send out updates at the fastest rate that any app
|
||||||
|
has requested with
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>.
|
||||||
|
If this rate is faster
|
||||||
|
than your app can handle, you may encounter problems with UI flicker or data
|
||||||
|
overflow. To prevent this, call
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
|
||||||
|
to set an upper limit to the update rate.
|
||||||
|
</dd>
|
||||||
|
<dt>Priority</dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setPriority(int)">{@code setPriority()}</a>
|
||||||
|
- This method sets the priority of the request, which gives the Google Play
|
||||||
|
services location services a strong hint about which location sources to use.
|
||||||
|
The following values are supported:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_BALANCED_POWER_ACCURACY">{@code PRIORITY_BALANCED_POWER_ACCURACY}</a>
|
||||||
|
- Use this setting to request location precision to within a city
|
||||||
|
block, which is an accuracy of approximately 100 meters. This is
|
||||||
|
considered a coarse level of accuracy, and is likely to consume less
|
||||||
|
power. With this setting, the location services are likely to use WiFi
|
||||||
|
and cell tower positioning. Note, however, that the choice of location
|
||||||
|
provider depends on many other factors, such as which sources are
|
||||||
|
available.</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>
|
||||||
|
- Use this setting to request the most precise location possible. With
|
||||||
|
this setting, the location services are more likely to use GPS
|
||||||
|
to determine the location.</li>
|
||||||
|
<li><a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_LOW_POWER">{@code PRIORITY_LOW_POWER}</a>
|
||||||
|
- Use this setting to request city-level precision, which is
|
||||||
|
an accuracy of approximately 10 kilometers. This is considered a
|
||||||
|
coarse level of accuracy, and is likely to consume less power.</li>
|
||||||
|
<li><a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_NO_POWER">{@code PRIORITY_NO_POWER}</a>
|
||||||
|
- Use this setting if you need negligible impact on power consumption,
|
||||||
|
but want to receive location updates when available. With this
|
||||||
|
setting, your app does not trigger any location updates, but
|
||||||
|
receives locations triggered by other apps.</li>
|
||||||
|
</ul>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>Create the location request and set the parameters as shown in this
|
||||||
|
code sample:</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
protected void createLocationRequest() {
|
||||||
|
LocationRequest mLocationRequest = new LocationRequest();
|
||||||
|
mLocationRequest.setInterval(10000);
|
||||||
|
mLocationRequest.setFastestInterval(5000);
|
||||||
|
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>The priority of
|
||||||
|
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>,
|
||||||
|
combined with the
|
||||||
|
{@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}
|
||||||
|
permission setting that you've defined in the app manifest, and a fast update
|
||||||
|
interval of 5000 milliseconds (5 seconds), causes the fused location
|
||||||
|
provider to return location updates that are accurate to within a few feet.
|
||||||
|
This approach is appropriate for mapping apps that display the location in
|
||||||
|
real time.</p>
|
||||||
|
|
||||||
|
<p class="note"><strong>Performance hint:</strong> If your app accesses the
|
||||||
|
network or does other long-running work after receiving a location update,
|
||||||
|
adjust the fastest interval to a slower value. This adjustment prevents your
|
||||||
|
app from receiving updates it can't use. Once the long-running work is done,
|
||||||
|
set the fastest interval back to a fast value.</p>
|
||||||
|
|
||||||
|
<h2 id="get-settings">Get Current Location Settings</h2>
|
||||||
|
|
||||||
|
<p>Once you have connected to Google Play services and the location services
|
||||||
|
API, you can get the current location settings of a user's device. To do
|
||||||
|
this, create a
|
||||||
|
<a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsRequest.Builder"><code>LocationSettingsRequest.Builder</code></a>,
|
||||||
|
and add one or more location requests. The following code snippet shows how
|
||||||
|
to add the location request that was created in the previous step:</p>
|
||||||
|
|
||||||
|
<pre>LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
|
||||||
|
.addLocationRequest(mLocationRequest);
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>Next check whether the current location settings are satisfied:</p>
|
||||||
|
|
||||||
|
<pre>PendingResult<LocationSettingsResult> result =
|
||||||
|
LocationServices.SettingsApi.checkLocationSettings(mGoogleClient,
|
||||||
|
builder.build());</pre>
|
||||||
|
|
||||||
|
<p>When the <a href="{@docRoot}reference/com/google/android/gms/common/api/PendingResult"><code>PendingResult</code></a>
|
||||||
|
returns, your app can check the location settings by looking at the status
|
||||||
|
code from the <a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult"><code>LocationSettingsResult</code></a>
|
||||||
|
object. To get even more details about the the current state of the relevant
|
||||||
|
location settings, your app can call the
|
||||||
|
<a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult">{@code LocationSettingsResult}</a>
|
||||||
|
object's
|
||||||
|
<a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult#getLocationSettingsStates"><code>getLocationSettingsStates()</code></a>
|
||||||
|
method.</p>
|
||||||
|
|
||||||
|
<h2 id="prompt">Prompt the User to Change Location Settings</h2>
|
||||||
|
|
||||||
|
<p>To determine whether the location settings are appropriate for the location
|
||||||
|
request, check the status code from the
|
||||||
|
<a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult">{@code LocationSettingsResult}</a>
|
||||||
|
object. A status code of <code>RESOLUTION_REQUIRED</code> indicates that the
|
||||||
|
settings must be changed. To prompt the user for permission to modify the
|
||||||
|
location settings, call
|
||||||
|
<a href="{@docRoot}reference/com/google/android/gms/common/api/Status#startResolutionForResult(android.app.Activity, int)">
|
||||||
|
{@code startResolutionForResult(Activity, int)}</a>.
|
||||||
|
This method brings up a dialog asking for the user's permission to modify
|
||||||
|
location settings. The following code snippet shows how to check the location
|
||||||
|
settings, and how to call {@code startResolutionForResult(Activity, int)}.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>result.setResultCallback(new ResultCallback<LocationSettingsResult>()) {
|
||||||
|
@Override
|
||||||
|
public void onResult(LocationSettingsResult result) {
|
||||||
|
final Status status = result.getStatus();
|
||||||
|
final LocationSettingsStates = result.getLocationSettingsStates();
|
||||||
|
switch (status.getStatusCode()) {
|
||||||
|
case LocationSettingsStatusCodes.SUCCESS:
|
||||||
|
// All location settings are satisfied. The client can
|
||||||
|
// initialize location requests here.
|
||||||
|
...
|
||||||
|
break;
|
||||||
|
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
|
||||||
|
// Location settings are not satisfied, but this can be fixed
|
||||||
|
// by showing the user a dialog.
|
||||||
|
try {
|
||||||
|
// Show the dialog by calling startResolutionForResult(),
|
||||||
|
// and check the result in onActivityResult().
|
||||||
|
status.startResolutionForResult(
|
||||||
|
OuterClass.this,
|
||||||
|
REQUEST_CHECK_SETTINGS);
|
||||||
|
} catch (SendIntentException e) {
|
||||||
|
// Ignore the error.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
|
||||||
|
// Location settings are not satisfied. However, we have no way
|
||||||
|
// to fix the settings so we won't show the dialog.
|
||||||
|
...
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});</pre>
|
||||||
|
|
||||||
|
<p>The next lesson,
|
||||||
|
<a href="receive-location-updates.html">Receiving Location Updates</a>, shows
|
||||||
|
you how to receive periodic location updates.</p>
|
||||||
@@ -78,6 +78,10 @@ href="https://www.youtube.com/watch?v=S8sugXgUVEI">
|
|||||||
</dt> <dd>
|
</dt> <dd>
|
||||||
Learn how to retrieve the last known location of an Android device, which
|
Learn how to retrieve the last known location of an Android device, which
|
||||||
is usually equivalent to the user's current location.
|
is usually equivalent to the user's current location.
|
||||||
|
</dd> <dt>
|
||||||
|
<b><a href="change-location-settings.html">Changing Location Settings</a></b>
|
||||||
|
<dt> <dd>
|
||||||
|
Learn how to detect and apply system settings for location features.
|
||||||
</dd> <dt>
|
</dd> <dt>
|
||||||
<b><a href="receive-location-updates.html">Receiving Location
|
<b><a href="receive-location-updates.html">Receiving Location
|
||||||
Updates</a></b>
|
Updates</a></b>
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ trainingnavtop=true
|
|||||||
|
|
||||||
<h2>This lesson teaches you how to</h2>
|
<h2>This lesson teaches you how to</h2>
|
||||||
<ol>
|
<ol>
|
||||||
<li><a href="#connect">Connect to Location Services</a></li>
|
<li><a href="#get-last-location">Get the Last Known Location</a></li>
|
||||||
<li><a href="#location-request">Set Up a Location Request</a></li>
|
|
||||||
<li><a href="#updates">Request Location Updates</a></li>
|
<li><a href="#updates">Request Location Updates</a></li>
|
||||||
<li><a href="#callback">Define the Location Update Callback</a></li>
|
<li><a href="#callback">Define the Location Update Callback</a></li>
|
||||||
<li><a href="#stop-updates">Stop Location Updates</a></li>
|
<li><a href="#stop-updates">Stop Location Updates</a></li>
|
||||||
@@ -19,7 +18,7 @@ trainingnavtop=true
|
|||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="{@docRoot}google/play-services/setup.html">Setting up Google Play
|
<a href="{@docRoot}google/play-services/setup.html">Setting up Google Play
|
||||||
Services</a>
|
Services</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="retrieve-current.html">Getting the Last Known Location</a>
|
<a href="retrieve-current.html">Getting the Last Known Location</a>
|
||||||
@@ -64,16 +63,7 @@ trainingnavtop=true
|
|||||||
<a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">{@code requestLocationUpdates()}</a>
|
<a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">{@code requestLocationUpdates()}</a>
|
||||||
method in the fused location provider.
|
method in the fused location provider.
|
||||||
|
|
||||||
<h2 id="connect">Connect to Location Services</h2>
|
<h2 id="get-last-location">Get the Last Known Location</h2>
|
||||||
|
|
||||||
<p>Location services for apps are provided through Google Play services and the
|
|
||||||
fused location provider. In order to use these services, you connect your app
|
|
||||||
using the Google API Client and then request location updates. For details on
|
|
||||||
connecting with the
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html">{@code GoogleApiClient}</a>,
|
|
||||||
follow the instructions in
|
|
||||||
<a href="retrieve-current.html">Getting the Last Known Location</a>, including
|
|
||||||
requesting the current location.</p>
|
|
||||||
|
|
||||||
<p>The last known location of the device provides a handy base from which to
|
<p>The last known location of the device provides a handy base from which to
|
||||||
start, ensuring that the app has a known location before starting the
|
start, ensuring that the app has a known location before starting the
|
||||||
@@ -101,112 +91,13 @@ trainingnavtop=true
|
|||||||
</manifest>
|
</manifest>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<h2 id="location-request">Set Up a Location Request</h2>
|
|
||||||
|
|
||||||
<p>To store parameters for requests to the fused location provider, create a
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>.
|
|
||||||
The parameters determine the levels of accuracy requested. For details of all
|
|
||||||
the options available in the location request, see the
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>
|
|
||||||
class reference. This lesson sets the update interval, fastest update
|
|
||||||
interval, and priority, as described below:</p>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt>
|
|
||||||
Update interval
|
|
||||||
</dt>
|
|
||||||
<dd>
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>
|
|
||||||
- This method sets the rate in milliseconds at which your app prefers to
|
|
||||||
receive location updates. Note that the location updates may be faster than
|
|
||||||
this rate if another app is receiving updates at a faster rate, or slower
|
|
||||||
than this rate, or there may be no updates at all (if the device has no
|
|
||||||
connectivity, for example).
|
|
||||||
</dd>
|
|
||||||
<dt>
|
|
||||||
Fastest update interval
|
|
||||||
</dt>
|
|
||||||
<dd>
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
|
|
||||||
- This method sets the <strong>fastest</strong> rate in milliseconds at which
|
|
||||||
your app can handle location updates. You need to set this rate because
|
|
||||||
other apps also affect the rate at which updates are sent. The Google Play
|
|
||||||
services location APIs send out updates at the fastest rate that any app
|
|
||||||
has requested with
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>.
|
|
||||||
If this rate is faster
|
|
||||||
than your app can handle, you may encounter problems with UI flicker or data
|
|
||||||
overflow. To prevent this, call
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
|
|
||||||
to set an upper limit to the update rate.
|
|
||||||
</dd>
|
|
||||||
<dt>Priority</dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setPriority(int)">{@code setPriority()}</a>
|
|
||||||
- This method sets the priority of the request, which gives the Google Play
|
|
||||||
services location services a strong hint about which location sources to use.
|
|
||||||
The following values are supported:</p>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_BALANCED_POWER_ACCURACY">{@code PRIORITY_BALANCED_POWER_ACCURACY}</a>
|
|
||||||
- Use this setting to request location precision to within a city
|
|
||||||
block, which is an accuracy of approximately 100 meters. This is
|
|
||||||
considered a coarse level of accuracy, and is likely to consume less
|
|
||||||
power. With this setting, the location services are likely to use WiFi
|
|
||||||
and cell tower positioning. Note, however, that the choice of location
|
|
||||||
provider depends on many other factors, such as which sources are
|
|
||||||
available.</li>
|
|
||||||
<li>
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>
|
|
||||||
- Use this setting to request the most precise location possible. With
|
|
||||||
this setting, the location services are more likely to use GPS
|
|
||||||
(Global Positioning System) to determine the location.</li>
|
|
||||||
<li><a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_LOW_POWER">{@code PRIORITY_LOW_POWER}</a>
|
|
||||||
- Use this setting to request city-level precision, which is
|
|
||||||
an accuracy of approximately 10 kilometers. This is considered a
|
|
||||||
coarse level of accuracy, and is likely to consume less power.</li>
|
|
||||||
<li><a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_NO_POWER">{@code PRIORITY_NO_POWER}</a>
|
|
||||||
- Use this setting if you need negligible impact on power consumption,
|
|
||||||
but want to receive location updates when available. With this
|
|
||||||
setting, your app does not trigger any location updates, but
|
|
||||||
receives locations triggered by other apps.</li>
|
|
||||||
</ul>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<p>Create the location request and set the parameters as shown in this
|
|
||||||
code sample:</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
protected void createLocationRequest() {
|
|
||||||
LocationRequest mLocationRequest = new LocationRequest();
|
|
||||||
mLocationRequest.setInterval(10000);
|
|
||||||
mLocationRequest.setFastestInterval(5000);
|
|
||||||
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
|
|
||||||
}
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>The priority of
|
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>,
|
|
||||||
combined with the
|
|
||||||
{@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}
|
|
||||||
permission setting that you've defined in the app manifest, and a fast update
|
|
||||||
interval of 5000 milliseconds (5 seconds), causes the fused location
|
|
||||||
provider to return location updates that are accurate to within a few feet.
|
|
||||||
This approach is appropriate for mapping apps that display the location in
|
|
||||||
real time.</p>
|
|
||||||
|
|
||||||
<p class="note"><strong>Performance hint:</strong> If your app accesses the
|
|
||||||
network or does other long-running work after receiving a location update,
|
|
||||||
adjust the fastest interval to a slower value. This adjustment prevents your
|
|
||||||
app from receiving updates it can't use. Once the long-running work is done,
|
|
||||||
set the fastest interval back to a fast value.</p>
|
|
||||||
|
|
||||||
<h2 id="updates">Request Location Updates</h2>
|
<h2 id="updates">Request Location Updates</h2>
|
||||||
|
|
||||||
<p>Now that you've set up a location request containing your app's requirements
|
<p>Before requesting location updates, your app must connect to location
|
||||||
for the location updates, you can start the regular updates by calling
|
services and make a location request. The lesson on
|
||||||
|
<a href="change-location-settings.html">Changing Location Settings</a>
|
||||||
|
shows you how to do this. Once a location request is in place you can start
|
||||||
|
the regular updates by calling
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">{@code requestLocationUpdates()}</a>.
|
<a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">{@code requestLocationUpdates()}</a>.
|
||||||
Do this in the
|
Do this in the
|
||||||
<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">{@code onConnected()}</a>
|
<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">{@code onConnected()}</a>
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ trainingnavtop=true
|
|||||||
<pre>
|
<pre>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.google.android.gms.location.sample.basiclocationsample" >
|
package="com.google.android.gms.location.sample.basiclocationsample" >
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||||
</manifest>
|
</manifest>
|
||||||
</pre>
|
</pre>
|
||||||
@@ -180,5 +180,6 @@ public class MainActivity extends ActionBarActivity implements
|
|||||||
when the location is not available.</p>
|
when the location is not available.</p>
|
||||||
|
|
||||||
<p>The next lesson,
|
<p>The next lesson,
|
||||||
<a href="receive-location-updates.html">Receiving Location Updates</a>, shows
|
<a href="change-location-settings.html">Changing Location Settings</a>, shows
|
||||||
you how to receive periodic location updates.</p>
|
you how to detect the current location settings, and prompt the user to
|
||||||
|
change settings as appropriate for your app's requirements.</p>
|
||||||
|
|||||||
@@ -779,6 +779,11 @@
|
|||||||
Getting the Last Known Location
|
Getting the Last Known Location
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="<?cs var:toroot ?>training/location/change-location-settings.html">
|
||||||
|
Changing Location Settings
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
|
<a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
|
||||||
Receiving Location Updates
|
Receiving Location Updates
|
||||||
|
|||||||
Reference in New Issue
Block a user