Android LBS
-
Upload
altitudeaptitude -
Category
Documents
-
view
219 -
download
0
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