191 lines
6.1 KiB
Java
191 lines
6.1 KiB
Java
/*
|
|
* Copyright (C) 2013 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.hardware.location;
|
|
|
|
import android.annotation.SystemApi;
|
|
|
|
/**
|
|
* This class represents the characteristics of the geofence.
|
|
*
|
|
* <p> Use this in conjunction with {@link GeofenceHardware} APIs.
|
|
*
|
|
* @hide
|
|
*/
|
|
@SystemApi
|
|
public final class GeofenceHardwareRequest {
|
|
static final int GEOFENCE_TYPE_CIRCLE = 0;
|
|
private int mType;
|
|
private double mLatitude;
|
|
private double mLongitude;
|
|
private double mRadius;
|
|
private int mLastTransition = GeofenceHardware.GEOFENCE_UNCERTAIN;
|
|
private int mUnknownTimer = 30000; // 30 secs
|
|
private int mMonitorTransitions = GeofenceHardware.GEOFENCE_UNCERTAIN |
|
|
GeofenceHardware.GEOFENCE_ENTERED | GeofenceHardware.GEOFENCE_EXITED;
|
|
private int mNotificationResponsiveness = 5000; // 5 secs
|
|
private int mSourceTechnologies = GeofenceHardware.SOURCE_TECHNOLOGY_GNSS;
|
|
|
|
private void setCircularGeofence(double latitude, double longitude, double radius) {
|
|
mLatitude = latitude;
|
|
mLongitude = longitude;
|
|
mRadius = radius;
|
|
mType = GEOFENCE_TYPE_CIRCLE;
|
|
}
|
|
|
|
/**
|
|
* Create a circular geofence.
|
|
*
|
|
* @param latitude Latitude of the geofence
|
|
* @param longitude Longitude of the geofence
|
|
* @param radius Radius of the geofence (in meters)
|
|
*/
|
|
public static GeofenceHardwareRequest createCircularGeofence(double latitude,
|
|
double longitude, double radius) {
|
|
GeofenceHardwareRequest geofenceRequest = new GeofenceHardwareRequest();
|
|
geofenceRequest.setCircularGeofence(latitude, longitude, radius);
|
|
return geofenceRequest;
|
|
}
|
|
|
|
/**
|
|
* Set the last known transition of the geofence.
|
|
*
|
|
* @param lastTransition The current state of the geofence. Can be one of
|
|
* {@link GeofenceHardware#GEOFENCE_ENTERED}, {@link GeofenceHardware#GEOFENCE_EXITED},
|
|
* {@link GeofenceHardware#GEOFENCE_UNCERTAIN}.
|
|
*/
|
|
public void setLastTransition(int lastTransition) {
|
|
mLastTransition = lastTransition;
|
|
}
|
|
|
|
/**
|
|
* Set the unknown timer for this geofence.
|
|
*
|
|
* @param unknownTimer The time limit after which the
|
|
* {@link GeofenceHardware#GEOFENCE_UNCERTAIN} transition
|
|
* should be triggered. This paramter is defined in milliseconds.
|
|
*/
|
|
public void setUnknownTimer(int unknownTimer) {
|
|
mUnknownTimer = unknownTimer;
|
|
}
|
|
|
|
/**
|
|
* Set the transitions to be monitored.
|
|
*
|
|
* @param monitorTransitions Bitwise OR of {@link GeofenceHardware#GEOFENCE_ENTERED},
|
|
* {@link GeofenceHardware#GEOFENCE_EXITED}, {@link GeofenceHardware#GEOFENCE_UNCERTAIN}
|
|
*/
|
|
public void setMonitorTransitions(int monitorTransitions) {
|
|
mMonitorTransitions = monitorTransitions;
|
|
}
|
|
|
|
/**
|
|
* Set the notification responsiveness of the geofence.
|
|
*
|
|
* @param notificationResponsiveness (milliseconds) Defines the best-effort description
|
|
* of how soon should the callback be called when the transition
|
|
* associated with the Geofence is triggered. For instance, if
|
|
* set to 1000 millseconds with {@link GeofenceHardware#GEOFENCE_ENTERED},
|
|
* the callback will be called 1000 milliseconds within entering
|
|
* the geofence.
|
|
*/
|
|
public void setNotificationResponsiveness(int notificationResponsiveness) {
|
|
mNotificationResponsiveness = notificationResponsiveness;
|
|
}
|
|
|
|
/**
|
|
* Set the source technologies to use while tracking the geofence.
|
|
* The value is the bit-wise of one or several source fields defined in
|
|
* {@link GeofenceHardware}.
|
|
*
|
|
* @param sourceTechnologies The set of source technologies to use.
|
|
*/
|
|
public void setSourceTechnologies(int sourceTechnologies) {
|
|
int sourceTechnologiesAll = GeofenceHardware.SOURCE_TECHNOLOGY_GNSS
|
|
| GeofenceHardware.SOURCE_TECHNOLOGY_WIFI
|
|
| GeofenceHardware.SOURCE_TECHNOLOGY_SENSORS
|
|
| GeofenceHardware.SOURCE_TECHNOLOGY_CELL
|
|
| GeofenceHardware.SOURCE_TECHNOLOGY_BLUETOOTH;
|
|
|
|
int sanitizedSourceTechnologies = (sourceTechnologies & sourceTechnologiesAll);
|
|
if (sanitizedSourceTechnologies == 0) {
|
|
throw new IllegalArgumentException("At least one valid source technology must be set.");
|
|
}
|
|
|
|
mSourceTechnologies = sanitizedSourceTechnologies;
|
|
}
|
|
|
|
/**
|
|
* Returns the latitude of this geofence.
|
|
*/
|
|
public double getLatitude() {
|
|
return mLatitude;
|
|
}
|
|
|
|
/**
|
|
* Returns the longitude of this geofence.
|
|
*/
|
|
public double getLongitude() {
|
|
return mLongitude;
|
|
}
|
|
|
|
/**
|
|
* Returns the radius of this geofence.
|
|
*/
|
|
public double getRadius() {
|
|
return mRadius;
|
|
}
|
|
|
|
/**
|
|
* Returns transitions monitored for this geofence.
|
|
*/
|
|
public int getMonitorTransitions() {
|
|
return mMonitorTransitions;
|
|
}
|
|
|
|
/**
|
|
* Returns the unknownTimer of this geofence.
|
|
*/
|
|
public int getUnknownTimer() {
|
|
return mUnknownTimer;
|
|
}
|
|
|
|
/**
|
|
* Returns the notification responsiveness of this geofence.
|
|
*/
|
|
public int getNotificationResponsiveness() {
|
|
return mNotificationResponsiveness;
|
|
}
|
|
|
|
/**
|
|
* Returns the last transition of this geofence.
|
|
*/
|
|
public int getLastTransition() {
|
|
return mLastTransition;
|
|
}
|
|
|
|
/**
|
|
* Returns the source technologies to track this geofence.
|
|
*/
|
|
public int getSourceTechnologies() {
|
|
return mSourceTechnologies;
|
|
}
|
|
|
|
int getType() {
|
|
return mType;
|
|
}
|
|
}
|