Search code examples
blackberrygps

How can I get latitude and longitude of the current location in Blackberry?


I am developing an app which has GPS functionality. How can I get latitude and longitude of the current location.


Solution

  • I found a solution by myself. The following code works fine for me:

    package mypackage;
    
    import javax.microedition.location.Location;
    import javax.microedition.location.LocationException;
    import javax.microedition.location.LocationListener;
    import javax.microedition.location.LocationProvider;
    import net.rim.device.api.ui.UiApplication;
    import net.rim.device.api.ui.component.Dialog;
    import net.rim.device.api.ui.component.RichTextField;
    import net.rim.device.api.ui.container.MainScreen;
    
    public final class MyScreen extends MainScreen
    {
        private LocationProvider locationProvider;
        private static int interval = 1;
        double lat;
        double longt;
    
        public MyScreen()
        {
            setTitle("MyTitle");
            startLocationUpdate();
        }
    
        private boolean startLocationUpdate()
        {
            boolean retval = false;
    
            try
            {
                locationProvider = LocationProvider.getInstance(null);
    
                if ( locationProvider == null )
                { 
                    Runnable showGpsUnsupportedDialog = new Runnable()
                    {
                        public void run()
                        {
                            Dialog.alert("GPS is not supported on this platform, exiting...");
                            //System.exit( 1 );
                        }
                    };
    
                    UiApplication.getUiApplication().invokeAndWait( showGpsUnsupportedDialog ); // Ask event-dispatcher thread to display dialog ASAP.
                }
                else
                { 
                    locationProvider.setLocationListener(new LocationListenerImpl(), interval, 1, 1);
    
                    retval = true;
                }
            }
            catch (LocationException le)
            {
                System.err.println("Failed to instantiate the LocationProvider object, exiting...");
                System.err.println(le);
                System.exit(0);
            }
            return retval;
        }
    
        private class LocationListenerImpl implements LocationListener
        {
            public void locationUpdated(LocationProvider provider, Location location)
            {
                if(location.isValid())
                {
                    double longitude = location.getQualifiedCoordinates().getLongitude();
                    double latitude = location.getQualifiedCoordinates().getLatitude();
    
                    updateLocationScreen(latitude, longitude);              
                }
            }
    
            public void providerStateChanged(LocationProvider provider, int newState)
            {
            }
        }
    
        private void updateLocationScreen(final double latitude, final double longitude)
        {
            UiApplication.getUiApplication().invokeAndWait(new Runnable()
            {
                public void run()
                {
                    lat = latitude;
                    longt = longitude;
    
                    RichTextField txt=new RichTextField();
                    txt.setText("Long=="+longt);
    
                    RichTextField txt1=new RichTextField();
                    txt1.setText("lat=="+lat);
    
                    add(txt);
                    add(txt1);
                    //persistentLatitude.setContents(Double.toString(latitude));
                    //persistentLongitude.setContents(Double.toString(longitude));
                }
            });
        }
    }