Donc, j'ai ce code:
package com.entu.bocterapp; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.os.Bundle; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; public class LocationManager implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private Context mContext; private GoogleApiClient mGoogleApiClient; private Location mLastLocation; private LocationRequest mLocationRequest; public LocationManager(Context context) { mContext = context; // if (checkIfGooglePlayServicesAreAvailable()) { //Get Access to the google service api buildGoogleApiClient(); mGoogleApiClient.connect(); } else { //Use Android Location Services //TODO: } } public Location getCoarseLocation() { if (mLastLocation != null) { return mLastLocation; } else return null; } private synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(mContext) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); } private boolean checkIfGooglePlayServicesAreAvailable() { int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(mContext); if (errorCode != ConnectionResult.SUCCESS) { GooglePlayServicesUtil.getErrorDialog(errorCode, (RecentSightings) mContext, 0).show(); return false; } return true; } @Override public void onConnected(Bundle bundle) { Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); if (location != null) { mLastLocation = location; Toast.makeText(mContext, location.getLongitude() + " , " + location.getLatitude() + " : " + location.getAccuracy(), Toast.LENGTH_LONG).show(); } } @Override public void onConnectionSuspended(int i) { Toast.makeText(mContext, "suspended", Toast.LENGTH_LONG).show(); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { } }
3 Réponses :
Vous devez appeler
Essayez ceci:
@Override protected void onStart() { if(mGoogleApiClient!=null){ mGoogleApiClient.connect(); } super.onStart(); } @Override protected void onStop() { if(mGoogleApiClient!=null){ if(mGoogleApiClient.isConnected()){ mGoogleApiClient.disconnect(); } } super.onStop(); }
J'ai eu le même problème vient de mettre à jour ma version de grade ÇA fonctionne. P> P> : 10.0.1 ' code> à
Vérifiez-vous si onConnectionFailed est appelé? Mettez un point d'arrêt là-bas et vous trouverez probablement votre réponse.
Nope, pas de chance. Il n'appelle pas non plus.
Les rappels se produisent généralement en moins d'une seconde. Êtes-vous sûr que Connect est appelé?
Buildoogleapiclient (); mgoogleapiclient.Connect ();
Exécutez-vous sur un téléphone ou un simulateur? Êtes-vous sûr que
checkifgooglePlayServicesAvailable code> retourne true?