Entwicklungshandbuch

Local Navigation

Ändern der Kriterien für das Empfangen von Standortinformationen

Sie können eine Instanz der LocationProvider-Klasse verwenden, um automatisch die Kriterien zu ändern, die zum Erfassen des Standorts eines BlackBerry-Geräts verwendet werden.

  1. Importieren Sie die erforderlichen Klassen und die erforderliche Schnittstelle.
    import net.rim.device.api.gps.GPSInfo;
    import javax.microedition.location.*;
  2. Erstellen Sie eine Klasse und einen Konstruktor.
    public class handleGPS
    {
       public handleGPS(int gpsMode)
       {
       }
    }
  3. Definieren Sie in der Klasse statische Felder für den Standortanbieter, die Breite, Länge, Höhe, Geschwindigkeit und den Kurs.
    static LocationProvider locationProvider;
    static double lat, lon;
    static float  alt, spd, crs;
  4. Fügen Sie im Konstruktor einen Codeblock hinzu, um eine LocationProvider-Instanz für den Wechsel zu einer anderen Standorterfassungsmethode einzurichten. Rufen Sie reset() für das LocationProvider-Objekt auf, und legen Sie dann den Standort-Listener auf null fest, um den Listener zu deaktivieren.
    if (locationProvider != null)
    {
        locationProvider.reset();
        locationProvider.setLocationListener(null, -1, -1, -1);
    }
  5. Erstellen und konfigurieren Sie im Konstruktor ein Criteria-Objekt auf der Basis des GPS-Modus, der als Parameter an den Konstruktor übergeben wird.
    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. Erstellen Sie im Konstruktor einen try/catch-Block. Erstellen Sie in diesem Block eine Instanz der LocationListener-Klasse, indem Sie getInstance() aufrufen und das Criteria-Objekt als Parameter übergeben. Geben Sie einen Standort-Listener für die Verarbeitung der GPS-Positionsaktualisierungen an.
    try
    {
       locationProvider = LocationProvider.getInstance(myCriteria);
       if (locationProvider != null)
       {
          locationProvider.setLocationListener
            (new myLocationListener(), -1, -1, -1);
       }
    }
    catch (Exception err)
    {}
  7. Erstellen Sie in der Klasse eine private statische Klasse, die die LocationListener-Schnittstelle implementiert. Rufen Sie die aktuellen Standortinformationen in der locationUpdated()-Methode ab. Erstellen Sie eine grundlegende Implementierung der providerStateChanged()-Methode, um den LocationProvider-Zustand zu überwachen.
    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)
       {}
    }

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.