Android: obtenez l'emplacement actuel de l'utilisateur sans utiliser GPS ou internet

Est-il possible d'obtenir l'emplacement actuel de l'utilisateur sans utiliser gps ou internet ? Je veux dire avec l'aide d'un fournisseur de réseau mobile. Quelqu'un peut-il m'aider?

  • Attribut de réglage de l'élément enfant de la disposition incluse
  • Comparaison de Layer, Applozic, Quickblox et SendBird pour WhatsApp rapide comme une messagerie dans une application Android
  • Android appuie-t-il une notification instantanée en temps réel?
  • Mot de passe oublié Keystore, en pensant à la détection de Brute-Force. Va-t-il corrompre le magasin de clés?
  • Comment calculer la largeur de la police de caractères en pixels?
  • Fonctionnalité Android UINavigationController-like
  • Gestionnaire d'emplacement Android, Obtenez l'emplacement GPS, si aucun GPS ne se rend alors à l'emplacement du fournisseur de réseau
  • Problème avec EditText d'Android: KeyListener
  • Comment puis-je modifier le parent hiérarchique d'une activité?
  • Comment ajouter de nouveaux champs au contact?
  • Comment obtenir tous les éléments d'un ArrayAdapter?
  • Android listview row supprimer l'animation
  • 5 Solutions collect form web for “Android: obtenez l'emplacement actuel de l'utilisateur sans utiliser GPS ou internet”

    Ce que vous cherchez à faire, c'est obtenir le poste à l'aide de LocationManager.NETWORK_PROVIDER au lieu de LocationManager.GPS_PROVIDER . Le NETWORK_PROVIDER résolvent sur le GSM ou le wifi, ce qui est toujours disponible. De toute évidence, avec le wifi, le GSM sera utilisé. Gardez à l'esprit que l'utilisation du réseau cellulaire est exacte à fondamentalement à 500 m.

    http://developer.android.com/guide/topics/location/obtaining-user-location.html possède de très bonnes informations et un exemple de code.

    Après avoir terminé avec la plupart du code dans OnCreate() , ajoutez ceci:

     // Acquire a reference to the system Location Manager LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // Called when a new location is found by the network location provider. makeUseOfNewLocation(location); } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; // Register the listener with the Location Manager to receive location updates locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 

    Vous pouvez également implémenter votre activité dans la classe LocationListener et ainsi implémenter onLocationChanged() dans votre activité.

    En obtenant la fonction getLastKnownLocation vous getLastKnownLocation pas vraiment un correctif vous-même.

    Soyez conscient que cela pourrait commencer le fournisseur, mais si l'utilisateur a déjà eu un emplacement avant, je ne le pense pas. Les documents ne sont pas très clairs sur ce point.

    Selon le docs getLastKnownLocation:

    Renvoie un emplacement indiquant les données du dernier correctif de localisation connu obtenu auprès du fournisseur donné. Cela peut se faire sans démarrer le fournisseur.

    Voici un extrait rapide:

     import android.content.Context; import android.location.Location; import android.location.LocationManager; import java.util.List; public class UtilLocation { public static Location getLastKnownLoaction(boolean enabledProvidersOnly, Context context){ LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); Location utilLocation = null; List<String> providers = manager.getProviders(enabledProvidersOnly); for(String provider : providers){ utilLocation = manager.getLastKnownLocation(provider); if(utilLocation != null) return utilLocation; } return null; } } 

    Vous devez également ajouter une nouvelle autorisation à AndroidManifest.xml

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

    Il est possible d'obtenir l'emplacement actuel de l'utilisateur sans l'utilisation du GPS et du fournisseur de réseau.

    1 . Convert cellLocation to real location (Latitude and Longitude), using "http://www.google.com/glm/mmap"

    2. Cliquez ici pour votre référence

     boolean gps_enabled = false; boolean network_enabled = false; LocationManager lm = (LocationManager) mCtx .getSystemService(Context.LOCATION_SERVICE); gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER); Location net_loc = null, gps_loc = null, finalLoc = null; if (gps_enabled) gps_loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (network_enabled) net_loc = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (gps_loc != null && net_loc != null) { //smaller the number more accurate result will if (gps_loc.getAccuracy() > net_loc.getAccuracy()) finalLoc = net_loc; else finalLoc = gps_loc; // I used this just to get an idea (if both avail, its upto you which you want to take as I've taken location with more accuracy) } else { if (gps_loc != null) { finalLoc = gps_loc; } else if (net_loc != null) { finalLoc = net_loc; } } 

    Avez-vous regardé Google Maps Geolocation Api? Google Map Geolocation

    Ceci est simple RestApi, vous avez juste besoin de POST une demande, le service renverra un emplacement avec précision en mètres

    Sincères salutations

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.