Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Dúvida no Ex. 2 da Aula 7 - Interagindo com o GPS

eclipse não reconhece a classe LocationClient.

O import não é reconhecido. O que deve ser feito?

9 respostas

Edmilsom,

Esta classe foi depreciada agora você deve usar as classes GoogleApiClient e FusedLocationApi:

https://developer.android.com/training/location/retrieve-current.html

Abraço!

Poderia mandar um exemplo de como ficaria utilizando estas novas classes?

googleApiClient = new GoogleApiClient.Builder(ctx)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(configurador)
                .build();
        googleApiClient.connect();

e

LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, configs, this);

e

LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient,this);
        this.googleApiClient.disconnect();

Eduardo ,

obrigado,

mas mesmo assim nao consegui, nao tenho experiencia nenhuma nisso.

E complicado voce assistir um video, ter uma explicacao, exercicios de uma coisa que nao funciona mais. Chega a ser patetico. A Alura e uma verdadeira decepcao para mim.

solução!

Ernaldo,

É da mesma forma que mostra nos vídeos, só muda umas classes, em vez de fazer locationService. requestLocationUpdates você chama

LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, configs, this);

e em vez de criar o LocationService vc cria um googleApiClient

googleApiClient = new GoogleApiClient.Builder(ctx)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(configurador)
                .build();
        googleApiClient.connect();

As classes do Android mudam constantemente deve ser difícil dar manutenção no curso. Além desse problema temos diversos outros como o WebClient que está deprecated porém ainda não foi removido como o LocationService, quando eles mudam uma classe normalmente eles não removem de vez eles deixam ela como Deprecated e na versão seguinte removem. Deprecated é quando você um traço por cima da classe.

E tem mais o Eclipse não é mais tão usado pra desenvolvimento Android, agora devs estão usando mais o Android Studio que tem como base o IntelliJ e não mais o Eclipse.

Enfim eles devem atualizar em breve, eu gostaria de ver também outras coisas mais atuais e mais usadas hoje, como otto, eventbus, rxjava, dagger, butter knife, android data binding, picasso e android design support library.

Eduardo mesmo no seu exemplo a parte de conexao:

googleApiClient.connect();

nao funciona.

Qual é o erro, na hora de rodar?

public class AtualizacaoDeLocalizacao implements LocationListener {

    private GoogleApiClient googleApiClient;
    private MapaFragment mapa;

    public AtualizacaoDeLocalizacao(Context ctx,MapaFragment mapa) {
        this.mapa = mapa;
        Configurador configurador = new Configurador(this);
        googleApiClient = new GoogleApiClient.Builder(ctx)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(configurador)
                .build();
        googleApiClient.connect();
    }

    public void inicializa(LocationRequest configs) {
        LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, configs, this);
    }

    public void cancela() {
        LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient,this);
        this.googleApiClient.disconnect();
    }

    @Override
    public void onLocationChanged(Location location) {
        LatLng latLng =new LatLng(location.getLatitude(),location.getLongitude());
        mapa.centralizaNo(latLng);
    }
}

Ja tinha dado certo, obrigado.