1ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu/*
2ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * Copyright (C) 2012 The Android Open Source Project
3ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu *
4ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * Licensed under the Apache License, Version 2.0 (the "License");
5ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * you may not use this file except in compliance with the License.
6ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * You may obtain a copy of the License at
7ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu *
8ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu *      http://www.apache.org/licenses/LICENSE-2.0
9ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu *
10ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * Unless required by applicable law or agreed to in writing, software
11ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * distributed under the License is distributed on an "AS IS" BASIS,
12ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * See the License for the specific language governing permissions and
14ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * limitations under the License.
15ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu */
16ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
17ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tupackage com.android.location.provider;
18ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
19ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tuimport android.location.LocationRequest;
20ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
21ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu/**
22ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * This class is an interface to LocationRequests for unbundled applications.
23ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu *
24ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * <p>IMPORTANT: This class is effectively a public API for unbundled
25ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * applications, and must remain API stable. See README.txt in the root
26ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu * of this package for more information.
27ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu */
28ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tupublic final class LocationRequestUnbundled {
29ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
30ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Returned by {@link #getQuality} when requesting the most accurate locations available.
31ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
32ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * <p>This may be up to 1 meter accuracy, although this is implementation dependent.
33ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
34ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public static final int ACCURACY_FINE = LocationRequest.ACCURACY_FINE;
35ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
36ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
37ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Returned by {@link #getQuality} when requesting "block" level accuracy.
38ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
39ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * <p>Block level accuracy is considered to be about 100 meter accuracy,
40ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * although this is implementation dependent. Using a coarse accuracy
41ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * such as this often consumes less power.
42ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
43ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public static final int ACCURACY_BLOCK = LocationRequest.ACCURACY_BLOCK;
44ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
45ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
46ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Returned by {@link #getQuality} when requesting "city" level accuracy.
47ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
48ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * <p>City level accuracy is considered to be about 10km accuracy,
49ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * although this is implementation dependent. Using a coarse accuracy
50ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * such as this often consumes less power.
51ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
52ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public static final int ACCURACY_CITY = LocationRequest.ACCURACY_CITY;
53ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
54ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
55ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Returned by {@link #getQuality} when requiring no direct power impact (passive locations).
56ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
57ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * <p>This location request will not trigger any active location requests,
58ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * but will receive locations triggered by other applications. Your application
59ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * will not receive any direct power blame for location work.
60ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
61ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public static final int POWER_NONE = LocationRequest.POWER_NONE;
62ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
63ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
64ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Returned by {@link #getQuality} when requesting low power impact.
65ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
66ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * <p>This location request will avoid high power location work where
67ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * possible.
68ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
69ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public static final int POWER_LOW = LocationRequest.POWER_LOW;
70ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
71ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
72ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Returned by {@link #getQuality} when allowing high power consumption for location.
73ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
74ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * <p>This location request will allow high power location work.
75ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
76ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public static final int POWER_HIGH = LocationRequest.POWER_HIGH;
77ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
78ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    private final LocationRequest delegate;
79ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
80ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    LocationRequestUnbundled(LocationRequest delegate) {
81ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu        this.delegate = delegate;
82ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    }
83ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
84ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
85ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Get the desired interval of this request, in milliseconds.
86ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
87ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * @return desired interval in milliseconds, inexact
88ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
89ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public long getInterval() {
90ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu        return delegate.getInterval();
91ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    }
92ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
93ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
94ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Get the fastest interval of this request, in milliseconds.
95ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
96ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * <p>The system will never provide location updates faster
97ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * than the minimum of {@link #getFastestInterval} and
98ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * {@link #getInterval}.
99ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
100ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * @return fastest interval in milliseconds, exact
101ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
102ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public long getFastestInterval() {
103ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu        return delegate.getFastestInterval();
104ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    }
105ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
106ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
107ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Get the quality of the request.
108ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
109ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * @return an accuracy or power constant
110ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
111ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public int getQuality() {
112ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu        return delegate.getQuality();
113ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    }
114ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
115ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    /**
116ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * Get the minimum distance between location updates, in meters.
117ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     *
118ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     * @return minimum distance between location updates in meters
119ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu     */
120ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public float getSmallestDisplacement() {
121ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu        return delegate.getSmallestDisplacement();
122ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    }
123ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu
124ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    @Override
125ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    public String toString() {
126ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu      return delegate.toString();
127ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu    }
128ccb4c318aa5150ba49b7e7878d20b4787d6bf723Laurent Tu}
129