Guida allo sviluppo

Local Navigation

Recupero delle informazioni sui satelliti utilizzando la classe BlackBerryLocation

È possibile richiedere un fix GPS e recuperare quindi le informazioni relative al numero dei satelliti in vista, al numero dei satelliti rilevati, alla qualità media del segnale satellitare, all'origine dei dati GPS (GPS interno o esterno) e alla modalità GPS.

  1. Importare le classi richieste.
    import java.util.*;
    import java.lang.*;
    import net.rim.device.api.gps.*;
  2. Creare una classe e un costruttore.
    public class handleGPS
    {
       public handleGPS()
       {
       }
    }
  3. Nella classe, dichiarare campi statici per un thread e per ciascun elemento delle informazioni sulla posizione che viene recuperato.
    static GPSThread gpsThread;
    static int satCount;
    static int signalQuality;
    static int dataSource;
    static int gpsMode;
  4. Nel costruttore, creare e avviare un thread.
    gpsThread = new GPSThread();
    gpsThread.start();
  5. Nella classe, creare una classe statica privata che estenda Thread e un metodo run().
    private static class GPSThread extends Thread
    {
        public void run()
        {
        }
    }
  6. In run(), creare un blocco try/catch. In questo blocco, creare un'istanza della classe BlackBerryCriteria che specifichi la modalità GPS. Creare un secondo blocco try/catch. In questo blocco, creare un'istanza della classe BlackBerryLocationProvider ottenendo un'istanza dell'oggetto BlackBerryCriteria.
    try
    {
        BlackBerryCriteria myCriteria = new BlackBerryCriteria(GPSInfo.GPS_MODE_AUTONOMOUS);
        try
        {
            BlackBerryLocationProvider myProvider =
                (BlackBerryLocationProvider)LocationProvider.getInstance(myCriteria);
    
  7. Creare un terzo blocco try/catch all'interno del primo blocco try/catch. Creare un oggetto BlackBerryLocation per recuperare un fix GPS che preveda un timeout di 300 secondi. Popolare i campi ed estrarre le informazioni sui satelliti in un oggetto StringBuffer.
    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 )
    {}

Le informazioni sono state utili? Inviateci i vostri commenti.