title: I am unable to get GPS location
body: <p>1.The below code gives me Network location but not giving GPS location<br/> 
   2.When I disabled my WIFI it gives network location<br>
   3.When I disabled my Network it shows last known location only<br>
   4.First of all I need to check that network is available or not<br>
   5.If Network available get the location from network<br>
   6.Otherwise I need to get the location of GPS<br></p>
  
  <pre><code>public class GetandGiveLocation extends Service implements LocationListener {
  
      private final Context mContext;
  
      boolean isGPSEnabled = false;
  
      boolean isNetworkEnabled = false;
  
      boolean canGetLocation = false;
  
      Location location;
      double latitude;
      double longitude;
      String bestProvider;
  
      private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 0;
  
      private static final long MIN_TIME_BW_UPDATES = 0;
  
      protected LocationManager locationManager;
  
      public GetandGiveLocation(Context context) {
          this.mContext = context;
          getLocation();
      }
  
      public Location getLocation() {
          try {
  
              locationManager = (LocationManager) mContext
                      .getSystemService(LOCATION_SERVICE);
  
              isGPSEnabled = locationManager
                      .isProviderEnabled(LocationManager.GPS_PROVIDER);
  
              isNetworkEnabled = locationManager
                      .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
  
              if (!isGPSEnabled &amp;&amp; !isNetworkEnabled) {
                  showSettingsAlert();
              } else {
                  this.canGetLocation = true;
  
                  if (isNetworkEnabled) {
  
                      locationManager.requestLocationUpdates(
                              LocationManager.NETWORK_PROVIDER,
                              MIN_TIME_BW_UPDATES,
                              MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
  
                      if (locationManager != null) {
                          location = locationManager
                                  .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                          if (location != null) {
                              latitude = location.getLatitude();
                              longitude = location.getLongitude();
                          }
                      }
                  }
                  if (isGPSEnabled) {
  
                      locationManager.requestLocationUpdates(
                              LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES,
                              MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
  
                      if (locationManager != null) {
                          location = locationManager
                                  .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                          if (location != null) {
                              latitude = location.getLatitude();
                              longitude = location.getLongitude();
                          }
  
                      }
  
                  }
  
              }
  
          } catch (Exception e) {
              e.printStackTrace();
          }
  
          return location;
      }
  
      public boolean canGetLocation() {
          return this.canGetLocation;
      }
  
      @Override
      public void onLocationChanged(Location location) {
  
          latitude = location.getLatitude();
          longitude = location.getLongitude();
          GoogleMapViewer gmv = new GoogleMapViewer();
          SendToWebsite stw = new SendToWebsite();
          stw.execute(latitude, longitude);
  
      }
  
  }
  </code></pre>