LocationProviderProxy.java revision fff2fda0199dedbf1079454dca98a81190dce765
1e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood/* 2e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * Copyright (C) 2009 The Android Open Source Project 3e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * 4e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * you may not use this file except in compliance with the License. 6e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * You may obtain a copy of the License at 7e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * 8e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * 10e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * Unless required by applicable law or agreed to in writing, software 11e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * See the License for the specific language governing permissions and 14e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * limitations under the License. 15e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood */ 16e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 17e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodpackage com.android.internal.location; 18e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 19e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport android.location.Address; 20e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport android.location.ILocationProvider; 21e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport android.location.Location; 22e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport android.location.LocationManager; 23e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport android.os.Bundle; 243681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwoodimport android.os.IBinder; 25e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport android.os.RemoteException; 26e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport android.util.Log; 27e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 28e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwoodimport java.util.List; 29e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 30e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood/** 31e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * A class for proxying remote ILocationProvider implementations. 32e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * 33e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood * {@hide} 34e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood */ 353681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwoodpublic class LocationProviderProxy implements IBinder.DeathRecipient { 36e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 37e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood private static final String TAG = "LocationProviderProxy"; 38e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 3915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood private final String mName; 40e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood private final ILocationProvider mProvider; 4115e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood private boolean mLocationTracking = false; 4215e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood private long mMinTime = 0; 433681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood private boolean mDead; 44e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 4515e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood public LocationProviderProxy(String name, ILocationProvider provider) { 4615e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood mName = name; 47e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood mProvider = provider; 483681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood try { 493681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood provider.asBinder().linkToDeath(this, 0); 503681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood } catch (RemoteException e) { 513681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood Log.e(TAG, "linkToDeath failed", e); 523681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood mDead = true; 533681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood } 54e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 55e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 56fff2fda0199dedbf1079454dca98a81190dce765Suchi Amalapurapu public void unlinkProvider() { 57fff2fda0199dedbf1079454dca98a81190dce765Suchi Amalapurapu if (mProvider != null) { 58fff2fda0199dedbf1079454dca98a81190dce765Suchi Amalapurapu mProvider.asBinder().unlinkToDeath(this, 0); 59fff2fda0199dedbf1079454dca98a81190dce765Suchi Amalapurapu } 60fff2fda0199dedbf1079454dca98a81190dce765Suchi Amalapurapu } 61fff2fda0199dedbf1079454dca98a81190dce765Suchi Amalapurapu 6215e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood public String getName() { 6315e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood return mName; 6415e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood } 6515e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood 663681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood public boolean isDead() { 673681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood return mDead; 683681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood } 693681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood 70e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean requiresNetwork() { 71e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 72e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.requiresNetwork(); 73e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 74e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "requiresNetwork failed", e); 75e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 76e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 77e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 78e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 79e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean requiresSatellite() { 80e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 81e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.requiresSatellite(); 82e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 83e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "requiresSatellite failed", e); 84e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 85e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 86e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 87e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 88e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean requiresCell() { 89e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 90e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.requiresCell(); 91e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 92e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "requiresCell failed", e); 93e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 94e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 95e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 96e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 97e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean hasMonetaryCost() { 98e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 99e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.hasMonetaryCost(); 100e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 101e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "hasMonetaryCost failed", e); 102e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 103e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 104e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 105e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 106e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean supportsAltitude() { 107e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 108e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.supportsAltitude(); 109e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 110e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "supportsAltitude failed", e); 111e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 112e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 113e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 114e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 115e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean supportsSpeed() { 116e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 117e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.supportsSpeed(); 118e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 119e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "supportsSpeed failed", e); 120e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 121e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 122e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 123e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 12415e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood public boolean supportsBearing() { 125e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 126e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.supportsBearing(); 127e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 128e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "supportsBearing failed", e); 129e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 130e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 131e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 132e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 133e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public int getPowerRequirement() { 134e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 135e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.getPowerRequirement(); 136e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 137e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "getPowerRequirement failed", e); 138e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return 0; 139e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 140e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 141e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 142e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public int getAccuracy() { 143e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 144e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.getAccuracy(); 145e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 146e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "getAccuracy failed", e); 147e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return 0; 148e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 149e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 150e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 151e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public void enable() { 152e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 153e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood mProvider.enable(); 154e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 155e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "enable failed", e); 156e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 157e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 158e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 159e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public void disable() { 160e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 161e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood mProvider.disable(); 162e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 163e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "disable failed", e); 164e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 165e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 166e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 167e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean isEnabled() { 168e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 169e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.isEnabled(); 170e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 171e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "isEnabled failed", e); 172e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 173e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 174e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 175e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 176e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public int getStatus(Bundle extras) { 177e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 178e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.getStatus(extras); 179e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 180e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "getStatus failed", e); 181e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return 0; 182e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 183e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 184e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 185e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public long getStatusUpdateTime() { 186e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 187e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.getStatusUpdateTime(); 188e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 189e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "getStatusUpdateTime failed", e); 190e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return 0; 191e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 192e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 193e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 19415e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood public boolean isLocationTracking() { 19515e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood return mLocationTracking; 19615e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood } 19715e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood 198e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public void enableLocationTracking(boolean enable) { 19915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood mLocationTracking = enable; 200e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 201e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood mProvider.enableLocationTracking(enable); 202e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 203e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "enableLocationTracking failed", e); 204e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 205e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 206e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 20715e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood public long getMinTime() { 20815e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood return mMinTime; 20915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood } 21015e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood 211e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public void setMinTime(long minTime) { 21215e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood mMinTime = minTime; 213e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 214e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood mProvider.setMinTime(minTime); 215e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 216e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "setMinTime failed", e); 217e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 218e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 219e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 220e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public void updateNetworkState(int state) { 221e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 222e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood mProvider.updateNetworkState(state); 223e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 224e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "updateNetworkState failed", e); 225e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 226e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 227e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 228fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood public void updateLocation(Location location) { 229fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood try { 230fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood mProvider.updateLocation(location); 231fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood } catch (RemoteException e) { 232fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood Log.e(TAG, "updateLocation failed", e); 233fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood } 234fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood } 235fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood 236e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood public boolean sendExtraCommand(String command, Bundle extras) { 237e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 238e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return mProvider.sendExtraCommand(command, extras); 239e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 240e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "sendExtraCommand failed", e); 241e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood return false; 242e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 243e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 244e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 2452f82c4eb0b4d315481ad79725ad6f52c5ec69685Mike Lockwood public void addListener(int uid) { 246e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 2472f82c4eb0b4d315481ad79725ad6f52c5ec69685Mike Lockwood mProvider.addListener(uid); 248e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 249e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "addListener failed", e); 250e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 251e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 252e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood 2532f82c4eb0b4d315481ad79725ad6f52c5ec69685Mike Lockwood public void removeListener(int uid) { 254e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood try { 2552f82c4eb0b4d315481ad79725ad6f52c5ec69685Mike Lockwood mProvider.removeListener(uid); 256e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } catch (RemoteException e) { 257e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood Log.e(TAG, "removeListener failed", e); 258e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 259e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood } 2603681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood 2613681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood public void binderDied() { 2623681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood Log.w(TAG, "Location Provider " + mName + " died"); 2633681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood mDead = true; 264fff2fda0199dedbf1079454dca98a81190dce765Suchi Amalapurapu mProvider.asBinder().unlinkToDeath(this, 0); 2653681f2614fa8c10560c790f6b4287f65d6fd2663Mike Lockwood } 266e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood} 267