czwartek, września 02, 2010

Android, lokalizacja i koszty

Z zebranych w "eksperymencie" danych wynika, że lokalizowanie na podstawie sieci komórkowej/WiFi może być płatne.

Na 6 testów, w 5 zwrócona została wartość "true" z funkcji hasMonetaryCost() dla dostawcy "network", czyli właśnie dla ustalania pozycji na podstawie sieci komórkowej/WiFi.

Testy przeprowadziło kilka osób, którym dziękuję :-) na G1, Nexus One, HTC Desire, Motoroli Droid, HTC Legend, Samsungu Galaxy S (akurat tutaj wynik dla network był "false").

Na podstawi tych wyników zaryzykuje wniosek, że twierdzenie iż ustalanie pozycji na podstawie sieci może kosztować znajduje uzasadnienie w danych pomiarowych ;-)

A teraz krótko wyjaśnienie czemu to ustalanie pozycji może kosztować.

Telefon gdy ustala pozycję przy pomocy GPS bazuje na danych od satelitów GPSa, dokładniej na czasie od każdego z satelitów, oraz na tym który to satelita. Znając te dane z kilku satelitów GPS jest w stanie wyliczyć pozycję na powierzchni kuli ziemskiej.
Gdy GPS nie jest w stanie "zobaczyć" satelitów to zaczynają się problemy.
Wtedy wykorzystywany jest trick polegający na tym, że elementy infrastruktury sieciowej takie jak BTSy czy HotSpoty nie należą do najbardziej ruchliwych elementów świata. Zwykle pozostają w spoczynku. Dlatego jeżeli ktoś ma bazę danych z wszelkimi dostępnymi danymi dotyczącymi tych elementów infrastruktury to może pokusić się o wyznaczanie pozycji terminala, który prześle do serwerów z tymi danymi informacje o BTSach i/lub sieciach WiFi, które "słyszy".
Ale tutaj jest konieczne przesłanie danych o tym co telefon "słyszy" do serwerów które mają dane pozwalające na wyznaczenie lokalizacji, i właśnie ten transfer danych może kosztować.

Ale developer nie powinien się załamywać :-) Android daje możliwość określenia kryteriów providera, który dostarczy lokalizację, i w tych kryteriach jedną ze zmiennych jest to czy zgadzamy się na koszty, czy nie.


Podobne postybeta
Czy ustalanie pozycji w Androidzie może kosztować?
Zmarł Arthur C. Clarke :-(
Android i lokalizacja. Czego używać zagranicą?
ISS
Zadanie - czyżbym znalazł rozwiązanie po 10 latach od momentu gdy je zobaczyłem? ;-)

1 komentarz:

  1. OK, to glownie test tego czy moge pisac komentarze z Bloggeroida [a ze pisze z emulatora to nie mam polskich znaczkow bo sa niewygodne ;-)].

    Z tego co widzialem w zrodlach Androida, tylko w przypadku telefonow CDMA, czy raczej BTSow CDMA siec dostarcza telefonowi lokalizacji stacji bazowej.
    Z drugiej jednak strony wiem, ze niektorym udalo sie uzyskac jakas tam pozycje przy wylaczonym dostepie do sieci w ogole z wylaczonym GPSem.... i to by znaczylo, ze albo jakos w GSM/UMTS ta pozycaj jest przesylana, albo co tez mozliwe, Androida pamieta niektore dane, moze ten caly provider "passive" dziala tak, ze na podstawie dostepnych danych (tutaj LAC i inne dane o BTSie GSM) sprawdza ostatnia znana pozycje z takimi danymi?
    Mialoby sens, ale jak na razie tego w zrodlach nie znalazlem :-)

    OdpowiedzUsuń