web-dev-qa-db-fra.com

locationManager.getLastKnownLocation () renvoie null

je ne comprends pas pourquoi locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); retourne l'emplacement nul. J'ai donné toutes les autorisations mais sa réutilisation null.

          if (isGPSEnabled) {
            if (location == null) {
                locationManager.requestLocationUpdates(
                        LocationManager.GPS_PROVIDER,
                        MIN_TIME_BW_UPDATES,
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                Log.d("GPS", "GPS Enabled");
                if (locationManager != null) {
                    location = locationManager
                            .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                    if (location != null) {
                        latitude = location.getLatitude();
                        longitude = location.getLongitude();
                    }
                }
            }
        }
15
user3291590

J'ai eu exactement le même problème. C'est parce que mon appareil ne stockait pas un dernier emplacement connu. Je suis simplement allé sur Google Maps et j'ai localisé ma position avec le GPS, puis une valeur a été retournée pour getLastKnownLocation ()

15
2bard

Vous pouvez demander des mises à jour de localisation comme celle-ci

mLocationManager.requestLocationUpdates(myProvider, 0, 0, locationListener);

puis lors du premier rappel dans locationListener.onLocationChanged définissez vos coordonnées. N'oubliez pas d'appeler mLocationManager.removeUpdates(locationListener)

12
aknopov

Selon le documentation , il renvoie null, si le périphérique n'est pas au courant du dernier emplacement connu. Le GPS ne peut probablement pas vous localiser. Cela prend environ une minute ou plus, de toute façon. Essayez donc de sortir, sous le ciel clair, loin des grands immeubles, et attendez que le GPS puisse vous localiser.

4
Farouk Touzi

J'ai utilisé cette méthode pour obtenir l'emplacement, je pense que cela vous aidera

private void startReceivingLocationUpdates() {

    if (mLocationManager == null) {

        mLocationManager = (Android.location.LocationManager)
                mContext.getSystemService(Context.LOCATION_SERVICE);

    }

    if (mLocationManager != null) {

        try {

            mLocationManager.requestLocationUpdates(

                    Android.location.LocationManager.NETWORK_PROVIDER,
                    1000,
                    0F,
                    mLocationListeners[1]);

        } 
     catch (SecurityException ex) 
         {
            Log.i(TAG, "fail to request location update, ignore", ex);

        } 

       catch (IllegalArgumentException ex)
       {
            Log.d(TAG, "provider does not exist " + ex.getMessage());
        }

        try {

            mLocationManager.requestLocationUpdates(

                    Android.location.LocationManager.GPS_PROVIDER,
                    1000,
                    0F,
                    mLocationListeners[0]);

            if (mListener != null) mListener.showGpsOnScreenIndicator(false);


        }
       catch (SecurityException ex) {

            Log.i(TAG, "fail to request location update, ignore", ex); } 

        catch (IllegalArgumentException ex) {

            Log.d(TAG, "provider does not exist " + ex.getMessage());  }

        Log.d(TAG, "startReceivingLocationUpdates");
    }
}
3
Pawan asati

Lorsque vous utilisez le GPS en tant que fournisseur, il donne votre résultat en 1 à 2 minutes, vous devez donc vérifier cela de manière litigieuse lorsque vous arrêtez la localisation et le fournisseur de réseau vous donne une localisation immédiate lorsque vous le demandez. Ainsi, vous ne recevez pas de localisation immédiate dans le fournisseur GPS.

Le GPS prend 1 à 2 seulement la première fois puis après il vous donnera la localisation sur appel ...

1
Jayesh Khasatiya