149 votes

La classe LocationClient Android est obsolète mais utilisée dans la documentation

Si nous parcourons la documentation du LocationClient , nous pouvons voir que la classe est obsolète.

Mais la classe obsolète est utilisée dans la documentation pour obtenir l'emplacement actuel .

Je pense que c'est un peu trompeur ou est-ce que je regarde des documentations incorrectes?

271voto

Diego Palomar Points 1253

Vous avez ici un exemple complet utilisant la nouvelle / dernière API de service de localisation ... Profitez du codage :)

 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;

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

    private final String TAG = "MyAwesomeApp";

    private TextView mLocationView;

    private GoogleApiClient mGoogleApiClient;

    private LocationRequest mLocationRequest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mLocationView = new TextView(this);

        setContentView(mLocationView);

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }

    @Override
    protected void onStart() {
        super.onStart();
        // Connect the client.
        mGoogleApiClient.connect();
    }

    @Override
    protected void onStop() {
        // Disconnecting the client invalidates it.
        mGoogleApiClient.disconnect();
        super.onStop();
    }

    @Override
    public void onConnected(Bundle bundle) {

        mLocationRequest = LocationRequest.create();
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        mLocationRequest.setInterval(1000); // Update location every second

        LocationServices.FusedLocationApi.requestLocationUpdates(
                mGoogleApiClient, mLocationRequest, this);
    }

    @Override
    public void onConnectionSuspended(int i) {
        Log.i(TAG, "GoogleApiClient connection has been suspend");
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        Log.i(TAG, "GoogleApiClient connection has failed");
    }

    @Override
    public void onLocationChanged(Location location) {
        mLocationView.setText("Location received: " + location.toString());
    }
}
 

et n'oubliez pas d'ajouter ces autorisations à votre fichier AndroidManifest.xml:

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

22voto

paularius Points 81

Une partie de la documentation est ancienne dans Google (quelques exemples que vous avez mentionné encore utilisent l’obsolète `` ). Vous devez utiliser le nouveau GoogleApiClient comme décrit dans les exemples de Services de localisation :

et lorsque le nouveau client est connecté, vous pouvez utiliser l’emplacement fusible api par exemple comme ceci :

4voto

Sofi Software LLC Points 1835

Il ressemble à ce qui a été couvert dans le blog des développeurs. Pour LocationClient, vous devriez utiliser ceci en conjonction avec LocationServices qui nous conduit à GeofencingApi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X