package io.nlopez.smartlocation.location.config; /** * Created by mrm on 2/1/15. */ public class LocationParams { // Defaults public static final LocationParams NAVIGATION = new Builder().setAccuracy(LocationAccuracy.HIGH).setDistance(0).setInterval(500).build(); public static final LocationParams BEST_EFFORT = new Builder().setAccuracy(LocationAccuracy.MEDIUM).setDistance(150).setInterval(2500).build(); public static final LocationParams LAZY = new Builder().setAccuracy(LocationAccuracy.LOW).setDistance(500).setInterval(5000).build(); private long interval; private float distance; private LocationAccuracy accuracy; LocationParams(LocationAccuracy accuracy, long interval, float distance) { this.interval = interval; this.distance = distance; this.accuracy = accuracy; } public long getInterval() { return interval; } public float getDistance() { return distance; } public LocationAccuracy getAccuracy() { return accuracy; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof LocationParams)) return false; LocationParams that = (LocationParams) o; return Float.compare(that.distance, distance) == 0 && interval == that.interval && accuracy == that.accuracy; } @Override public int hashCode() { int result = (int) (interval ^ (interval >>> 32)); result = 31 * result + (distance != +0.0f ? Float.floatToIntBits(distance) : 0); result = 31 * result + accuracy.hashCode(); return result; } public static class Builder { private LocationAccuracy accuracy; private long interval; private float distance; public Builder setAccuracy(LocationAccuracy accuracy) { this.accuracy = accuracy; return this; } public Builder setInterval(long interval) { this.interval = interval; return this; } public Builder setDistance(float distance) { this.distance = distance; return this; } public LocationParams build() { return new LocationParams(accuracy, interval, distance); } } }