Réception d'alertes de proximité par geofencing

Vous pouvez utiliser la classe net.rim.device.api.location.Geofence pour définir un périmètre autour d'une zone devant être surveillée par votre application. Votre application reçoit une alerte quand un utilisateur de terminal BlackBerry entre ou sort d'une zone protégée par geofencing. Le geofencing vous permet d'alerter vos utilisateurs lorsqu'ils entrent dans une zone de type point d'intérêt. Vous pouvez aussi leur envoyer des informations en rapport avec leur position.

Lorsqu'une application appelle la méthode Geofence.monitorPerimeter(), le serveur de geofencing envoie les alertes de proximité à l'application quand le terminal entre ou sort de la zone protégée par geofencing. Chaque objet Geofence peut contrôler jusqu'à 20 zones simultanément.

Définition d'une zone à surveiller

Vous pouvez définir une zone à surveiller en indiquant les coordonnées géographiques d'une position et un rayon autour de cette position ou en indiquant un ensemble de coordonnées représentant un polygone. Lorsque vous indiquez un ensemble de coordonnées représentant un polygone, vous devez vous assurer que les lignes ne s'entrecoupent pas, car la zone protégée par geofencing pourrait déclencher des événements erratiques. Chaque coordonnée dans le tableau est associée à la coordonnée suivante par une ligne droite. La dernière coordonnée du tableau est liée à la première.
// Single Coordinates object, to be used along with a radius
Coordinates coords = new Coordinates(43.2750, -80.3318, 0);
// Array of three Coordinates objects, representing a three-sided polygon
Coordinates[] coords2 = new Coordinates[3];
coords2[0] = new Coordinates(43.2851, -80.3229, 0);
coords2[1] = new Coordinates(43.2945, -80.3220, 0);
coords2[2] = new Coordinates(43.2852, -80.3199, 0);
Lorsque vous appelez monitorPerimeter(), vous devez transmettre une référence à la classe qui met en œuvre GeofenceListener comme argument. Vous devez également indiquer une balise pour la zone, un tampon autour de la zone et la durée pendant laquelle la zone est surveillée. Utilisez la balise pour fournir une description unique de la zone. Utilisez le tampon pour définir une distance autour du périmètre à partir de laquelle les notifications de geofencing ne sont plus actives, et ce afin que l'application ne diffuse plus de notifications à maintes reprises lorsqu'un utilisateur de terminal sort de la zone et y rentre plusieurs fois de suite.
GFListener gfListener = new GFListener();
Geofence geofence = new Geofence();
// Starts monitoring the area defined by the coordinate and a radius
geofence.monitorPerimeter(gfListener, "RIM 12", coords, 500, 50, -1);
// Starts monitoring the area defined by the set of coordinates
geofence.monitorPerimeter(gfListener, "RIM campus", coords2, 50, -1);

Écoute des événements de geofencing

Pour recevoir des alertes de proximité, mettez en œuvre l'interface GeofenceListener, qui contient trois méthodes : errorOccurred(), perimeterEntered() et perimeterExited(). Lorsqu'une zone est surveillée, l'application appelle l'une de ces méthodes lorsque l'événement approprié survient. Les méthodes perimeterEntered() et perimeterExited() reçoivent en tant que paramètres la balise de la position et un objet BlackBerryLocation qui représente l'endroit où l'utilisateur entre ou sort. Vous pouvez utiliser ces informations pour décrire la zone d'entrée ou pour centrer la carte sur la position.
private class GFListener implements GeofenceListener
{
    public void perimeterEntered(String tag, BlackBerryLocation location)
    {
        // Code that runs when a user enters the perimeter      
    }
    public void errorOccurred(int errorCode)
    {
        // Code that runs when an error occurs
    }
    public void perimeterExited(String tag, BlackBerryLocation location)
    {
        // Code that runs when a user leaves the perimeter     
    }
}

Si la méthode errorOccured() est appelée du fait du niveau faible de la batterie ou si les services de positionnement sont indisponibles (erreur OUT_OF_SERVICE), l'application ne reçoit plus de notification.

Désactivation sur l'application de l'écoute d'une zone

Si votre application ne doit plus surveiller une zone, vous pouvez appeler Geofence.removePerimeter(String tag).


Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.