Android Open Source - GPS-Latitude-and-Longitude G P S Tracker






From Project

Back to project page GPS-Latitude-and-Longitude.

License

The source code is released under:

Apache License

If you think the Android project GPS-Latitude-and-Longitude listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.mobeyosoft.latitudelongitude;
// w w w  . ja  va 2s.co  m
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 GPSTracker extends Service implements LocationListener {

  private final Context mContext;
  boolean isGPSEnabled = false;
  boolean isNetworkEnabled = false;
  boolean canGetLocation = false;
  Location location; 
  double latitude; 
  double longitude; 

  private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; 
  private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; 

  protected LocationManager locationManager;

  public GPSTracker(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 && !isNetworkEnabled) {

      } 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 (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;
  } 

  public void stopUsingGPS(){

    if(locationManager != null){

      locationManager.removeUpdates(GPSTracker.this);
    }       
  }  

  public double getLatitude(){

    if(location != null){

      latitude = location.getLatitude();
    }     

    return latitude;
  }   

  public double getLongitude(){

    if(location != null){

      longitude = location.getLongitude();
    }       

    return longitude;
  }   


  public boolean canGetLocation() {

    return this.canGetLocation;
  }   

  public void showSettingsAlert(){

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);       

    alertDialog.setTitle("GPS is settings");

    alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

    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);
      }
    });

    alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int which) {

        dialog.cancel();
      }
    });

    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 intent) {

    return null;
  }  
}




Java Source Code List

com.mobeyosoft.latitudelongitude.GPSTracker.java
com.mobeyosoft.latitudelongitude.MainActivity.java