Pourquoi est-FusedLocationApi.getLastLocation null

Je suis en train d'essayer d'obtenir de l'emplacement à l'aide de FusedLocationApi.getLastLocation et j'ai obtenu les autorisations de position dans le fichier manifeste:

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

Cependant, je suis null lorsque je demande l'emplacement du système. Je viens de tester d'allumer ou d'éteindre les services de localisation de sorte qu'il peut être lié à ce (bien sûr, c'est quand je suis en train d'essayer cela). Mais même après le retour null, je suis en attente pour onLocationChanged d'être appelé et il n'est jamais appelé. J'ai aussi vu une question similaire ici: FusedLocationApi.getLastLocation toujours null

Voici mon code:

 protected LocationRequest createLocationRequest() {
    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(120000);
    mLocationRequest.setFastestInterval(30000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
    return mLocationRequest;
}

protected GoogleApiClient getLocationApiClient(){
    return new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
}

LocationRequest locationRequest = createLocationRequest(); 

@Override
public void onLocationChanged(Location location) {
    App.setLocation(location); //NEVER CALLED
}

@Override
public void onConnected(Bundle bundle) {
    App.setLocation(LocationServices.FusedLocationApi.getLastLocation(locationApiClient)); //RETURNS NULL
    LocationRequest locationRequest = createLocationRequest();
    LocationServices.FusedLocationApi.requestLocationUpdates(locationApiClient, locationRequest, this);
}

Et sur onCreate de mon application:

locationApiClient = getLocationApiClient();
locationApiClient.connect();

this est mon objet application.
Pourquoi suis-je nul (oui, je ne sais que cela peut être null dans quelques rares cas, comme indiqué dans les documents, mais je suis TOUJOURS présent, il n'est pas rare) et toujours pas à obtenir l'emplacement des mises à jour par la suite? C'est un véritable appareil (Samsung Galaxy S3) sans carte SIM, si cela aide.

  • Il n'y a pas ACCESS_GPS ou ACCESS_LOCATION autorisations dans Android. Au-delà de ça, il est très difficile de vous aider sans code.
  • Je ne sais pas comment j'ai fini cette manière, de toute façon, il ne devrait pas affecter le comportement.
  • êtes-vous tester sur un périphérique réel? en plus de la documentation dit, Si le client n'est pas connecté null sera retourné. assurez-vous que votre client est connecté à l'ensemble.
  • Pourriez-vous collez le code où vous initialiser l'api client et où vous aurez null?
  • pour éviter null emplacement essayez d'utiliser à la fois les fournisseurs GPS_PROVIDER et NETWORK_PROVIDER et donc ajouter un réseau qui utilise des autorisations spécifiques
  • oui, c'est un vrai appareil, voir ma mise à jour de question.
  • mise à jour de la question.
  • Poyrazoğlu ai du vous de vérifier ma réponse.Vous pouvez également le vérifier par paramétrer LocationRequest.PRIORITY_HIGH_ACCURACY, car il y a peut être pas une telle application qui geting emplacement de mise à jour de votre appareil.
  • La solution de cette?
  • oui, il suffit de suivre la première réponse.
  • Je demande à tous de vous s'il vous plaît prendre un coup d'oeil à cette réponse stackoverflow.com/a/35833552/3278589
  • la réponse est exactement la même merde, c'est tout sur ce post. La question n'est pas sujet de l'emplacement des rappels, la question est concernant FusedLocationProvider retourner null pour getLastLocation. Je suis pour ma part de le voir dire null, rapport correctement, puis le rapport de la valeur null à nouveau quelques secondes plus tard, sur certains appareils.