Getting latitude and longitude by GPS
<p>I am trying to fetch GPS latitude and longitude on a mobile device. My code below works -- i.e. it provides all the information in the desired manner -- when the device's "use wireless networks" setting is selected, but not when "use GPS satellites" is selected, in which case I don't get any information. </p>

<p>Here's the code:</p>

<pre><code>void getLatitudeAndLongitude() {
    boolean gpsEnabled = false;
    LocationManager mLocMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Log.e("mLocation#####", "" + mLocMan);

    try {
        gpsEnabled = mLocMan
                .isProviderEnabled(LocationManager.GPS_PROVIDER);
    } catch (Exception ex) {
    }
    boolean networkEnabled = false;
    try {
        networkEnabled = mLocMan
                .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    } catch (Exception ex) {
    }
    Location mCurrentLocation = null;

    // network*****************

    if (networkEnabled)
        mCurrentLocation = mLocMan
                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

    // gps********************
    if (gpsEnabled)
        mCurrentLocation = mLocMan
                .getLastKnownLocation(LocationManager.GPS_PROVIDER);

    Log.d("current location", "" + mCurrentLocation);
    LocationProvider mGpsProv = null;

    if (mGpsProv == null &amp;&amp; mLocMan != null) {
        mGpsProv = mLocMan.getProvider(LocationManager.GPS_PROVIDER);
    }

    if (mLocMan != null) {

        mylocationlistener mGpsLocListener = new mylocationlistener();
        mLocMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                0 /* minTime ms */, 0 /* minDistance in meters */,
                mGpsLocListener);
        Log.d("Provoider1", "NETWORK_PROVIDER");
    }
    if (mLocMan != null &amp;&amp; mGpsProv != null) {

        mylocationlistener mGpsLocListener = new mylocationlistener();
        mLocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                0 /* minTime ms /, 0 / minDistance in meters */, 0,
                mGpsLocListener);
        Log.d("Provoider2", "GPS_PROVIDER");
    }

}

class mylocationlistener implements LocationListener {

    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {

            latitude = String.valueOf(location.getLatitude());
            longitude = String.valueOf(location.getLongitude());

            Log.e("location==", "" + location);
            Log.e("getLatitude", location.getLatitude() + "");
            Log.e("getLongitude", location.getLongitude() + "");

            if (GlobalConfig.DEBUG)
                Log.d("setUpIndividualWork", "location==" + location);

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {

                }
            }, 1000);

            onGPSUpdate(location);

            Geocoder gcd = new Geocoder(setUpIndividualWorkOut.this,
                    Locale.getDefault());
            List&lt;Address&gt; addresses = null;
            try {
                addresses = gcd.getFromLocation(location.getLatitude(),
                        location.getLongitude(), 1);
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (addresses != null &amp;&amp; addresses.size() &gt; 0) {
                userCurrentLocation = addresses.get(0).getLocality();
                Log.e("current location by GPS ", ""
                        + addresses.get(0).getLocality());
            }
        }
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}
</code></pre>

<p>I will be very thankful for your response.</p>
