Android: get la posizione corrente dell'utente senza utilizzare gps o internet

È ansible get la posizione corrente dell'utente senza utilizzare gps o internet ? Voglio dire con l'aiuto del fornitore di networking mobile. Qualcuno può aiutarmi?

  • Confusione con il selettore "più piccolo 600 dp"
  • Eccezione nel thread "principale" java.lang.NoClassDefFoundError: junit / textui / ResultPrinter Dopo l'aggiornamento a Yosemite
  • Pulsante Android Actionbar Su verso il button di sistema Back
  • La window di dialogo non cancellabile viene ignorata nel button di ricerca
  • Android risparmia Bitmap sulla scheda SD
  • il file m3u8 non è in esecuzione in emulatore Android
  • Come catturare una foto dalla camera senza intenzione
  • Mettere le autorizzazioni a manifestare il progetto di libreria Android .aar
  • Quando utilizzare Layout Constraint e come utilizzarlo in modo efficiente?
  • Imansible risolvere risorse @ id / visible quando si utilizza TextInputLayout
  • Come prendere lo screenshot in modo programmato?
  • Come Android confronta le intenzioni in sospeso?
  • 6 Solutions collect form web for “Android: get la posizione corrente dell'utente senza utilizzare gps o internet”

    Quello che stai cercando di fare è get la posizione utilizzando LocationManager.NETWORK_PROVIDER invece di LocationManager.GPS_PROVIDER . Il NETWORK_PROVIDER risolverà sul GSM o su wifi, che è sempre disponibile. Ovviamente con wifi off, GSM sarà utilizzato. Tieni presente che l'utilizzo della networking cellulare è esatta di circa 500 metri.

    http://developer.android.com/guide/topics/location/obtaining-user-location.html ha alcune ottime informazioni e codice di esempio.

    Dopo aver eseguito la maggior parte del codice in OnCreate() , aggiungere questo:

     // 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); 

    Potresti anche onLocationChanged() tua attività per implementare la class LocationListener e attuare onLocationChanged() nella tua attività.

    Ottenendo il getLastKnownLocation non effettua effettivamente una correzione.

    Tieni presente che questo potrebbe iniziare il provider, ma se l'utente ha mai ottenuto una località prima, non credo che lo farà. I documenti non sono davvero troppo chiari su questo.

    Secondo i documenti getLastKnownLocation:

    Restituisce una posizione che indica i dati dell'ultima soluzione nota di posizione ottenuta dal fornitore specificato. Ciò può essere fatto senza avviare il fornitore.

    Ecco un breve snippet:

     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; } } 

    Devi anche aggiungere nuove autorizzazioni a AndroidManifest.xml

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

    Qui è ansible get la posizione corrente dell'utente senza l'uso di GPS e Network Provider.

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

    2. Fare clic qui per il tuo riferimento

     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; } } 

    Hai un'occhiata a Google Maps Geolocation Api? Geolocazione Google Map

    Questo è semplice RestApi, basta richiedere una richiesta POST, il servizio restituirà una posizione con precisione in metri

    Distinti saluti

    No, non è ansible get la posizione senza utilizzare GPS o internet.

    Tecniche di localizzazione basate sul lavoro WiFi, Cellular o Bluetooth con l'aiuto di un grande database che viene costantemente aggiornato. Un dispositivo esegue la scansione degli ID trasmettitori e li invia in una query tramite Internet a un servizio come Google, Apple o Skyhook. Quel servizio risponde con una posizione basata su indagini wireless precedenti da località conosciute. Senza l'accesso a Internet, è necessario disporre di una copia locale di tale database e mantenerla aggiornata. Per uso globale, questo è molto impraticabile.

    Teoricamente, un provider di telefonia mobile potrebbe fornire solo un servizio dati locale ma non avere accesso a Internet e quindi rispondere alle domande di località dai dispositivi mobili. I fornitori mobili non lo fanno; nessuno vuole pagare per questo tipo di accesso limitato ai dati. Se si dispone di un servizio di dati tramite il proprio provider di telefonia mobile, è ansible accedere a Internet.

    In breve, utilizzando LocationManager.NETWORK_PROVIDER o android.hardware.location.network per get la posizione richiede l'utilizzo di Internet.

    Utilizzando l'ultima posizione conosciuta richiede di avere accesso GPS o internet di recente. Se avevi internet, probabilmente puoi regolare la tua posizione o le impostazioni per get nuovamente internet. Se il dispositivo non ha avuto accesso GPS o Internet, l'ultima funzionalità di posizione nota non ti aiuterà.

    Senza GPS o internet potresti:

    1. Scatta le immagini del cielo notturno e utilizza l'ora corrente per stimare la tua posizione in base a un grafico a stelle. Ciò richiederebbe probabilmente attrezzature aggiuntive per garantire che gli angoli per le tue immagini siano misurati correttamente.
    2. Utilizzare un accelerometro per monitorare la posizione a partire da una posizione nota. L'accumulo di errori in questo tipo di approccio rende impraticabile per la maggior parte delle situazioni.
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.