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