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

Erro ao instanciar o Objeto LocationRequest

Na classe Localizador , ao tentar compilar o código ele acusa erro na instancia de LocationRequest. Sendo o seguinte erro:

error: cannot access zzbgl class file for com.google.android.gms.internal.zzbgl not found

como posso proceder? Segue o código>

package com.example.nobre.agenda;

import android.annotation.SuppressLint;
import android.content.Context;
import android.location.Location;
import android.os.Bundle;
import android.support.annotation.Nullable;

import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;

public class Localizador implements GoogleApiClient.ConnectionCallbacks, LocationListener {

    private final GoogleApiClient client;
    private final GoogleMap mapa;

    public Localizador(Context context, GoogleMap mapa) {
        client = new GoogleApiClient.Builder(context)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(this)
                .build();

        client.connect();

        this.mapa = mapa;
    }

    @Override
    public void onConnected(@Nullable Bundle bundle) {
        LocationRequest request = new LocationRequest();
        request.setSmallestDisplacement(50); // atualiza a cada 50m
        request.setInterval(1000); // intervalo de 1000 milisegundos
        request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); // precisão da localização, PRIORITY_HIGH_ACCURACY é a maior possível, gasta bateria

        LocationServices.FusedLocationApi.requestLocationUpdates(client, request, this); // necessária permissão para gps
        // terminei de assistir no 20:51
    }

    @Override
    public void onConnectionSuspended(int i) {

    }

    @Override
    public void onLocationChanged(Location location) {
        LatLng coordenada = new LatLng(location.getLatitude(), location.getLongitude());
        CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLng(coordenada);
        mapa.moveCamera(cameraUpdate);
    }
}
5 respostas

Oi Rafael, tudo bem ?

Cara você escreveu certinho o código, pode ser que a versão da biblioteca que está usando possa estar causando este erro.

Vc recomenda eu usar uma biblioteca mais antiga? A mais recente não deveria contemplar os métodos e objetos anteriores?

A mais recente nem sempre tem retrocompatibilidade.

Então, estou utilizando a última. Existe alguma outra solução q eu possa adotar?

solução!

Na versão mais recente eu faço dessa maneira :


public class GPS extends LocationCallback {

    private FusedLocationProviderClient client;
    private GPSDelegate delegate;

    public GPS(GPSDelegate delegate) {
        this.delegate = delegate;
        this.client = LocationServices.getFusedLocationProviderClient(delegate.getContext());
    }

    @SuppressLint("MissingPermission")
    public void fazBusca() {
        LocationRequest req = new LocationRequest();

        req.setInterval(1000);
        req.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        req.setSmallestDisplacement(10);

        client.requestLocationUpdates(req, this, null);
    }


    @Override
    public void onLocationResult(LocationResult locationResult) {
        super.onLocationResult(locationResult);

        delegate.lidaCom(locationResult.getLastLocation());

    }


    public void cancelaBusca() {
        client.removeLocationUpdates(this);
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software