Loading location/java/com/android/internal/location/LocationProviderProxy.java +18 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.location.ILocationProvider; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; Loading @@ -31,7 +32,7 @@ import java.util.List; * * {@hide} */ public class LocationProviderProxy { public class LocationProviderProxy implements IBinder.DeathRecipient { private static final String TAG = "LocationProviderProxy"; Loading @@ -39,16 +40,27 @@ public class LocationProviderProxy { private final ILocationProvider mProvider; private boolean mLocationTracking = false; private long mMinTime = 0; private boolean mDead; public LocationProviderProxy(String name, ILocationProvider provider) { mName = name; mProvider = provider; try { provider.asBinder().linkToDeath(this, 0); } catch (RemoteException e) { Log.e(TAG, "linkToDeath failed", e); mDead = true; } } public String getName() { return mName; } public boolean isDead() { return mDead; } public boolean requiresNetwork() { try { return mProvider.requiresNetwork(); Loading Loading @@ -231,4 +243,9 @@ public class LocationProviderProxy { Log.e(TAG, "removeListener failed", e); } } public void binderDied() { Log.w(TAG, "Location Provider " + mName + " died"); mDead = true; } } services/java/com/android/server/LocationManagerService.java +15 −2 Original line number Diff line number Diff line Loading @@ -216,7 +216,6 @@ public class LocationManagerService extends ILocationManager.Stub implements Run return mKey.hashCode(); } @Override public String toString() { if (mListener != null) { Loading Loading @@ -611,6 +610,17 @@ public class LocationManagerService extends ILocationManager.Stub implements Run } synchronized (mLock) { // check to see if we are reinstalling a dead provider LocationProviderProxy oldProvider = mProvidersByName.get(name); if (oldProvider != null) { if (oldProvider.isDead()) { Log.d(TAG, "replacing dead provider"); removeProvider(oldProvider); } else { throw new IllegalArgumentException("Provider \"" + name + "\" already exists"); } } LocationProviderProxy proxy = new LocationProviderProxy(name, provider); addProvider(proxy); updateProvidersLocked(); Loading Loading @@ -1616,6 +1626,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run mCollector.updateLocation(location); } catch (RemoteException e) { Log.w(TAG, "mCollector.updateLocation failed"); mCollector = null; } } Loading Loading @@ -1750,6 +1761,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run variant, appName, addrs); } catch (RemoteException e) { Log.e(TAG, "getFromLocation failed", e); mGeocodeProvider = null; } } return null; Loading @@ -1768,6 +1780,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run maxResults, language, country, variant, appName, addrs); } catch (RemoteException e) { Log.e(TAG, "getFromLocationName failed", e); mGeocodeProvider = null; } } return null; Loading Loading
location/java/com/android/internal/location/LocationProviderProxy.java +18 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.location.ILocationProvider; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; Loading @@ -31,7 +32,7 @@ import java.util.List; * * {@hide} */ public class LocationProviderProxy { public class LocationProviderProxy implements IBinder.DeathRecipient { private static final String TAG = "LocationProviderProxy"; Loading @@ -39,16 +40,27 @@ public class LocationProviderProxy { private final ILocationProvider mProvider; private boolean mLocationTracking = false; private long mMinTime = 0; private boolean mDead; public LocationProviderProxy(String name, ILocationProvider provider) { mName = name; mProvider = provider; try { provider.asBinder().linkToDeath(this, 0); } catch (RemoteException e) { Log.e(TAG, "linkToDeath failed", e); mDead = true; } } public String getName() { return mName; } public boolean isDead() { return mDead; } public boolean requiresNetwork() { try { return mProvider.requiresNetwork(); Loading Loading @@ -231,4 +243,9 @@ public class LocationProviderProxy { Log.e(TAG, "removeListener failed", e); } } public void binderDied() { Log.w(TAG, "Location Provider " + mName + " died"); mDead = true; } }
services/java/com/android/server/LocationManagerService.java +15 −2 Original line number Diff line number Diff line Loading @@ -216,7 +216,6 @@ public class LocationManagerService extends ILocationManager.Stub implements Run return mKey.hashCode(); } @Override public String toString() { if (mListener != null) { Loading Loading @@ -611,6 +610,17 @@ public class LocationManagerService extends ILocationManager.Stub implements Run } synchronized (mLock) { // check to see if we are reinstalling a dead provider LocationProviderProxy oldProvider = mProvidersByName.get(name); if (oldProvider != null) { if (oldProvider.isDead()) { Log.d(TAG, "replacing dead provider"); removeProvider(oldProvider); } else { throw new IllegalArgumentException("Provider \"" + name + "\" already exists"); } } LocationProviderProxy proxy = new LocationProviderProxy(name, provider); addProvider(proxy); updateProvidersLocked(); Loading Loading @@ -1616,6 +1626,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run mCollector.updateLocation(location); } catch (RemoteException e) { Log.w(TAG, "mCollector.updateLocation failed"); mCollector = null; } } Loading Loading @@ -1750,6 +1761,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run variant, appName, addrs); } catch (RemoteException e) { Log.e(TAG, "getFromLocation failed", e); mGeocodeProvider = null; } } return null; Loading @@ -1768,6 +1780,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run maxResults, language, country, variant, appName, addrs); } catch (RemoteException e) { Log.e(TAG, "getFromLocationName failed", e); mGeocodeProvider = null; } } return null; Loading