Bob21
Bob21

Reputation: 167

Using GPS to get current location

I want to be able to get the current coordinates using only GPS.

At the moment my code gets the coordinates once and then uses them over again once they have been stored. I'm looking for the solution on how to modify the code so that when the button is clicked it gets the current coordinates.

Here's the code:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Setting TextViews for the coordinates
    startLatitudeField = (TextView) findViewById(R.id.TextView02);
    startLongitudeField = (TextView) findViewById(R.id.TextView04);
    endLatitudeField = (TextView) findViewById(R.id.textView06);
    endLongitudeField = (TextView) findViewById(R.id.textView08);


    //Button
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            Criteria criteria = new Criteria();
            provider = locationManager.getBestProvider(criteria, false);
            Location location = locationManager.getLastKnownLocation(provider);
            //find out how to get the current location using gps
            //not what is stored

            if (startLat != 0) {
                onLocationChanged(location);
            } else {
            onLocationChanged(location);
            Button button = (Button) findViewById(R.id.button1);
            button.setText("Get me home");
            }


        }


    }); 
};

@Override
public void onLocationChanged(Location location) {

    if (startLat == 0) {
        startLat = (double) (location.getLatitude());
        startLng = (double) (location.getLongitude());
        startLatitudeField.setText(String.valueOf(startLat));
        startLongitudeField.setText(String.valueOf(startLng));
    } 
    else {

        endLat = (double) (location.getLatitude());
        endLng = (double) (location.getLongitude());
        endLatitudeField.setText(String.valueOf(endLat));
        endLongitudeField.setText(String.valueOf(endLng));
    }

}

Upvotes: 0

Views: 129

Answers (2)

Miguel Maciel
Miguel Maciel

Reputation: 176

First of all you need add the permission to the Manifest file:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

You have the answer here in stackoverflow to: How do I get the current GPS location programmatically in Android?

And a sample app here: http://www.rdcworld-android.blogspot.in/2012/01/get-current-location-coordinates-city.html

Upvotes: 2

Sishin
Sishin

Reputation: 2001

https://developer.android.com/training/location/retrieve-current.html check this they have provided sample code also

Upvotes: 0

Related Questions