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?

  • La méthode WebView + WebChromeClient onCreateWindow n'est pas appelée target = "_ blank"
  • Supprimer la barre d'action par défaut d'Android
  • Intégrez mon application à Contact
  • Comment puis-je changer le langage de ma demande?
  • Android DatePicker ne modifie que le mois et l'année
  • Comment déterminer si l'application Android est lancée avec l'instrumentation de test JUnit?
  • Existe-t-il un moyen d'importer un modèle 3D dans Android?
  • Pourquoi Android utilise-t-il plus d'énfases?
  • Erreur lors de la création de MediaPlayer avec Uri ou fichier dans des actifs
  • "Impossible d'obtenir la bibliothèque système pour le projet" après avoir mis à niveau vers Android SDK 2.3 et ADT 8.0
  • Android 4.2.2 Device Offline
  • Images Blurry SVG dans Chrome pour Android
  • 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.