Entwicklungshandbuch

Local Navigation

Abrufen von Satelliteninformationen mithilfe der BlackBerryLocation-Klasse

Sie können eine GPS-Positionsbestimmung anfordern und dann die aktuelle Anzahl der sichtbaren Satelliten und der erfassten Satelliten, die durchschnittliche Satellitensignalqualität, die GPS-Datenquelle (internes oder externes GPS) und den GPS-Modus abrufen.

  1. Importieren Sie die erforderlichen Klassen.
    import java.util.*;
    import java.lang.*;
    import net.rim.device.api.gps.*;
  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 int satCount;
    static int signalQuality;
    static int dataSource;
    static int gpsMode;
  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 und eine run()-Methode erweitert.
    private static class GPSThread extends Thread
    {
        public void run()
        {
        }
    }
  6. Erstellen Sie in run() einen try/catch-Block. Erstellen Sie in diesem Block eine Instanz der BlackBerryCriteria-Klasse, die den GPS-Modus festlegt. Erstellen Sie einen zweiten try/catch-Block. Erstellen Sie in diesem Block eine Instanz der BlackBerryLocationProvider-Klasse, indem Sie eine Instanz des BlackBerryCriteria-Objekts abrufen.
    try
    {
        BlackBerryCriteria myCriteria = new BlackBerryCriteria(GPSInfo.GPS_MODE_AUTONOMOUS);
        try
        {
            BlackBerryLocationProvider myProvider =
                (BlackBerryLocationProvider)LocationProvider.getInstance(myCriteria);
    
  7. Erstellen Sie einen dritten try/catch-Block, der sich im ersten try/catch-Block befindet. Erstellen Sie ein BlackBerryLocation-Objekt zum Abrufen der GPS-Positionsdaten einschließlich eines Timeout-Ablaufs von 300 Sekunden. Füllen Sie die Felder auf, und extrahieren Sie die Satelliteninformationen in ein StringBuffer-Objekt.
    try
    {
        BlackBerryLocation myLocation =
            (BlackBerryLocation)myProvider.getLocation(300);
        satCount= myLocation.getSatelliteCount();
        signalQuality = myLocation.getAverageSatelliteSignalQuality();
        dataSource = myLocation.getDataSource();
        gpsMode = myLocation.getGPSMode();
        SatelliteInfo si;
        StringBuffer sb = new StringBuffer("[Id:SQ:E:A]\n");
        String separator = ":";
        for (Enumeration e = myLocation.getSatelliteInfo();
            e!=null && e.hasMoreElements(); )
        {
            si = (SatelliteInfo)e.nextElement();
            sb.append(si.getId() + separator);
            sb.append(si.getSignalQuality() + separator);
            sb.append(si.getElevation() + separator);
            sb.append(si.getAzimuth());
            sb.append('\n');
        }
    }
    catch ( InterruptedException iex )
    {}
    catch ( LocationException lex )
    {}

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.