Entwicklungshandbuch

Local Navigation

Abrufen von Standortinformationen mithilfe der Location-Klasse

Sie können eine GPS-Positionsbestimmung anfordern und dann den Breiten- und Längengrad, die Geschwindigkeit, den Kurs, den Zeitstempel und die Anzahl der vom BlackBerry-Gerät erfassten Satelliten abrufen.

  1. Importieren Sie die erforderlichen Klassen.
    import javax.microedition.location.*;
  2. Erstellen Sie eine Klasse und einen Konstruktor.
    public class handleGPS
    {
        public handleGPS()
        {
        }
    }
  3. Deklarieren Sie in der Klasse statische Felder für einen Thread und für jedes Element der Standortinformationen, das Sie abrufen.
    static GPSThread gpsThread;
    static double latitude;
    static double longitude;
    static float  heading;
    static float  velocity;
    static long   timeStamp;
    static String nmeaString;
  4. Erstellen und starten Sie im Konstruktor einen Thread.
    gpsThread = new GPSThread();
    gpsThread.start();
  5. Erstellen Sie in der Klasse eine private statische Klasse, die Thread erweitert, und eine run()-Methode.
    private static class GPSThread extends Thread
    {
       public void run()
       {
       }
    }
  6. Erstellen Sie in run() eine Instanz der Criteria-Klasse. Rufen Sie setCostAllowed(false) auf, um den autonomen Modus festzulegen.
    Criteria myCriteria = new Criteria();
    myCriteria.setCostAllowed(false);
  7. Erstellen Sie in run() einen try/catch-Block. Erstellen Sie in diesem Block eine Instanz der LocationProvider-Klasse, indem Sie eine Instanz des Criteria-Objekts abrufen. Erstellen Sie innerhalb dieses Blocks einen try/catch-Block, und erstellen Sie dann eine Instanz der Location-Klasse zum Abrufen der aktuellen GPS-Positionsdaten einschließlich eines Timeout-Ablaufs von 300 Sekunden. Füllen Sie die Felder auf, und legen Sie durch Aufrufen von getExtraInfo("application/X-jsr179-location-nmea") die Anzahl der Satelliten fest.
    try
    {
       LocationProvider myLocationProvider =
          LocationProvider.getInstance(myCriteria);
       try
       {
          Location myLocation = myLocationProvider.getLocation(300);
          latitude   = myLocation.getQualifiedCoordinates().getLatitude();
          longitude  = myLocation.getQualifiedCoordinates().getLongitude();
          velocity   = myLocation.getSpeed();
          heading    = myLocation.getCourse();
          timeStamp  = myLocation.getTimestamp();
          nmeaString = myLocation.getExtraInfo
             ("application/X-jsr179-location-nmea");
       }
       catch ( InterruptedException iex )
       {}
       catch ( LocationException lex )
       {}
    }
    catch ( LocationException lex )
    {}
    return;

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.