Android: uzyskaj aktualną lokalizację użytkownika bez korzystania z gps lub Internetu

Czy możliwe jest uzyskanie bieżącej lokalizacji użytkownika bez użycia gps lub internet? Mam na myśli z pomocą operatora sieci komórkowej. Czy ktoś może mi pomóc?

Author: mattm, 2011-07-14

7 answers

To, co chcesz zrobić, to uzyskać pozycję za pomocą LocationManager.NETWORK_PROVIDER zamiast LocationManager.GPS_PROVIDER. NETWORK_PROVIDER rozwiąże się na GSM lub wifi, które kiedykolwiek dostępne. Oczywiście z wifi wyłączone, GSM będzie używany. Należy pamiętać, że korzystanie z sieci komórkowej jest dokładne do 500m.

Http://developer.android.com/guide/topics/location/obtaining-user-location.html ma naprawdę świetne informacje i przykładowy kod.

Po wykonaniu większości kodu w OnCreate(), Dodaj to:

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

Możesz również sprawić, aby Twoja aktywność zaimplementowała klasę LocationListener i tym samym zaimplementowała onLocationChanged() w swojej aktywności.

 78
Author: Ian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-14 14:55:45

Poprzez uzyskanie getLastKnownLocation sam nie inicjujesz naprawy.

Należy pamiętać, że to może uruchomić dostawcę, ale jeśli użytkownik kiedykolwiek dostał lokalizację wcześniej, nie sądzę, że będzie. Doktorzy nie są zbyt jasne w tej sprawie.

Według docs getLastKnownLocation:

Zwraca lokalizację wskazującą dane z ostatniej znanej lokalizacji fix uzyskany od danego dostawcy. Można to zrobić bez rozpoczęcie dostawca.

Oto krótki fragment:

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

Musisz również dodać nowe uprawnienia do AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 14
Author: hwrdprkns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-11 09:32:05

Tutaj można uzyskać aktualną lokalizację Użytkownika bez użycia GPS i dostawcy sieci.

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

2.Kliknij Tutaj, Aby Uzyskać Informacje

 4
Author: Mahendran Candy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-16 07:11:51
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;
    }
}
 3
Author: Makvin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-17 06:29:03

Nie, Nie można obecnie uzyskać lokalizacji bez korzystania z GPS lub Internetu.

Techniki lokalizacji oparte na WiFi, komórkach lub Bluetooth działają przy pomocy dużej bazy danych, która jest stale aktualizowana. Urządzenie skanuje w poszukiwaniu identyfikatorów nadajnika, a następnie wysyła je w zapytaniu przez internet do usługi takiej jak Google, Apple lub Skyhook. Usługa ta odpowiada lokalizacją na podstawie wcześniejszych bezprzewodowych ankiet ze znanych lokalizacji. Bez dostępu do Internetu, musisz mieć lokalną kopię takiej bazy danych i aktualizować ją. W przypadku zastosowań globalnych jest to bardzo niepraktyczne.

Teoretycznie, operator komórkowy może świadczyć tylko lokalne usługi danych, ale nie ma dostępu do Internetu, a następnie odpowiadać na pytania dotyczące lokalizacji z urządzeń mobilnych. Operatorzy telefonii komórkowej tego nie robią; nikt nie chce płacić za tego rodzaju ograniczony dostęp do danych. Jeśli korzystasz z usług transmisji danych za pośrednictwem operatora komórkowego, masz dostęp do Internetu.

Krótko mówiąc, za pomocą LocationManager.NETWORK_PROVIDER lub android.sprzęt.miejsce.sieć, aby uzyskać lokalizację, wymaga korzystania z Internetu.

Korzystanie z ostatniej znanej pozycji wymaga posiadania GPS lub dostępu do Internetu bardzo niedawno. Jeśli właśnie miałeś internet, prawdopodobnie możesz dostosować swoją pozycję lub ustawienia, aby ponownie uzyskać internet. Jeśli Twoje urządzenie nie miało GPS lub dostępu do Internetu, funkcja ostatniej znanej pozycji nie pomoże.

Bez GPS i internetu można:

  1. Zrób zdjęcia nocnego nieba i Użyj bieżącego czasu, aby oszacować swoją lokalizację na podstawie mapy gwiazd. Prawdopodobnie wymagałoby to dodatkowego sprzętu, aby upewnić się, że kąty dla zdjęć są prawidłowo mierzone.
  2. użyj akcelerometru, aby śledzić lokalizację zaczynając od znanej pozycji. Nagromadzenie błędów w tego rodzaju podejściu sprawia, że jest to niepraktyczne w większości sytuacji.
 2
Author: mattm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-03 16:43:41

Przyjrzałeś się Google Maps geolocation Api? Google Map Geolokalizacja

Jest to proste RestApi, wystarczy wysłać żądanie, usługa zwróci lokalizację z dokładnością w metrach

Best regard

 0
Author: raditya gumay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-11 09:08:04

Wydaje się, że możliwe jest śledzenie smartfona bez korzystania z GPS.

FWIW.

Źródła:

"PinMe: śledzenie użytkowników smartfonów na całym świecie"

"Jak namierzyć komórkę bez GPS-i zgody"

Nie znalazłem jeszcze linku do ostatecznego kodu drużyny. Kiedy to zrobię, napiszę, jeśli inny tego nie zrobił.

do zobaczenia.

 0
Author: a female faust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-31 21:41:32