개발 가이드

Local Navigation

위치 정보 수신을 위한 기준 변경

LocationProvider 클래스의 인스턴스를 사용하여 BlackBerry 단말기의 위치를 추적하는 데 사용되는 기준을 자동으로 변경할 수 있습니다.

  1. 필요한 클래스와 인터페이스를 가져옵니다.
    import net.rim.device.api.gps.GPSInfo;
    import javax.microedition.location.*;
  2. 클래스와 생성자를 만듭니다.
    public class handleGPS
    {
       public handleGPS(int gpsMode)
       {
       }
    }
  3. 클래스에서 위치 공급자, 위도, 경도, 고도, 속도 및 진로에 대한 static 필드를 정의합니다.
    static LocationProvider locationProvider;
    static double lat, lon;
    static float  alt, spd, crs;
  4. 생성자에서 다른 위치 추적 방법으로 전환하도록 LocationProvider 인스턴스를 설정하는 코드 블록을 추가합니다. LocationProvider 객체에서 reset()을 호출한 다음, 위치 수신기를 null로 설정하여 수신기를 비활성화합니다.
    if (locationProvider != null)
    {
        locationProvider.reset();
        locationProvider.setLocationListener(null, -1, -1, -1);
    }
  5. 생성자에서 생성자에 매개 변수로 전달된 GPS 모드를 기반으로 Criteria 객체를 만들고 구성합니다.
    Criteria myCriteria = new Criteria();
    myCriteria.setPreferredResponseTime(Criteria.NO_REQUIREMENT);
    myCriteria.setCostAllowed(true);
    if ( gpsMode == GPSInfo.GPS_MODE_AUTONOMOUS )
    {
        myCriteria.setCostAllowed(false);
    }
    else if ( gpsMode == GPSInfo.GPS_MODE_ASSIST )
    {
        myCriteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_MEDIUM);
    }
    else
    {
        myCriteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
    }
  6. 생성자에서 try/catch 블록을 만듭니다. 이 블록에서 getInstance()를 호출하고 Criteria 객체를 매개 변수로 전달하여 LocationListener 클래스의 인스턴스를 만듭니다. 위치 수신기를 지정하여 GPS 위치 업데이트를 처리합니다.
    try
    {
       locationProvider = LocationProvider.getInstance(myCriteria);
       if (locationProvider != null)
       {
          locationProvider.setLocationListener
            (new myLocationListener(), -1, -1, -1);
       }
    }
    catch (Exception err)
    {}
  7. 클래스에서 LocationListener 인터페이스를 구현하는 private static 클래스를 만듭니다. locationUpdated() 메소드에서 현재 위치 정보를 검색합니다. providerStateChanged() 메소드의 기본 구현을 만들어 LocationProvider 상태를 모니터링합니다.
    private static class myLocationListener implements LocationListener
    {
       public void locationUpdated(LocationProvider provider, Location location)
       {
          lat = location.getQualifiedCoordinates().getLatitude();
          lon = location.getQualifiedCoordinates().getLongitude();
          alt = location.getQualifiedCoordinates().getAltitude();
          spd = location.getSpeed();
          crs = location.getCourse();
       }
       public void providerStateChanged(LocationProvider provider, int newState)
       {}
    }

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