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