PassiveProvider.java revision 00b74270c9f136a8727c5f6cda0997a3a905f385
1a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood/*
2a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * Copyright (C) 2010 The Android Open Source Project
3a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood *
4a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
5a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * you may not use this file except in compliance with the License.
6a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * You may obtain a copy of the License at
7a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood *
8a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
9a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood *
10a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * Unless required by applicable law or agreed to in writing, software
11a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
12a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * See the License for the specific language governing permissions and
14a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * limitations under the License.
15a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood */
16a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
1700b74270c9f136a8727c5f6cda0997a3a905f385Mike Lockwoodpackage com.android.server.location;
18a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
19a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.location.ILocationManager;
20a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.location.Location;
21a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.location.LocationManager;
22a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.location.LocationProvider;
23a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.net.NetworkInfo;
24a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.os.Bundle;
25a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.os.RemoteException;
26a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodimport android.util.Log;
27a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
28a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood/**
29a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * A passive location provider reports locations received from other providers
30a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * for clients that want to listen passively without actually triggering
31a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * location updates.
32a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood *
33a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood * {@hide}
34a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood */
35a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwoodpublic class PassiveProvider implements LocationProviderInterface {
36a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
37a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    private static final String TAG = "PassiveProvider";
38a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
39a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    private final ILocationManager mLocationManager;
40a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    private boolean mTracking;
41a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
42a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public PassiveProvider(ILocationManager locationManager) {
43a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        mLocationManager = locationManager;
44a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
45a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
46a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public String getName() {
47a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return LocationManager.PASSIVE_PROVIDER;
48a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
49a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
50a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean requiresNetwork() {
51a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
52a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
53a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
54a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean requiresSatellite() {
55a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
56a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
57a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
58a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean requiresCell() {
59a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
60a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
61a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
62a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean hasMonetaryCost() {
63a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
64a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
65a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
66a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean supportsAltitude() {
67a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
68a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
69a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
70a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean supportsSpeed() {
71a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
72a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
73a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
74a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean supportsBearing() {
75a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
76a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
77a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
78a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public int getPowerRequirement() {
79a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return -1;
80a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
81a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
82a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public int getAccuracy() {
83a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return -1;
84a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
85a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
86a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean isEnabled() {
87a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return true;
88a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
89a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
90a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void enable() {
91a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
92a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
93a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void disable() {
94a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
95a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
96a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public int getStatus(Bundle extras) {
97a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        if (mTracking) {
98a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood            return LocationProvider.AVAILABLE;
99a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        } else {
100a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood            return LocationProvider.TEMPORARILY_UNAVAILABLE;
101a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        }
102a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
103a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
104a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public long getStatusUpdateTime() {
105a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return -1;
106a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
107a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
1083c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger    public String getInternalState() {
1093c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger        return null;
1103c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger    }
1113c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger
112a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void enableLocationTracking(boolean enable) {
113a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        mTracking = enable;
114a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
115a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
116a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void setMinTime(long minTime) {
117a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
118a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
119a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void updateNetworkState(int state, NetworkInfo info) {
120a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
121a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
122a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void updateLocation(Location location) {
123a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        if (mTracking) {
124a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood            try {
125a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood                // pass the location back to the location manager
126a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood                mLocationManager.reportLocation(location, true);
127a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood            } catch (RemoteException e) {
128a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood                Log.e(TAG, "RemoteException calling reportLocation");
129a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood            }
130a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        }
131a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
132a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
133a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public boolean sendExtraCommand(String command, Bundle extras) {
134a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood        return false;
135a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
136a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
137a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void addListener(int uid) {
138a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
139a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood
140a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    public void removeListener(int uid) {
141a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood    }
142a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood}
143