Guía de desarrollo

Local Navigation

Recuperar información del satélite utilizando la clase BlackBerryLocation

Puede solicitar un punto de posición GPS, después recuperar el número actual de satélites que ve, los satélites rastreados, la calidad media de la señal del satélite, la fuente de datos GPS (GPS interno o externo) y el modo GPS.

  1. Importe las clases necesarias.
    import java.util.*;
    import java.lang.*;
    import net.rim.device.api.gps.*;
  2. Cree una clase y un constructor.
    public class handleGPS
    {
       public handleGPS()
       {
       }
    }
  3. En la clase, declare campos estáticos para un subproceso y para cada elemento de información de la ubicación que recupere.
    static GPSThread gpsThread;
    static int satCount;
    static int signalQuality;
    static int dataSource;
    static int gpsMode;
  4. En el constructor, cree e inicie un subproceso.
    gpsThread = new GPSThread();
    gpsThread.start();
  5. En la clase, cree una clase estática privada que amplíe Thread y un método run().
    private static class GPSThread extends Thread
    {
        public void run()
        {
        }
    }
  6. En run(), cree un bloque try/catch. En este bloque, cree una instancia de la clase BlackBerryCriteria que especifique el modo GPS. Cree un segundo bloque try/catch. En este bloque, cree una instancia de la clase BlackBerryLocationProvider recuperando una instancia del objeto BlackBerryCriteria.
    try
    {
        BlackBerryCriteria myCriteria = new BlackBerryCriteria(GPSInfo.GPS_MODE_AUTONOMOUS);
        try
        {
            BlackBerryLocationProvider myProvider =
                (BlackBerryLocationProvider)LocationProvider.getInstance(myCriteria);
    
  7. Cree un tercer bloque try/catch que esté en el primer bloque try/catch. Cree un objeto BlackBerryLocation para recuperar el punto de posición GPS incluyendo un tiempo de espera máximo de 300 segundos. Rellene los campos y extraiga la información del satélite en un objeto 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 ha resultado útil esta información? Envíenos sus comentarios.