Recibir alertas de proximidad mediante límites geográficos

Puede utilizar la clase net.rim.device.api.location.Geofence para definir un perímetro alrededor de un área que desea que su aplicación supervise. Su aplicación recibe una alerta siempre que el usuario de un dispositivo BlackBerry entra en un área limitada geográficamente o la abandona. Mediante los límites geográficos, puede avisar a los usuarios cuando entren en un área de interés o enviarles información específica de su ubicación.

Cuando una aplicación invoque el método Geofence.monitorPerimeter(), el servidor de límite geográfico enviará alertas de proximidad a la aplicación siempre que el dispositivo entre en un área limitada geográficamente o la abandone. Cada uno de los objetos Geofence puede supervisar hasta 20 áreas simultáneamente.

Definir un área para supervisar

Puede definir un área para supervisar especificando las coordenadas geográficas de una ubicación y un radio alrededor de la ubicación, o puede especificar una serie de coordenadas que representen un polígono. Cuando especifique un conjunto de coordenadas que representen un polígono, debe asegurarse de que ninguna de las líneas se cruce, ya que esto podría provocar que el área limitada geográficamente no active los eventos correctamente. Cada coordenada de la matriz se une a la coordenada que la sigue con una línea recta. La última coordenada de la matriz se une a la primera.
// 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);
Cuando invoca monitorPerimeter(), debe pasar una referencia a la clase que implementa GeofenceListener como argumento. También debe especificar una etiqueta para el área, un búfer alrededor del área y la cantidad de tiempo que desea supervisar el área. Utilice la etiqueta para proporcionar una descripción única del área. Utilice el búfer para definir una distancia alrededor del perímetro en la que no se pueden producir notificaciones de límite geográfico, lo que puede ayudar a evitar que la aplicación transmita las notificaciones varias veces cuando el usuario entra en el perímetro y lo abandona repetidamente.
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);

Escuchar eventos de límite geográfico

Para recibir alertas de proximidad, implemente la interfaz GeofenceListener que contiene tres métodos: errorOccurred(), perimeterEntered() y perimeterExited(). Cuando se supervisa un área, la aplicación invoca uno de estos métodos cuando se produce el evento apropiado. Los métodos perimeterEntered() y perimeterExited() reciben como parámetros la etiqueta para la ubicación y un objeto BlackBerryLocation que representa dónde entra o sale el usuario. Puede utilizar esta información para describir el área en la que está entrando o centrar un mapa en la ubicación.
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 se invoca errorOccured() debido a un nivel bajo de la batería, o si los servicios de ubicación no están disponibles (error OUT_OF_SERVICE), la aplicación deja de recibir notificaciones.

Hacer que su aplicación deje de supervisar un área

Si necesita que su aplicación deje de supervisar un área, puede llamar a Geofence.removePerimeter(String tag).


¿Le ha resultado útil esta información? Envíenos sus comentarios.