1 /*
2  * Copyright (C) 2013, The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/license/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.location;
18 
19 import android.hardware.location.GeofenceHardwareRequestParcelable;
20 
21 /**
22  * Fused Geofence Hardware interface.
23  *
24  * <p>This interface is the basic set of supported functionality by Fused Hardware modules that offer
25  * Geofencing capabilities.
26  *
27  * All operations are asynchronous and the status codes can be obtained via a set of callbacks.
28  *
29  * @hide
30  */
31 interface IFusedGeofenceHardware {
32     /**
33      * Flags if the interface functionality is supported by the platform.
34      *
35      * @return true if the functionality is supported, false otherwise.
36      */
isSupported()37     boolean isSupported();
38 
39     /**
40      * Adds a given list of geofences to the system.
41      *
42      * @param geofenceRequestsArray    The list of geofences to add.
43      */
addGeofences(in GeofenceHardwareRequestParcelable[] geofenceRequestsArray)44     void addGeofences(in GeofenceHardwareRequestParcelable[] geofenceRequestsArray);
45 
46     /**
47      * Removes a give list of geofences from the system.
48      *
49      * @param geofences     The list of geofences to remove.
50      */
removeGeofences(in int[] geofenceIds)51     void removeGeofences(in int[] geofenceIds);
52 
53     /**
54      * Pauses monitoring a particular geofence.
55      *
56      * @param geofenceId    The geofence to pause monitoring.
57      */
pauseMonitoringGeofence(in int geofenceId)58     void pauseMonitoringGeofence(in int geofenceId);
59 
60     /**
61      * Resumes monitoring a particular geofence.
62      *
63      * @param geofenceid            The geofence to resume monitoring.
64      * @param transitionsToMonitor  The transitions to monitor upon resume.
65      *
66      * Remarks: keep naming of geofence request options consistent with the naming used in
67      *          GeofenceHardwareRequest
68      */
resumeMonitoringGeofence(in int geofenceId, in int monitorTransitions)69     void resumeMonitoringGeofence(in int geofenceId, in int monitorTransitions);
70 
71     /**
72      * Modifies the request options if a geofence that is already known by the
73      * system.
74      *
75      * @param geofenceId                    The geofence to modify.
76      * @param lastTransition                The last known transition state of
77      *                                      the geofence.
78      * @param monitorTransitions            The set of transitions to monitor.
79      * @param notificationResponsiveness    The notification responsivness needed.
80      * @param unknownTimer                  The time span associated with the.
81      * @param sourcesToUse                  The source technologies to use.
82      *
83      * Remarks: keep the options as separate fields to be able to leverage the class
84      * GeofenceHardwareRequest without any changes
85      */
modifyGeofenceOptions( in int geofenceId, in int lastTransition, in int monitorTransitions, in int notificationResponsiveness, in int unknownTimer, in int sourcesToUse)86     void modifyGeofenceOptions(
87             in int geofenceId,
88             in int lastTransition,
89             in int monitorTransitions,
90             in int notificationResponsiveness,
91             in int unknownTimer,
92             in int sourcesToUse);
93 }
94