Une barrière définit une ou plusieurs conditions de contexte auxquelles votre application peut réagir. Lorsque l'état d'une limite change, votre application reçoit un rappel.
Il existe deux types de barrières : les barrières primitives, qui représentent l'ensemble de base des signaux de contexte, et les barrières combinées, qui combinent plusieurs barrières primitives à l'aide d'opérateurs booléens. Toutes les délimitations sont des instances de AwarenessFence.
Créer une délimitation primitive
Les barrières primitives, qui représentent l'ensemble de base des signaux de contexte, sont définies dans le package awareness.fence. L'exemple suivant montre la création d'une délimitation simple qui est TRUE lorsque l'activité détectée de 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éé par un appel à during, ce qui signifie que la délimitation est à l'état TRUE chaque fois que l'utilisateur est WALKING.
Réagir aux transitions
Chaque type de délimitation primitive, à l'exception de TimeFence, peut également être déclenché momentanément lors de la transition de l'état du contexte. Par exemple, vous pouvez définir un DetectedActivityFence pour qu'il se déclenche momentanément lorsqu'un utilisateur starting ou stopping une activité. Les limites de transition sont à l'état TRUE pendant quelques secondes avant de repasser à l'état FALSE.
Créer une zone de géorepérage combinée
Les délimitations combinées associent plusieurs types de délimitations primitives à l'aide d'opérateurs booléens. L'exemple suivant montre la création d'une combinaison de délimitation qui s'active lorsque l'utilisateur marche et que les écouteurs sont branchés :
// 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 sont valides. Par conséquent, toute combinaison booléenne de délimitations est possible. L'exemple suivant montre une délimitation géographique qui se déclenche lorsqu'un utilisateur se déplace de plus de 100 mètres par rapport à sa position actuelle ou lorsqu'une heure s'est écoulée depuis l'heure actuelle.
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 délimitation