title: Get current location using GPS , without network
body: <p>i need to get myLocation using GPS, how to get it? I try next code, but it works not ever. When i restart my phone and run application it does not works.</p>
  
  <pre><code>import android.app.AlertDialog;
  import android.app.Service;
  import android.content.Context;
  import android.content.DialogInterface;
  import android.content.Intent;
  import android.location.Location;
  import android.location.LocationListener;
  import android.location.LocationManager;
  import android.os.Bundle;
  import android.os.IBinder;
  import android.provider.Settings;
  import android.util.Log;
  
  public class GPSTraker extends Service implements LocationListener {
  
  private final Context mContext;
  
  // flag for GPS status
  boolean isGPSEnabled = false;
  
  // flag for network status
  boolean isNetworkEnabled = false;
  
  // flag for GPS status
  boolean canGetLocation = false;
  
  Location location; // location
  double latitude; // latitude
  double longitude; // longitude
  
  // The minimum distance to change Updates in meters
  private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 1; // 10 meters
  
  // The minimum time between updates in milliseconds
  private static final long MIN_TIME_BW_UPDATES = 3000; // 1 minute
  
  // Declaring a Location Manager
  protected LocationManager locationManager;
  
  public GPSTraker(Context context) {
      this.mContext = context;
      getLocation();
  }
  
  public Location getLocation() {
      try {
          locationManager = (LocationManager) mContext
                  .getSystemService(LOCATION_SERVICE);
  
          // getting GPS status
          isGPSEnabled = locationManager
                  .isProviderEnabled(LocationManager.GPS_PROVIDER);
  
          // getting network status
          isNetworkEnabled = locationManager
                  .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
  
          if (!isGPSEnabled &amp;&amp; !isNetworkEnabled) {
              // no network provider is enabled
          } else {
              this.canGetLocation = true;
              if (isNetworkEnabled) {
                  locationManager.requestLocationUpdates(
                          LocationManager.NETWORK_PROVIDER,
                          MIN_TIME_BW_UPDATES,
                          MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                  Log.d("Network", "Network");
                  if (locationManager != null) {
                      location = locationManager
                              .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                      if (location != null) {
                          latitude = location.getLatitude();
                          longitude = location.getLongitude();
                      }
                  }
              }
              // if GPS Enabled get lat/long using GPS Services
              if (isGPSEnabled) {
                  if (location == null) {
                      locationManager.requestLocationUpdates(
                              LocationManager.GPS_PROVIDER,
                              MIN_TIME_BW_UPDATES,
                              MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                      Log.d("GPS Enabled", "GPS Enabled");
                      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;
  }
  
  /**
   * Stop using GPS listener Calling this function will stop using GPS in your
   * app
   * */
  public void stopUsingGPS() {
      if (locationManager != null) {
          locationManager.removeUpdates(GPSTraker.this);
      }
  }
  
  /**
   * Function to get latitude
   * */
  public double getLatitude() {
      if (location != null) {
          latitude = location.getLatitude();
      }
  
      // return latitude
      return latitude;
  }
  
  /**
   * Function to get longitude
   * */
  public double getLongitude() {
      if (location != null) {
          longitude = location.getLongitude();
      }
  
      // return longitude
      return longitude;
  }
  
  /**
   * Function to check GPS/wifi enabled
   * 
   * @return boolean
   * */
  public boolean canGetLocation() {
      return this.canGetLocation;
  }
  
  /**
   * Function to show settings alert dialog On pressing Settings button will
   * lauch Settings Options
   * */
  public void showSettingsAlert() {
      AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
  
      // 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);
                      mContext.startActivity(intent);
                  }
              });
  
      // on pressing cancel button
      alertDialog.setNegativeButton("Cancel",
              new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int which) {
                      dialog.cancel();
                  }
              });
  
      // Showing Alert Message
      alertDialog.show();
  }
  
  @Override
  public void onLocationChanged(Location location) {
  }
  
  @Override
  public void onProviderDisabled(String provider) {
  }
  
  @Override
  public void onProviderEnabled(String provider) {
  }
  
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {
  }
  
  @Override
  public IBinder onBind(Intent arg0) {
      return null;
  
  }
   }
  </code></pre>
  
  <p>and using it:</p>
  
  <pre><code>@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
      v = inflater.inflate(R.layout.fragment_near_new, null);
      elvMain = (ExpandableListView) v.findViewById(R.id.elvMain);
      GPSTraker gps = new GPSTraker(getActivity());
  
      if (gps.canGetLocation()) {
          myLat = gps.getLatitude();
          myLong = gps.getLongitude();
          Log.d("myDebug", "new get Location +" + myLat);
          // \n is for new line
  
      } else {
          // can't get location
          // GPS or Network is not enabled
          // Ask user to enable GPS/network in settings
          Log.d("myDebug", "Can not get location");
          gps.showSettingsAlert();
      }
  
  
      return v;
  }
  </code></pre>
  
  <p>What it is wrong? Maybe someone have some ideas how to solve this? After i reboot my phone <a href="https://play.google.com/store/apps/details?id=com.androits.gps.test.free&amp;hl=en" rel="nofollow">this program</a>
   can not get my location too.</p>