Guide de développement

Local Navigation

Échantillon de code : récupération d'une position GPS optimale unique

L'échantillon de code suivant indique comment créer une application d'interface utilisateur fournissant la position GPS la plus rapidement disponible, qui peut être issue d'une source de géolocalisation ou d'une position GPS.

import net.rim.device.api.gps.*;
import net.rim.device.api.system.Application;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.component.*;
import javax.microedition.location.*;
public final class SingleFixDemo extends UiApplication
{
    public static void main(String[] args)
    {
        SingleFixDemo theApp = new SingleFixDemo();
        theApp.enterEventDispatcher();
    }
    public SingleFixDemo() 
    {
        pushScreen(new SingleFixScreen());
    }
}
class SingleFixScreen extends MainScreen 
{
    private LabelField _coordLabel;
    private double _latitude;
    private double _longitude;
    private int _modeUsed;
    private String _mode;
    public SingleFixScreen() 
    {
        super(DEFAULT_CLOSE | DEFAULT_MENU);
        setTitle(new LabelField("Single Fix Demo" , Field.USE_ALL_WIDTH | 
                DrawStyle.HCENTER));
        ButtonField locButton = new ButtonField("Get location fix", 
                ButtonField.CONSUME_CLICK);
        locButton.setChangeListener(new FieldChangeListener()
        {
            public void fieldChanged(Field field, int context)
            {
                findLocation();
            }
        });
        add(locButton);
        this._coordLabel = new LabelField();
        add(this._coordLabel);
    }
    private void findLocation()
    {
        this._coordLabel.setText("");
        Thread locThread = new Thread() 
        {
            public void run() 
            {
                try
                {
                    BlackBerryCriteria myCriteria = new BlackBerryCriteria();
                    myCriteria.enableGeolocationWithGPS(BlackBerryCriteria
                            .FASTEST_FIX_PREFERRED);
                    try
                    {
                        BlackBerryLocationProvider myProvider = 
                                (BlackBerryLocationProvider)LocationProvider
                                .getInstance(myCriteria);
                        try
                        {
                            BlackBerryLocation myLocation = (BlackBerryLocation)
                                    myProvider.getLocation(-1);
                            _longitude = myLocation.getQualifiedCoordinates()
                                    .getLongitude();
                            _latitude = myLocation.getQualifiedCoordinates()
                                    .getLatitude();
                            _modeUsed = myLocation.getGPSMode();
                            switch (_modeUsed)
                            {
                                case LocationInfo.GEOLOCATION_MODE:
                                case LocationInfo.GEOLOCATION_MODE_CELL:
                                case LocationInfo.GEOLOCATION_MODE_WLAN:
                                    _mode = "Geolocation";
                                    break;
                                default:
                                    _mode = "GPS";
                            }    
                            StringBuffer sb = new StringBuffer();
                            sb.append("Longitude: ");
                            sb.append(_longitude);
                            sb.append("\n");
                            sb.append("Latitude: ");
                            sb.append(_latitude);
                            sb.append("\n");
                            sb.append("Mode: ");
                            sb.append(_mode);
                            String msg = sb.toString();
                            showResults(msg);
                        }
                        catch (InterruptedException e)
                        {
                            showException(e);
                                                    }
                        catch (LocationException e)
                        {
                            showException(e);
                        }
                    }
                    catch (LocationException e)
                    {
                        showException(e);
                    }
               } 
               catch (UnsupportedOperationException e) 
               {
                   showException(e);
               }
            }
        };
        locThread.start();
    }
    private void showResults(final String msg)
    {
        Application.getApplication().invokeLater(new Runnable()
        {
            public void run()
            {
                SingleFixScreen.this._coordLabel.setText(msg);
            }
        });
    }
    private void showException(final Exception e) 
    {
        Application.getApplication().invokeLater(new Runnable() 
        {
            public void run() 
            {
                Dialog.alert(e.getMessage());
            }
        });
    }
}

Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.