Entwicklungshandbuch

Local Navigation

Behandeln von Fehlern (BlackBerry-Erweiterungen für JSR 179)

Sie können den Status einer Anforderung zur GPS-Positionsbestimmung durch Aufrufen der getStatus()-Methode prüfen, die in den BlackBerry-Erweiterungen für JSR 179 bereitgestellt wird. Wenn die Rückgabe BlackBerryLocation.GPS_ERROR lautet, können Sie den Fehlerwert durch Aufrufen von BlackBerryLocation.getError() abrufen.
  1. Importieren Sie die erforderlichen Klassen und Schnittstellen.
    import net.rim.device.api.gps.*;
    import javax.microedition.location.*;
  2. Erstellen Sie eine Klasse und einen Konstruktor.
    public class handleGPS
    {
        public handleGPS()
        {
        }
    }
  3. Erstellen Sie im Konstruktor einen try/catch-Block. Erstellen Sie in diesem Block eine Instanz der BlackBerryCriteria-Klasse, indem Sie den GPS-Modus an den Konstruktor übergeben.
    try
    {
        BlackBerryCriteria myCriteria =
          new BlackBerryCriteria(GPSInfo.GPS_MODE_ASSIST);
    }
    catch ( UnsupportedOperationException ex )
    {
        return;
    }
  4. Erstellen Sie im try/catch-Block einen anderen try/catch-Block. Erstellen Sie in diesem Block eine Instanz der BlackBerryLocationProvider-Klasse, indem Sie das BlackBerryCriteria-Objekt abrufen. Rufen Sie setLocationListener() auf, um den Standort-Listener festzulegen.
    try
    {
        BlackBerryLocationProvider myProvider =
            (BlackBerryLocationProvider)LocationProvider.getInstance(myCriteria);
        myProvider.setLocationListener(new myLocationListener(), -1, -1, -1);
    }
    catch ( LocationException lex )
    {
        return;
    }
  5. Erstellen Sie in der Klasse eine statische Klasse, die LocationListener implementiert. Implementieren Sie locationUpdated() und providerStateChanged().
    private static class myLocationListener implements LocationListener
    {
        public void locationUpdated(LocationProvider provider, Location location)
        {
        }
        public void providerStateChanged(LocationProvider provider, int newState)
        {
        }
    }
  6. Überprüfen Sie in locationUpdated(), ob der location-Parameter eine Instanz von BlackBerryLocation ist. Ist dies der Fall, erstellen Sie ein lokales BlackBerryLocation-Objekt, indem Sie den location-Parameter übergeben. Rufen Sie getStatus() auf, um den Status der GPS-Positionsanforderung abzurufen, und verarbeiten Sie dann den zurückgegebenen Status.
    if (location instanceof BlackBerryLocation)
    {
        BlackBerryLocation bLoc = (BlackBerryLocation)location;
        switch(bLoc.getStatus())
        {
            case BlackBerryLocation.GPS_ERROR:
                int gpsStatus = bLoc.getError();
                break;
            case BlackBerryLocation.FAILOVER_MODE_ON:
            case BlackBerryLocation.SUBSEQUENT_MODE_ON:
            case BlackBerryLocation.GPS_FIX_PARTIAL:
            case BlackBerryLocation.GPS_FIX_COMPLETE:
                break;
        }
    }

Codebeispiel: Behandeln von Fehlern (BlackBerry-Erweiterungen für JSR 179)

import net.rim.device.api.gps.*;
import javax.microedition.location.*;
public class handleGPS
{
    public handleGPS()
    {
        try
        {
            BlackBerryCriteria myCriteria =
              new BlackBerryCriteria(GPSInfo.GPS_MODE_ASSIST);
            try
            {
                BlackBerryLocationProvider myProvider =
                  (BlackBerryLocationProvider)
                    LocationProvider.getInstance(myCriteria);
                myProvider.setLocationListener
                  (new myLocationListener(), -1, -1, -1);
            }
            catch ( LocationException lex )
            {
                return;
            }
        }
        catch ( UnsupportedOperationException ex )
        {
            return;
        }
    }
    private static class myLocationListener implements LocationListener
    {
        public void locationUpdated
          (LocationProvider provider, Location location)
        {
            if (location instanceof BlackBerryLocation)
            {
                BlackBerryLocation bLoc = (BlackBerryLocation)location;
                switch(bLoc.getStatus())
                {
                    case BlackBerryLocation.GPS_ERROR:
                        int gpsStatus = bLoc.getError();
                        break;
                    case BlackBerryLocation.FAILOVER_MODE_ON:
                    case BlackBerryLocation.SUBSEQUENT_MODE_ON:
                    case BlackBerryLocation.GPS_FIX_PARTIAL:
                    case BlackBerryLocation.GPS_FIX_COMPLETE:
                        break;
                }
            }
        }
        public void providerStateChanged
          (LocationProvider provider, int newState)
        {
        }
    }
}

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.