Guida allo sviluppo

Local Navigation

Modifica dei criteri per ricevere informazioni sulla posizione

È possibile utilizzare un'istanza della classe LocationProvider per modificare automaticamente i criteri utilizzati per rilevare la posizione di un dispositivo BlackBerry.

  1. Importare le classi e l'interfaccia richieste.
    import net.rim.device.api.gps.GPSInfo;
    import javax.microedition.location.*;
  2. Creare una classe e un costruttore.
    public class handleGPS
    {
       public handleGPS(int gpsMode)
       {
       }
    }
  3. Nella classe definire i campi statici per il provider di posizioni, la latitudine, la longitudine, l'altitudine, la velocità e la rotta.
    static LocationProvider locationProvider;
    static double lat, lon;
    static float  alt, spd, crs;
  4. Nel costruttore, aggiungere un blocco di codice per impostare un'istanza LocationProvider in modo da passare a un metodo diverso per rilevare la posizione. Richiamare reset() sull'oggetto LocationProvider, quindi impostare il listener di posizioni su null per disattivare il listener.
    if (locationProvider != null)
    {
        locationProvider.reset();
        locationProvider.setLocationListener(null, -1, -1, -1);
    }
  5. Nel costruttore, creare e configurare un oggetto Criteria basato sulla modalità GPS che viene passato come parametro al costruttore.
    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. Nel costruttore, creare un blocco try/catch. In questo blocco, creare un'istanza della classe LocationListener richiamando getInstance() e passando l'oggetto Criteria come parametro. Specificare un listener di posizioni per gestire gli aggiornamenti della posizione GPS.
    try
    {
       locationProvider = LocationProvider.getInstance(myCriteria);
       if (locationProvider != null)
       {
          locationProvider.setLocationListener
            (new myLocationListener(), -1, -1, -1);
       }
    }
    catch (Exception err)
    {}
  7. Nella classe, creare una classe statica privata che implementi l'interfaccia LocationListener. Recuperare le informazioni sulla posizione corrente nel metodo locationUpdated(). Creare un'implementazione di base del metodo providerStateChanged() per controllare lo stato di 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)
       {}
    }

Le informazioni sono state utili? Inviateci i vostri commenti.