지오펜싱을 사용한 근접 정보 알림 수신

net.rim.device.api.location.Geofence 클래스를 사용하여 프로그램이 모니터할 지역 주변의 영역을 정의할 수 있습니다. 프로그램은 BlackBerry 단말기 사용자가 지오펜스 영역에 들어가거나 나올 때마다 알림을 수신합니다. 지오펜싱을 사용하여 사용자가 관심 영역에 진입할 때 알림을 제공할 수 있거나 사용자의 현재 위치에 대한 세부 정보를 사용자에게 전송할 수 있습니다.

프로그램이 Geofence.monitorPerimeter() 메소드를 호출하면 단말기가 지오펜스 영역에 들어가거나 나올 때마다 지오펜싱 서버는 근접 정보 알림을 프로그램에 보냅니다. 각 Geofence 객체는 최대 20개의 영역을 동시에 모니터링할 수 있습니다.

모니터링할 영역 정의

위치의 지리적 좌표와 위치 둘레의 반경을 지정하여 모니터링할 영역을 정의하거나, 다각형을 나타내는 좌표를 지정할 수 있습니다. 다각형을 나타내는 일련의 좌표를 지정하는 경우 교차하는 선이 없도록 해야 합니다. 그렇지 않으면 지오펜스 영역이 이벤트를 올바르게 작동시키지 않을 수 있습니다. 배열의 각 좌표는 직선으로 다음 좌표에 연결됩니다. 배열의 마지막 좌표는 첫 번째 좌표에 연결됩니다.
// 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);
monitorPerimeter()를 호출할 때 GeofenceListener를 인수로 구현하는 클래스에 대한 참조를 전달해야 합니다. 또한, 영역에 대한 태그, 영역 주변의 버퍼, 그리고 영역을 모니터링할 시간 길이를 지정해야 할 수도 있습니다. 태그를 사용하여 해당 영역에 대한 고유 설명을 제공합니다. 버퍼를 사용하여 지오펜싱 알림이 발생할 수 없는 주변의 거리를 정의합니다. 이를 통해, 단말기 사용자가 반복적으로 해당 지역을 출입하는 경우 프로그램이 반복적으로 알림을 브로드캐스팅하지 않도록 할 수 있습니다.
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);

지오펜싱 이벤트 수신

근접 정보 알림을 수신하려면 GeofenceListener, errorOccurred(), 및 perimeterEntered() 의 세가지 메소드를 포함하는 perimeterExited() 인터페이스를 구현합니다. 영역을 모니터링하는 동안 프로그램은 해당 이벤트가 발생할 때 세 메소드 중 하나를 호출합니다. perimeterEntered()perimeterExited() 메소드는 위치에 대한 태그, 그리고 사용자가 들어가거나 나오는 곳을 나타내는 BlackBerryLocation 객체를 매개 변수로 수신합니다. 이 정보를 사용하여 들어 가고 있는 곳을 알려 주거나, 해당 위치를 지도 중앙에 오도록 조정할 수 있습니다.
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     
    }
}

배터리 전원 부족으로 인해 errorOccured()가 호출되거나 위치 서비스를 현재 사용할 수 없는 경우(OUT_OF_SERVICE 오류), 프로그램은 알림 수신을 중지합니다.

프로그램에서 영역 모니터링 중지

프로그램에서 영역 모니터링을 중지하려는 경우, Geofence.removePerimeter(String tag)를 호출할 수 있습니다.


이 정보가 도움이 되었습니까? 의견을 보내 주십시오.