Une clôture définit une ou plusieurs conditions de contexte auxquelles votre application peut réagir. Lorsque l'état d'une clôture change, votre application reçoit un rappel.
Il existe deux types de clôtures: les clôtures primitives, qui représentent l'ensemble de base des signaux de contexte, et les barrières, qui combinent plusieurs périmètres primitifs avec l'utilisation d'opérateurs booléens. Toutes les clôtures sont des instances de AwarenessFence
.
Créer une clôture primitive
Les clôtures primitives, qui représentent l'ensemble de base des signaux de contexte, sont définies dans le package awareness.fence
. L'exemple suivant montre comment créer une clôture simple, TRUE
lorsque l'activité détectée par l'utilisateur est WALKING
et FALSE
dans le cas contraire:
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
Dans l'exemple précédent, DetectedActivityFence
a été créée par un appel à during
, ce qui signifie que la clôture est à l'état TRUE
chaque fois que l'utilisateur est WALKING
.
Réagir aux transitions
Chaque type de clôture primitif, à l'exception de TimeFence
, peut également être déclenché temporairement lors de la transition de l'état du contexte. Par exemple, vous pouvez définir un élément DetectedActivityFence
pour qu'il se déclenche temporairement lorsqu'un utilisateur est une activité starting
ou stopping
. Les barrières de transition sont à l'état TRUE
pendant quelques secondes avant de revenir à FALSE
.
Créer une clôture
Les cloisons de combinaison combinent plusieurs types de clôtures primitifs avec l'utilisation d'opérateurs booléens. L'exemple suivant montre comment créer une clôture combinée qui s'active lorsque l'utilisateur marche et que le casque est branché:
// Create the primitive fences.
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
AwarenessFence headphoneFence = HeadphoneFence.during(HeadphoneState.PLUGGED_IN);
// Create a combination fence to AND primitive fences.
AwarenessFence walkingWithHeadphones = AwarenessFence.and(
walkingFence, headphoneFence
);
Les arborescences imbriquées de AND
, OR
et NOT
étant valides, toutes les combinaisons booléennes de clôtures sont possibles L'exemple suivant montre une clôture déclenchée lorsqu'un utilisateur se déplace de plus de 100 mètres de la position actuelle ou plus d'une heure s'est écoulée depuis cette heure.
double currentLocationLat; // current location latitude
double currentLocationLng; // current location longitude
long nowMillis = System.currentTimeMillis();
long oneHourMillis = 1L * 60L * 60L * 1000L;
AwarenessFence orExample = AwarenessFence.or(
AwarenessFence.not(LocationFence.in(
currentLocationLat,
currentLocationLng,
100.0,
100.0,
0L)),
TimeFence.inInterval(nowMillis + oneHourMillis, Long.MAX_VALUE));
Étape suivante: Enregistrer une clôture