Jak zawsze, wycofują apis, ale nie aktualizują dokumentów w tym samym czasie. Będziesz musiał poczekać, aż dokumenty zostaną zaktualizowane lub spróbować znaleźć działający przykład
Ponownie Google wydało nowe API, ale nie zaktualizowało dokumentacji: $ Po spędzeniu trochę czasu próbując dowiedzieć się, jak to działa, mam to, tutaj masz pełny przykład użycia nowego / najnowszego interfejsu API usługi lokalizacji ... Ciesz się rozwija się :)
import android.location.Location;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.TextView;import com.google.android.gms.common.ConnectionResult;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;publicclassMainActivityextendsActivityimplementsGoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener,LocationListener{privatefinalString TAG ="MyAwesomeApp";privateTextView mLocationView;privateGoogleApiClient mGoogleApiClient;privateLocationRequest mLocationRequest;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
mLocationView =newTextView(this);
setContentView(mLocationView);
mGoogleApiClient =newGoogleApiClient.Builder(this).addApi(LocationServices.API).addConnectionCallbacks(this).addOnConnectionFailedListener(this).build();}@Overrideprotectedvoid onStart(){super.onStart();// Connect the client.
mGoogleApiClient.connect();}@Overrideprotectedvoid onStop(){// Disconnecting the client invalidates it.
mGoogleApiClient.disconnect();super.onStop();}@Overridepublicvoid onConnected(Bundle bundle){
mLocationRequest =LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(1000);// Update location every secondLocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest,this);}@Overridepublicvoid onConnectionSuspended(int i){Log.i(TAG,"GoogleApiClient connection has been suspend");}@Overridepublicvoid onConnectionFailed(ConnectionResult connectionResult){Log.i(TAG,"GoogleApiClient connection has failed");}@Overridepublicvoid onLocationChanged(Location location){
mLocationView.setText("Location received: "+ location.toString());}}
i nie zapomnij dodać tych uprawnień do pliku AndroidManifest.xml:
Uwaga: jeśli potrzebujesz tylko ostatniej lokalizacji (bez aktualizacji), możesz użyć LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient)z OnConnected
Zwróć uwagę, że jeśli chcesz tylko uzyskać ostatnią lokalizację bez aktualizacji, możesz skorzystać LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);z OnConnected
Część dokumentacji w Google jest stara (niektóre wspomniane przez Ciebie przykłady nadal korzystają z wycofanej LocationClient). Musisz użyć nowego GoogleApiClient, jak opisano w przykładach usług lokalizacyjnych:
Wygląda również na to, że oficjalna aplikacja LocationProvider od Google nadal używa LocationClient, którego nie ma już w tym pakiecie import com.google.android.gms.location.LocationClient;
privateFusedLocationProviderClient mFusedLocationClient;privateLocation mLastLocation;
oncreate(){..FusedLocationProviderClient mFusedLocationClient =LocationServices.getFusedLocationProviderClient(this);if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED &&ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED){// TODO: Consider calling// ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding// public void onRequestPermissionsResult(int requestCode, String[] permissions,// int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}
mFusedLocationClient.getLastLocation().addOnSuccessListener(newOnSuccessListener<Location>(){@Overridepublicvoid onSuccess(Location location){
mLastLocation =location;if(mLastLocation!=null){LogUtils.logE(TAG,"Lat: "+ mLastLocation.getLatitude()+"Long: "+ mLastLocation.getLongitude());}}});..}
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.