Android LBS

download Android LBS

of 29

Transcript of Android LBS

  • 7/28/2019 Android LBS

    1/29

    Development

  • 7/28/2019 Android LBS

    2/29

    Android

    Loca+onBasedServices

  • 7/28/2019 Android LBS

    3/29

    GPS Itisaradio-naviga+onsystemconsis+ngof24

    satellitesorbi+ngtheearth,andtheirrespec+vegroundsta+ons.Tocalculateaposi+on,thesesatellitesserveasreferencepointswhencalcula+ngposi+onsrela+vetoamaEerofmeters.

    Inotherwords,GPStriangulatestheposi+onofasatellite,itsgroundsta+onandtheareayouwanttolocate.However,thisisdoneinamorescien+ficandfinitemeasurementoftravel+me,distance,signalexperiences,andatmosphericdelays.

    TomeasureGPSpoints,youmustuseaGPSreceiverthatcalculatesitsposi+onbythesignalstransmiEedtothesatellites.Thesesatellitessendmessagescontaininginforma+onsuchasthe+methemessagewassentandthesatellitesorbitalinforma+on.Onceitreceivesthisinforma+on,theGPSreceiverwillthenmeasurethetransit+meofthesentmessageandcalculatethedistanceoftheGPSreceivertotheeachofthesatellites.

    Theloca+onisthendisplayedthroughGPSmaps

  • 7/28/2019 Android LBS

    4/29

    Celltower

    Analterna+vemethodtodeterminetheloca+onofacellphoneistoes+mateitsdistancetothreenearbycelltowers.

    Distanceofthephonetoeachantennacouldbees2mated

    baseduponthelag2mebetweenthemomentthetowersendsapingtothephoneandreceivestheansweringpingback.

  • 7/28/2019 Android LBS

    5/29

    Long&Lat

    La+tude&LongitudeLa+tudeinGPS-Decimalnota+on:90.00000(North)to-90.000000

    (South)

    LongitudeGPS-Decimalnota+on:180.000000(ast)to-180.000000(West)

  • 7/28/2019 Android LBS

    6/29

    Loca+onbasedservices(LBS)

    Differenttechnologyusedtofindthedevicescurrentloca+on Twomainelements

    Loca+onManager Providehookstotheloca+on-basedservices

    Loca+onProvider achofwhichrepresentsadifferentloca+on-findingtechnologyusedto

    determinethedevicescurrentloca+on

    UsingtheLoca+onManager,youcan: Obtainyourcurrentloca+on TrackMovement Setproximityalertsfordetec+ngmovementintoandoutofaspecified

    area

  • 7/28/2019 Android LBS

    7/29

    Loca+onProvider

    Dependingonthedevice,theremaybeseveraltechnologiesthatAndroidcanusetodeterminethecurrentloca+on

    achtechnology,orLoca+onProvider,willofferdifferentcapabili+esincludingpowerconsump+on,monetarycost,accuracy,andtheabilitytodetermineal+tude,speed,orheadinginforma+on

  • 7/28/2019 Android LBS

    8/29

    Loca+onProvider

    Loca+onManagerclassincludessta+cstringconstantsthatreturntheprovidernameforthetwomostcommonLoca+onProviders Loca+onManager.GPS_PROVIDR Loca+onManager.NTWORK_PROVIDR

    TogetalistofnamesforalltheprovidersBooleanenabledOnly=true;

    Listproviders

    =loca+onManager.getProviders(enabledOnly);

  • 7/28/2019 Android LBS

    9/29

    Loca+onProvider

    Mostscenarios,toexplicitlychoosetheloca+onprovidertouse

    SpecifytherequirementsthataprovidermustmeetandletAndroiddeterminethebesttechnologytouse

    UseCriteriaclasstodictatetherequirementsofaproviderintermsof Accuracy Power Cost Abilitytoreturnvaluesofal+tude,speed,andbearing

  • 7/28/2019 Android LBS

    10/29

    Criteriaxample

    .g.Criteriacriteria=newCriteria();

    criteria.setAccuracy(Criteria.ACCURACY_COARS);

    criteria.setPowerRequirement(Criteria.POWR_LOW);

    criteria.setAl+tudeRequired(false);

    criteria.setBearingRequired(false);criteria.setSpeedRequired(false);

    criteria.setCostAllowed(true);

    StringbestProvider=loca+onManager.getBestProvider(criteria,true);

  • 7/28/2019 Android LBS

    11/29

    Criteria

    IfmorethanoneLoca+onProvidermatches,theonewiththegreatestaccuracyisreturned.

    IfnoLoca+onProvidermeetrequirements,thecriteriaisloosened,inthefollowingorder:PowerusedAccuracyAbilitytoreturnbearing,speedandal+tude

  • 7/28/2019 Android LBS

    12/29

    Loca+onManager

    ThepurposeofLBSistofindthephysicalloca+onofthedevice AccesstoLBSsishandledusingtheLoca+onManagersystem

    Service.

    ToaccesstheLoca+onManager,requestaninstanceoftheLOCATION_SRVICusingthegetSystemServicemethod .g.

    StringserviceString=Context.LOCATION_SRVIC

    Loca+onManagerloca+onManager;

    loca+onManager=

    (Loca+onManager)getSystemService(serviceString);

  • 7/28/2019 Android LBS

    13/29

    Loca+onManager

    BeforeusageofLoca+onManager Adduses-permissiontagstoyourmanifesttosupportaccesstotheLBShardware Defaultproviders

    GPS Network

    GPSproviderrequiresFinepermission NetworkproviderrequiresCoarsepermission

    .g.

  • 7/28/2019 Android LBS

    14/29

    RetrievingLoca+on

    UsegetLastKnownLoca+onmethod .g.

    Stringprovider=Loca+onManager.GPS_PROVIDR

    Loca+onloca+on=loca+onManager.getLastKnowLoca+on(provider);

    DoesnotasktheLoca+onProvidertoupdatethecurrentPosi+on.

    Loca+onobjectreturns La+tude&Longitude Bearing Speed Timetheloca+onfixwastaken

  • 7/28/2019 Android LBS

    15/29

    Geocoding

    Translatebetweenstreetaddressesandlongitude/la+tudemapcoordinates.

    Geocodingclassprovidestwogeocodingfunc+ons:

    ForwardGeocoding Findthela+tudeandlongitudeofanaddress

    ReverseGeocoding Findthestreetaddressforagivenla+tudeandlongitude

  • 7/28/2019 Android LBS

    16/29

    Geocoding

    Resultsarecontextualizedusingalocale Localeisusedtodefineyourusualloca+onandlanguage .g.

    Geocodergeocoder=newGeocoder

    (getApplica+onContext(),Locale.getDefault()); Geocodingfunc+onsreturnalistofAddressobjects Listcancontainseveralpossibleresults,uptoalimit

    specifiedwhenmakingthecall

  • 7/28/2019 Android LBS

    17/29

    Geocoding:warning

    Geocodinglookupsareperformedsynchronously,sotheywillblockthecalling

    thread.

    Slowdataconnec+onscanleadtoanApplica+onUnresponsivedialog

    BesttomovelookupsintoaServiceorbackgroundthread

  • 7/28/2019 Android LBS

    18/29

    ReverseGeocoding

    Returnsstreetaddresssforphysicalloca+ons,specifiedbylatutude/longitudepairs.

    Passthetargetla+tudeandlongitudetoGeocodersgetFromLoca+onmethod

    Returnalistofpossibleaddresses Returnnullifcouldnotresolveanyaddresses

  • 7/28/2019 Android LBS

    19/29

    ReverseGeocoding:xample

    Loca+on=loca+onManager.getLastKnownLoca+on(Loca+onManager.GPS_PROVIDR);

    Doublela+tude=loca+on.getLa+tude();

    Doublelongitude=loca+on.getLongitude();

    Geocodergc=newGeocoder(this,Locale.getDefault());

    Listaddresses=null;

    Try{

    addresses

    =gc.getFromLoca+on(la+tude,longitude,10);

    }catch(IOxcep+one){}

  • 7/28/2019 Android LBS

    20/29

    ForwardGeocoding

    Determinesmapcoordinatesforagivenloca+on CallgetFromLoca+onNameonaGeocoderinstance Passintheloca+onandthemaximumnumberofresultstoreturn

    .g.Listresult=geocoder.getFromLoca+onName(aStreetAddress,

    maxResults);

    Returnedlistofaddresscanincludemul+plepossiblematchesforthenamedloca+on

    achresultwillincludela+tudeandlongitudeandanyaddi+onaladdressinforma+onavaliableforthosecoordinates

  • 7/28/2019 Android LBS

    21/29

    Forwardgeocoding

    Ifnomatchesarefound,nullwillbereturned Availability,accuracy,andgranularityofgeocodingresults

    willdependen+relyonthedatabaseavailableforthearea

    Localespecifiedwhencrea+ngthegeocoderobjectispar+cularlyimportant

    Thelocaleprovidesthegeographicalcontextforinterpre+ngsearchrequests,asthesameloca+onnamescanexistinmul+pleareas.

    Considerselec+ngaregionalLocaletohelpavoidplacenameambiguity

  • 7/28/2019 Android LBS

    22/29

    ForwardGeocoding:xample

    GeocoderfwdGeocoder=Geocoder(this,Locale.US);

    StringstreetAddress=180AngMoKioAvenue8Singapore

    Listloca+ons=null;

    Try{

    loca+ons=fwdGeocoder.getFromLoca+onName(streetAddress,10);

    }

  • 7/28/2019 Android LBS

    23/29

    Map-BasedAc+vi+es

    UsageofMapView Featureaninterac+vemap SupportsbothOverlaysandbypinningViewstogeographical

    loca+ons

    Offercontrolofthemapdisplay,lengyoucontrolthe

    zoom loca+on displaymodes

    Satellite Street Traffic

  • 7/28/2019 Android LBS

    24/29

    Suppor+ngclasses

    MapView ActualMapView

    MapAc+vity BaseclassextendedtocreateanewAc+vitythatcanincludeaMapView.TheMapAc+vity

    classhandlestheapplica+onlifecycleandbackgroundservicemanagementrequiredfordisplayingmaps.Asaresult,canonlyuseaMapViewwithinMapAc+vity-derivedAc+vi+es

    Overlay

    Classusedtoannotatemaps.nablestheusageofacanvastodrawanynumberoflayersthataredisplayedontopofaMapView

    MapController Usedtocontrolthemap,allowingdeveloperstosetthecenterloca+onandzoomlevels

    MyLoca+onOverlay Aspecialoverlaythatcanbeusedtodisplaythecurrentposi+onandorienta+onofthedevice

    ItemizedOverlaysandOverlayItems Usedtogethertocreatealayrofmapmarkers,displayedusingdrawablewithassociatedtext.

  • 7/28/2019 Android LBS

    25/29

    Crea+ngamap-basedac+vity

    CreateanewAc+vitythatextendsMapAc+vity AddaMapViewtothelayouttodisplayaGoogleMapsinterfaceelement Maplibraryisnotastandardpackage,itmustbeexplicitlyincludedinthe

    applica+onmanifest

    Addusingauses-librarytagwithintheapplica+onnode .g.

    Googlemapdownloadsthemap+lesondemand Requirespermissiontousetheinternet

    .g.

  • 7/28/2019 Android LBS

    26/29

    xample:Java

    publicclassmyMapextendsMapAc+vity{

    privateMapViewmapView;

    /**Calledwhentheac+vityisfirstcreated.*/

    @OverridepublicvoidonCreate(BundlesavedInstanceState){

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    mapView=(MapView)findViewById(R.id.map_view);

    }

    }

  • 7/28/2019 Android LBS

    27/29

    xample:Xml

  • 7/28/2019 Android LBS

    28/29

    xample:Manifest

  • 7/28/2019 Android LBS

    29/29

    Moreexamples..

    @Prac+cal