quarta-feira, 21 de outubro de 2015

Como pegar a localização atual no Android?

Hoje precisei fazer uma app que usava a localização atual, é muito simples!

O projeto inteiro está aqui: https://github.com/adrianoschmidt/android-location-sample

Mas o segredo está nesta classe: MainActivity.java

Basicamente você tem q seguir esses 6 passos:

1) Sua Activity deve implementar as classes GoogleApiClient.ConnectionCallbacks e GoogleApiClient.OnConnectionFailedListener

    public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

2) Criar um atributo do tipo GoogleApiClient

    private GoogleApiClient googleApiClient;

3) No onCreate ou na chamada de um botão você deve verificar se está tudo certo com a API que pega a localização e se estiver construir a API e se conectar nela.

        if (this.checkIfGooglePlayServicesAreAvailable()) {
            this.buildGoogleApiClient();
            this.mGoogleApiClient.connect();
        }

Verificando:

    private boolean checkIfGooglePlayServicesAreAvailable() {
        int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        if (errorCode != ConnectionResult.SUCCESS) {
            System.out.println("GooglePlayServices errorCode: " + errorCode);
            GooglePlayServicesUtil.getErrorDialog(errorCode, this, 0).show();
            return false;
        }
        return true;
    }


4) Implementar o método onConnected e pegar a localicação (aqui no exemplo seto em dois TextViews que tenho na minha tela)

    @Override
    public void onConnected(Bundle bundle) {
        TextView textViewLatitude = (TextView) findViewById(R.id.textViewLatitude);
        TextView textViewLongitude = (TextView) findViewById(R.id.textViewLongitude);

        Location mLastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
        if (mLastLocation != null) {
            textViewLatitude.setText("Lat: " + String.valueOf(mLastLocation.getLatitude()));
            textViewLongitude.setText("Lng: " + String.valueOf(mLastLocation.getLongitude()));
        }
    }

5) Implementar os métodos de suspensão e de falha:

    @Override
    public void onConnectionSuspended(int i) {
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
    }

6) Solicitar a permissão no manifest

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

Basicamente é isso, qualquer coisa baixe o projeto no github ou comenta aqui no post.

Abraço!
Adriano Schmidt

Nenhum comentário:

Postar um comentário