FileDocCategorySizeDatePackage
Geofence.javaAPI DocAndroid 5.1 API5447Thu Mar 12 22:22:30 GMT 2015android.location

Geofence

public final class Geofence extends Object implements android.os.Parcelable
Represents a geographical boundary, also known as a geofence.

Currently only circular geofences are supported and they do not support altitude changes.

hide

Fields Summary
public static final int
TYPE_HORIZONTAL_CIRCLE
private final int
mType
private final double
mLatitude
private final double
mLongitude
private final float
mRadius
public static final Parcelable.Creator
CREATOR
Constructors Summary
private Geofence(double latitude, double longitude, float radius)

        checkRadius(radius);
        checkLatLong(latitude, longitude);
        mType = TYPE_HORIZONTAL_CIRCLE;
        mLatitude = latitude;
        mLongitude = longitude;
        mRadius = radius;
    
Methods Summary
private static voidcheckLatLong(double latitude, double longitude)

        if (latitude > 90.0 || latitude < -90.0) {
            throw new IllegalArgumentException("invalid latitude: " + latitude);
        }
        if (longitude > 180.0 || longitude < -180.0) {
            throw new IllegalArgumentException("invalid longitude: " + longitude);
        }
    
private static voidcheckRadius(float radius)

        if (radius <= 0) {
            throw new IllegalArgumentException("invalid radius: " + radius);
        }
    
private static voidcheckType(int type)

        if (type != TYPE_HORIZONTAL_CIRCLE) {
            throw new IllegalArgumentException("invalid type: " + type);
        }
    
public static android.location.GeofencecreateCircle(double latitude, double longitude, float radius)
Create a circular geofence (on a flat, horizontal plane).

param
latitude latitude in degrees, between -90 and +90 inclusive
param
longitude longitude in degrees, between -180 and +180 inclusive
param
radius radius in meters
return
a new geofence
throws
IllegalArgumentException if any parameters are out of range


                                                        
             
        return new Geofence(latitude, longitude, radius);
    
public intdescribeContents()


    
       
        return 0;
    
public booleanequals(java.lang.Object obj)
Two geofences are equal if they have identical properties.

        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (!(obj instanceof Geofence))
            return false;
        Geofence other = (Geofence) obj;
        if (mRadius != other.mRadius)
            return false;
        if (mLatitude != other.mLatitude)
            return false;
        if (mLongitude != other.mLongitude)
            return false;
        if (mType != other.mType)
            return false;
        return true;
    
public doublegetLatitude()

hide

        return mLatitude;
    
public doublegetLongitude()

hide

        return mLongitude;
    
public floatgetRadius()

hide

        return mRadius;
    
public intgetType()

hide

        return mType;
    
public inthashCode()

        final int prime = 31;
        int result = 1;
        long temp;
        temp = Double.doubleToLongBits(mLatitude);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(mLongitude);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        result = prime * result + Float.floatToIntBits(mRadius);
        result = prime * result + mType;
        return result;
    
public java.lang.StringtoString()

        return String.format("Geofence[%s %.6f, %.6f %.0fm]",
                typeToString(mType), mLatitude, mLongitude, mRadius);
    
private static java.lang.StringtypeToString(int type)

        switch (type) {
            case TYPE_HORIZONTAL_CIRCLE:
                return "CIRCLE";
            default:
                checkType(type);
                return null;
        }
    
public voidwriteToParcel(android.os.Parcel parcel, int flags)

        parcel.writeInt(mType);
        parcel.writeDouble(mLatitude);
        parcel.writeDouble(mLongitude);
        parcel.writeFloat(mRadius);