Empfangen von Näherungsalarmen mit Geofencing

Sie können die net.rim.device.api.location.Geofence-Klasse verwenden, um einen Umkreis um ein Gebiet zu definieren, den Ihre Anwendung überwachen soll. Ihre Anwendung empfängt einen Alarm, wenn ein BlackBerry-Gerätebenutzer ein Geofencing-Gebiet betritt oder verlässt. Mithilfe von Geofencing können Sie Ihre Benutzer warnen, wenn sie ein Gebiet von Interesse betreten, oder Sie können ihnen Informationen senden, die für ihren Standort spezifisch sind.

Wenn eine Anwendung die Geofence.monitorPerimeter()-Methode aufruft, sendet der Geofencing-Server Näherungsalarme an die Anwendung, sobald das Gerät das Geofencing-Gebiet betritt oder verlässt. Jedes Geofence-Objekt kann bis zu 20 Gebiete gleichzeitig überwachen.

Definieren eines zu überwachenden Gebiets

Sie können durch die Angabe der geografischen Koordinaten eines Standorts und eines Radius um diesen ein Gebiet definieren, das überwacht werden soll, oder Sie können einen Satz von Koordinaten angeben, der ein Polygon darstellt. Wenn Sie einen Satz von Koordinaten angeben, der ein Polygon darstellt, müssen Sie sicherstellen, dass keine der Linien sich kreuzen, da sonst die Ereignisse für das Geofencing-Gebiet möglicherweise nicht richtig ausgelöst werden. Jede Koordinate im Array wird über eine Gerade mit der nachfolgenden Koordinate verbunden. Die letzte Koordinate im Array wird mit der ersten verbunden.
// 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);
Wenn Sie monitorPerimeter() aufrufen, müssen Sie einen Hinweis auf die Klasse einreichen, die GeofenceListener als Argument implementiert. Sie müssen auch eine Markierung für das Gebiet, einen Puffer um das Gebiet herum und die gewünschte Überwachungsdauer für das Gebiet festlegen. Verwenden Sie die Markierung, um eine eindeutige Beschreibung des Gebiets bereitzustellen. Verwenden Sie den Puffer, um eine Entfernung um den Umkreis herum zu definieren, innerhalb der keine Geofencing-Benachrichtigungen auftreten sollen. Dies kann dabei helfen zu verhindern, dass die Anwendung wiederholt Benachrichtigungen sendet, wenn ein Gerätebenutzer das Gebiet immer wieder verlässt und wieder betritt.
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);

Abfragen von Geofencing-Ereignissen

Um Näherungsalarme zu empfangen, implementieren Sie die GeofenceListener-Schnittstelle, die drei Methoden enthält: errorOccurred(), perimeterEntered() und perimeterExited(). Wenn ein Gebiet überwacht wird, ruft die Anwendung eine dieser Methoden auf, wenn das entsprechende Ereignis auftritt. Die Methoden perimeterEntered() und perimeterExited() empfangen als Parameter die Markierung für den Standort sowie ein BlackBerryLocation-Objekt, das angibt, wo der Benutzer das Gebiet betritt oder verlässt. Sie können diese Informationen verwenden, um das betretene Gebiet zu beschreiben oder eine Karte für den Standort zu zentrieren.
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     
    }
}

Wenn errorOccured() aufgrund eines niedrigen Akkustands aufgerufen wird oder die Dienste für die Standortbestimmung nicht verfügbar sind (OUT_OF_SERVICE-Fehler), erhält die Anwendung keine Benachrichtigungen mehr.

Beenden der Überwachung eines Gebiets durch Ihre Anwendung

Wenn Sie die Überwachung eines Gebiets durch Ihre Anwendung beenden müssen, können Sie Geofence.removePerimeter(String tag) aufrufen.


Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.