am 79490dba: Merge "Fix reintroduction of b/10845061" into mnc-dr-dev

* commit '79490dbacd90a851ed8d03d64acedbf3616adba4':
  Fix reintroduction of b/10845061
This commit is contained in:
Soonil Nagarkar
2015-09-23 01:58:11 +00:00
committed by Android Git Automerger

View File

@@ -37,7 +37,7 @@ import android.util.Log;
public class FusionEngine implements LocationListener { public class FusionEngine implements LocationListener {
public interface Callback { public interface Callback {
public void reportLocation(Location location); void reportLocation(Location location);
} }
private static final String TAG = "FusedLocation"; private static final String TAG = "FusedLocation";
@@ -45,7 +45,7 @@ public class FusionEngine implements LocationListener {
private static final String GPS = LocationManager.GPS_PROVIDER; private static final String GPS = LocationManager.GPS_PROVIDER;
private static final String FUSED = LocationProviderBase.FUSED_PROVIDER; private static final String FUSED = LocationProviderBase.FUSED_PROVIDER;
public static final long SWITCH_ON_FRESHNESS_CLIFF_NS = 11 * 1000000000; // 11 seconds public static final long SWITCH_ON_FRESHNESS_CLIFF_NS = 11 * 1000000000L; // 11 seconds
private final Context mContext; private final Context mContext;
private final LocationManager mLocationManager; private final LocationManager mLocationManager;
@@ -60,7 +60,7 @@ public class FusionEngine implements LocationListener {
private boolean mEnabled; private boolean mEnabled;
private ProviderRequestUnbundled mRequest; private ProviderRequestUnbundled mRequest;
private final HashMap<String, ProviderStats> mStats = new HashMap<String, ProviderStats>(); private final HashMap<String, ProviderStats> mStats = new HashMap<>();
public FusionEngine(Context context, Looper looper) { public FusionEngine(Context context, Looper looper) {
mContext = context; mContext = context;
@@ -72,9 +72,7 @@ public class FusionEngine implements LocationListener {
mLooper = looper; mLooper = looper;
mStats.put(GPS, new ProviderStats()); mStats.put(GPS, new ProviderStats());
mStats.get(GPS).available = mLocationManager.isProviderEnabled(GPS);
mStats.put(NETWORK, new ProviderStats()); mStats.put(NETWORK, new ProviderStats());
mStats.get(NETWORK).available = mLocationManager.isProviderEnabled(NETWORK);
} }
@@ -119,35 +117,35 @@ public class FusionEngine implements LocationListener {
} }
private static class ProviderStats { private static class ProviderStats {
public boolean available;
public boolean requested; public boolean requested;
public long requestTime; public long requestTime;
public long minTime; public long minTime;
@Override @Override
public String toString() { public String toString() {
StringBuilder s = new StringBuilder(); return (requested ? " REQUESTED" : " ---");
s.append(available ? "AVAILABLE" : "UNAVAILABLE");
s.append(requested ? " REQUESTED" : " ---");
return s.toString();
} }
} }
private void enableProvider(String name, long minTime) { private void enableProvider(String name, long minTime) {
ProviderStats stats = mStats.get(name); ProviderStats stats = mStats.get(name);
if (stats == null) return;
if (!stats.requested) { if (mLocationManager.isProviderEnabled(name)) {
stats.requestTime = SystemClock.elapsedRealtime(); if (!stats.requested) {
stats.requested = true; stats.requestTime = SystemClock.elapsedRealtime();
stats.minTime = minTime; stats.requested = true;
mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper); stats.minTime = minTime;
} else if (stats.minTime != minTime) { mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper);
stats.minTime = minTime; } else if (stats.minTime != minTime) {
mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper); stats.minTime = minTime;
mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper);
}
} }
} }
private void disableProvider(String name) { private void disableProvider(String name) {
ProviderStats stats = mStats.get(name); ProviderStats stats = mStats.get(name);
if (stats == null) return;
if (stats.requested) { if (stats.requested) {
stats.requested = false; stats.requested = false;
@@ -156,7 +154,7 @@ public class FusionEngine implements LocationListener {
} }
private void updateRequirements() { private void updateRequirements() {
if (mEnabled == false || mRequest == null) { if (!mEnabled || mRequest == null) {
mRequest = null; mRequest = null;
disableProvider(NETWORK); disableProvider(NETWORK);
disableProvider(GPS); disableProvider(GPS);
@@ -248,7 +246,7 @@ public class FusionEngine implements LocationListener {
mFusedLocation.setExtras(dstExtras); mFusedLocation.setExtras(dstExtras);
} }
dstExtras.putParcelable(LocationProviderBase.EXTRA_NO_GPS_LOCATION, dstExtras.putParcelable(LocationProviderBase.EXTRA_NO_GPS_LOCATION,
(Location) srcParcelable); srcParcelable);
} }
} }
} }
@@ -278,25 +276,15 @@ public class FusionEngine implements LocationListener {
/** Called on mLooper thread */ /** Called on mLooper thread */
@Override @Override
public void onProviderEnabled(String provider) { public void onProviderEnabled(String provider) { }
ProviderStats stats = mStats.get(provider);
if (stats == null) return;
stats.available = true;
}
/** Called on mLooper thread */ /** Called on mLooper thread */
@Override @Override
public void onProviderDisabled(String provider) { public void onProviderDisabled(String provider) { }
ProviderStats stats = mStats.get(provider);
if (stats == null) return;
stats.available = false;
}
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
StringBuilder s = new StringBuilder(); StringBuilder s = new StringBuilder();
s.append("mEnabled=" + mEnabled).append(' ').append(mRequest).append('\n'); s.append("mEnabled=").append(mEnabled).append(' ').append(mRequest).append('\n');
s.append("fused=").append(mFusedLocation).append('\n'); s.append("fused=").append(mFusedLocation).append('\n');
s.append(String.format("gps %s\n", mGpsLocation)); s.append(String.format("gps %s\n", mGpsLocation));
s.append(" ").append(mStats.get(GPS)).append('\n'); s.append(" ").append(mStats.get(GPS)).append('\n');