Créer une clôture

Une limite géographique définit une ou plusieurs conditions de contexte auxquelles votre application peut réagir. Lorsque l'état d'une limite géographique change, votre application reçoit un rappel.

Il existe deux types de limites géographiques : les limites géographiques primitives, qui représentent l'ensemble de base des signaux de contexte, et les limites géographiques combinées, qui combinent plusieurs limites géographiques primitives à l'aide d'opérateurs booléens. Toutes les limites géographiques sont des instances de AwarenessFence.

Créer une limite géographique primitive

Les limites géographiques primitives, qui représentent l'ensemble de base des signaux de contexte, sont définies dans le awareness.fence package. L'exemple suivant montre la création d'une limite géographique 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, la DetectedActivityFence a été créée par un appel à during, ce qui signifie que la limite géographique est à l'état TRUE chaque fois que l'utilisateur est WALKING.

Réagir aux transitions

Chaque type de limite géographique primitive, à l'exception de TimeFence, peut également être déclenché momentanément lorsque l'état du contexte change. Par exemple, vous pouvez définir un DetectedActivityFence pour qu'il se déclenche momentanément lorsqu'un utilisateur est starting ou stopping une activité. Les limites géographiques de transition sont à l'état TRUE pendant quelques secondes avant de redevenir FALSE.

Créer une limite géographique combinée

Les limites géographiques combinées combinent plusieurs types de limites géographiques primitives à l'aide d'opérateurs booléens. L'exemple suivant montre la création d'une limite géographique combinée 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. Toute combinaison booléenne de limites géographiques est donc possible. L'exemple suivant montre une limite géographique qui est déclenchée lorsqu'un utilisateur s'éloigne de plus de 100 mètres de l'emplacement actuel ou qu'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 limite géographique.