title: Android GPS takes too much time to get the location coordinates
body: <blockquote>
    <p>Here, GPS takes half an hour or more (time) to get the current location coordinates.</p>
    
    <p>How can I use GPS from GPS_SATELLITES and GPS _NETWORK_PROVIDERS
    simultaneously in the same context and get the value of the recent
    GPS?</p>
  </blockquote>
  
  <pre><code>public class ImageFile extends Activity{
  
      LocationListener listner;
  Location location;
  LocationManager locationManager ;
  private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
  private static final long MIN_TIME_BW_UPDATES = 1000 * 10 * 1; // 1 minute
  
  @Override
  protected void onCreate(final Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      setContentView(R.layout.branchreport_layout);
  
  
      locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
      listner = new MyLocationListner();
      isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
  
      isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
  
      if(isGPSEnabled==false&amp;&amp;isNetworkEnabled==false)
      {
          showSettingsAlert();
      }
      if (isGPSEnabled) 
      {
          progress = ProgressDialog.show(this, "GPS",
                  "Fetching latitude and longitude...", true);
          locationManager.requestLocationUpdates(
                  LocationManager.GPS_PROVIDER,
                  MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES,listner);   
  
  
      }
      else if (isNetworkEnabled)
      {
          progress = ProgressDialog.show(this, "GPS",
                  "Fetching latitude and longitude...", true);
          locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES,listner);
      }
  
  
  
  public class MyLocationListner implements LocationListener {
  
      @TargetApi(Build.VERSION_CODES.GINGERBREAD)
      @Override
      public void onLocationChanged(Location location) {
          // TODO Auto-generated method stub
  
          x = location.getLatitude();
          y = location.getLongitude();
  
          if((x!=0) &amp;&amp; (y!=0))
          {
              progress.dismiss();
  
              locationManager.removeUpdates(listner);
              Geocoder gCoder = new Geocoder(ImageFile.this);
  
              try {
                  addresses = gCoder.getFromLocation(x, y, 1);
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              if (addresses != null &amp;&amp; addresses.size() &gt; 0) {
                  Log.d("TestTag", "Locality: " + addresses.get(0).getLocality()+"getAddressLine"+addresses.get(0).getAddressLine(0)+",getAdminArea"+addresses.get(0).getAdminArea()+",getSubLocality"+addresses.get(0).getSubLocality());
              }
  
          }
      }
  
      @Override
      public void onProviderDisabled(String arg0) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void onProviderEnabled(String arg0) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
          // TODO Auto-generated method stub
  
      }
  
  }
  public void showSettingsAlert(){
      AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
  
      // Setting Dialog Title
      alertDialog.setTitle("GPS is settings");
  
      // Setting Dialog Message
      alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
  
      // On pressing Settings button
      alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,int which) {
              Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
              startActivity(intent);
          }
      });
  
      // on pressing cancel button
      alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
              dialog.cancel();
          }
      });
  
      alertDialog.show();
  }
  </code></pre>
  
  <p>}</p>