location-aware computing · apis for location-based services 28 q geocoding is the process of...
TRANSCRIPT
Location-aware Computing APIs for Location-based Services
Prof. Marco Di Felice Department of Computer Science and Engineering
University of Bologna
Context-Aware Systems
http://www.cs.unibo.it/difelice/
APIs for Location-based services
2APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
COMPONENTSofLOCATION-BASEDSERVICESARCHITECTURE
Source:http://geoawesomeness.com/
Ø Wewillstillfocusonthepositioningtechnologies,butconsideringavailablelocalizationAPIs.
Location-aware services
3
GeoDataACQUISITION
GeoDataMODELING
GeoDataSTORAGE
GeoDataVISUALIZATION
GeoDataAnalytics
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Location-aware services
4LOCATIONINTELLIGENCE&SPATIALDATAANALYSIS
MARCODIFELICE
APIsforOUTDOORLOCALIZATION(ANDGEO-INFORMATIONRETRIEVAL)
WEBSERVICES
APIs for Location-based services
5
q SeveralgeoservicesandgeolocationAPIsareavailable(atleastforoutdoorscenarios).
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
APIs for Location-based services
6
q GeolocationAPIsforlocation-basedservices
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
http://www.programmableweb.com/news/61-geolocation-apis-panoramio-google-gears-and-yahoo/2012/03/14
7
APIs for Location-based services
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
q RepresentationalStateTransfer(REST)!setofarchitecturalprinciplesfordistributedsystems.1. ClientServeràInteractionsbasedonarequest-response
communicationpattern.2. UniformInterfacesàUnambigousstandardinterfacefor
accessingtheresources(e.g.theURI).3. Statelessàclientcontextandstatearenotstoredontheserver.4. Cacheableàdataarecachedbyclientsandintermediaries.5. LayeredSystemàintermediatecomponentscanhidewhatis
behindthem(e.g.contentdeliverynetworks).
APIs for Location-based services
8
q SeveralgeoservicesandgeolocationAPIsareavailable(atleastforoutdoorscenarios).
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
APIs for Location-based services
9
q W3CGeolocationAPIisaneffortbytheWorldWideWebConsortium(W3C)tostandardizeaninterfaceforretrievingthegeographicallocationinformationforaclient-side(Web)device.² HTML5GeolocationAPIissupportedbymostofthebrowser² Geolocationdata:latitude,longitude,accuracy,altitude,
altitude,altitudeAccuracy,speed,heading,timestamp² Mainmethods:getCurrentPosition()andwatchPosition()
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
APIs for Location-based services
10
q HTML5GeolocationAPIcodeexample
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
interfaceGeolocation{voidgetCurrentPosition(PositionCallbacksuccessCallback,optionalPositionErrorCallbackerrorCallback,optionalPositionOptionsoptions);longwatchPosition(PositionCallbacksuccessCallback,optionalPositionErrorCallbackerrorCallback,optionalPositionOptionsoptions);voidclearWatch(longwatchId);};
Documentationandsourcecodeavailableat:http://www.w3schools.com/html/html5_geolocation.asp
APIs for Location-based services
11
q HTML5GeolocationAPIcodeexample
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
<script>varx=document.getElementById("demo");functiongetLocation(){if(navigator.geolocation){navigator.geolocation.getCurrentPosition(showPosition);}else{x.innerHTML="Geolocationisnotsupportedbythisbrowser.";}}functionshowPosition(position){x.innerHTML="Latitude:"+position.coords.latitude+"<br>Longitude:"+position.coords.longitude;}</script>
Documentationandsourcecodeavailableat:http://www.w3schools.com/html/html5_geolocation.asp
APIs for Location-based services
12
q HTML5GeolocationAPIcodeexample
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:http://www.w3schools.com/html/html5_geolocation.asp
APIs for Location-based services
13
q SeveralgeoservicesandgeolocationAPIsareavailable(atleastforoutdoorscenarios).
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
APIs for Location-based services
14
q GoogleMapsAPI
² HTTP-basedWebserviceAPI
² WebclientAPI(Javascript)
² ProgramminglanguageAPI(Java,Python)
² MobileOSAPI(Android,iOS)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
15
q GoogleMapswebservicesareacollectionofHTTPinterfacestoGoogleservicesprovidinggeographicdataformap-relatedapplications.² RESTfulservices;resourcesareidentifiedbyaidentifier,and
manipulatedbyusingacommonsetofHTTPmethods.² OutputsarereturnedinJSON/XMLformats.² Aregistrationkeyisneededtoaccesstheservices.
https://console.developers.google.com
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
16
q MainGoogleMapswebservices² GoogleMapsGeolocationAPI² GoogleMapsElevationAPI² GoogleMapsGeocodingAPI² GoogleMapsDirectionsAPI² GoogleMapsRoadsAPI² GoogleMapsTimeZoneAPI² GooglePlacesAPI
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
17
q TheGoogleMapsGeolocationAPIprovidesthecurrentlocation(plustheaccuracyradius)
² Geolocationisperformedbyconsideringfingerprinting/triangulationtechniques,basedoncellulartowersandWiFinetworkstheuserscandetectattheirlocations(providedasinputs).
² Requests/responsesareformattedinJSON,andtransmittedusingPOSTmethodsoverHTTPS.
² TheAPIkeyisneededtoidentifytheapplication(andthequota)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
18
q TherequestbodymustbeformattedinJSON.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
{"homeMobileCountryCode":310,"homeMobileNetworkCode":410,"radioType":"gsm","carrier":"Vodafone","considerIp":"true","cellTowers":[//CellTowerObjects.],"wifiAccessPoints":[//WiFiAccessPointObjects.]}
HOMENETWORKCOUNTRYCODE
HOMENETWORKNETWORKCODE
MOBILERADIOTYPE:gsm,lte,cdma,wcdma
UseIPaddresswhenwirelessnetworkinfoarenotavailable
Networkprovidername
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
19
q TherequestbodymustbeformattedinJSON.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
{"cellTowers":[{"cellId":42,"locationAreaCode":415,"mobileCountryCode":310,"mobileNetworkCode":410,"age":0,"signalStrength":-60,"timingAdvance":15}]}
CELLTOWERSOBJECTEXAMPLE
TIMEOFARRIVALfrommobilenodetothebasestation
RECEIVEDSIGNALSTRENGTH(indbm)
UniqueCELLIDENTIFIER(mandatory)
AreaandNetworkIdentifiers(mandatory)
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
20
q TherequestbodymustbeformattedinJSON.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
"wifiAccessPoints":[{"macAddress":"01:23:45:67:89:AB","signalStrength":-65,"age":0,"channel":11,"signalToNoiseRatio":40}]
WIFIOBJECTEXAMPLE
NOISEoverRECEIVEDSIGNAL(indb)
WIFIchannelusedbytheAP
MACADDRESSoftheAP(mandatory)
ReceivedSignalStrength(RSS)indbm
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
21
q TheresponsebodymustbeformattedinJSON.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
{"location":{"lat":51.0,"lng":-0.1},"accuracy":1200.4}
Estimatedlatitudeandlongitudeoftheuser(indegrees)
Localizationerror,definedasaradius(inmeters)ofacirclecenteredattheestimatedlocationreturnedabove.
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
22
q MainGoogleMapswebservices² GoogleMapsGeolocationAPI² GoogleMapsElevationAPI² GoogleMapsGeocodingAPI² GoogleMapsDirectionsAPI² GoogleMapsRoadsAPI² GoogleMapsTimeZoneAPI² GooglePlacesAPI
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
23
q TheGoogleMapsElevationAPIallowsdeterminingelevationdataforalllocationsonthesurfaceoftheearth,includingdepthlocationsontheoceanfloor.² Elevationdataareavailablethroughmeasurementsorinterpolation.
² Requests/responsesareformattedinJSONorXML,andtransmittedusingPOSTmethodsoverHTTPS.
² Requestscanbeissuedforfordiscretelocationsorforanorderedpath
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/elevation/outputFormat?parameters
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
24
q Positionalrequestsareindicatedthroughuseofthelocationsparameter,indicatingelevationrequestsforthespecificlocations(latitude/longitudevalues).
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&key=YOUR_API_KEY
{"results":[{"elevation":1608.637939453125,"location":{"lat":39.73915360,"lng":-104.98470340},"resolution":4.771975994110107}],"status":"OK”} Minimumdistanceofinterpolation(inmeters)
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
25
q Positionalrequestscanrefertotheelevationdataalongapathatspecifiedintervals.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/elevation/json?path=36.578581,-118.291994|36.23998,-116.83171&samples=3&key=YOUR_API_KEY
² Pathisacoupleoflatitude/longitudeofthestartandendpoint² Sampleisthenumberofsamplepointsalongapathforwhichtoreturnelevationdata
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
26
q Positionalrequestscanrefertotheelevationdataalongapathatspecifiedintervals.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
{"results":[{"elevation":4411.941894531250,"location":{"lat":36.5785810,"lng":-118.2919940},"resolution":19.08790397644043},
{"elevation":1381.861694335938,"location":{"lat":36.41150289067028,"lng":-117.5602607523847},"resolution":19.08790397644043},{"elevation":-84.61699676513672,"location":{
"lat":36.239980,"lng":-116.831710},"resolution":19.087903}],"status":"OK"}
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
27
q MainGoogleMapswebservices² GoogleMapsGeolocationAPI² GoogleMapsElevationAPI² GoogleMapsGeocodingAPI² GoogleMapsDirectionsAPI² GoogleMapsRoadsAPI² GoogleMapsTimeZoneAPI² GooglePlacesAPI
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
28
q Geocodingistheprocessofconvertingaddressesintogeographiccoordinates(latitude/longitude).
² Reversegeocodingistheprocessofconvertinggeocoordinates(latitude/longitude)intosymbolicaddresses(e.g.nation,city,address).
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/geocode/output?parameters
² OutputcanbeJSONorXML² Parametersaredifferentforgeocodingandreversegeocoding
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
29
q Geocodingistheprocessofconvertingaddressesintogeographiccoordinates(latitude/longitude)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
PARAMETERSOFTHEGEOCODINGSERVICE
² Address!Thestreetaddressintheformatusedbythenationalpostalservice² ComponentsàAcomponentfilterofthegeocodingrequest
ü routematcheslongorshortnameofaroute.ü localitymatchesagainstbothlocalityandsublocalitytypes.ü administrative_areamatchesalltheadministrative_arealevels.ü postal_codematchespostal_codeandpostal_code_prefix.ü countrymatchesacountrynameoratwoletterISO3166-1countrycode.
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
30APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
{"results":[{…"formatted_address":"1600AmphitheatreParkway,
MountainView,CA94043,USA","geometry":{"location":{"lat":37.4224764,"lng":-122.0842499},"location_type":"ROOFTOP”,
"viewport":{"northeast":{"lat":37.4238253802915,"lng":-122.0829009197085},"southwest":{"lat":37.4211274197085,"lng":-122.0855988802915}}…
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
31
q MainGoogleMapswebservices² GoogleMapsGeolocationAPI² GoogleMapsElevationAPI² GoogleMapsGeocodingAPI² GoogleMapsDirectionsAPI² GoogleMapsRoadsAPI² GoogleMapsTimeZoneAPI² GooglePlacesAPI
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
32
q GoogleMapsDirectionsAPIallowscalculatingdirectionsbetweenlocations(non-trackingservice).
² Directionsmayspecifyorigins,destinationsandwaypoints² Result(JSON/XML)containalistofwaypoints² Directionscanbeprovidedforseveralmodesoftransportation,
includingtransit,driving,walkingorcycling.² Timeintrafficcanbeestimated.² Preferencesfortransitroutes(less_walkingorfewer_transfers)
canbeprovidedasinput.APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
33
q GoogleMapsDirectionsAPIallowscalculatingdirectionsbetweenlocations(non-trackingservice).
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&avoid=highways&mode=cycling&key=YOUR_API_KEY
origin/destinationàaddressorgeocoordinatesmodeàdriving,walking,cycling,transitwaypointsàarrayofwaypoints,expressedascoordinatesoraddressesavoidàtolls,highways,ferriesorindoorarrival_time/departure_timeàusedfortransitdirectionstransit_modeàpreferredmodesoftransit(bus,subway,train,tram,rail)unitsàdistanceunittodisplayresults…
SOMEPARAMETERS
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
34
q MainGoogleMapswebservices² GoogleMapsGeolocationAPI² GoogleMapsElevationAPI² GoogleMapsGeocodingAPI² GoogleMapsDirectionsAPI² GoogleMapsRoadsAPI² GoogleMapsTimeZoneAPI² GooglePlacesAPI
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
35
q GoogleMapsRoadsAPIallowsmappingGPScoordinatestothegeometryoftheroad,andtodeterminethespeedlimitalongtheroadsegments.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY
² path!Listofcoordinates(latitude/longitude),separatedbycommas² placeIdàplaceIDoftheroadsegment,returnedbythesnapToRoadsmethod
² unitsàspeedlimitsinkilometersormilesperhour.
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
36APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
https://roads.googleapis.com/v1/speedLimits?placeId=ChIJ1Wi6I2pNFmsRQL9GbW7qABM&placeId=ChIJ58xCoGlNFmsRUEZUbW7qABM&key=YOUR_API_KEY
"speedLimits":[{"placeId":"ChIJ1Wi6I2pNFmsRQL9GbW7qABM","speedLimit":60,"units":"KPH"},{"placeId":"ChIJ58xCoGlNFmsRUEZUbW7qABM","speedLimit":60,"units":"KPH"},}]
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
37
q MainGoogleMapswebservices² GoogleMapsGeolocationAPI² GoogleMapsElevationAPI² GoogleMapsGeocodingAPI² GoogleMapsDirectionsAPI² GoogleMapsRoadsAPI² GoogleMapsTimeZoneAPI² GooglePlacesAPI
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
38
q TheGoogleMapsTimeZoneAPIallowsrequestingthetimezoneforalocationontheearth,aswellasthatlocationtimeoffsetfromtheUTC
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/timezone/outputFormat?parameters
² location!comma-separatedlat,lngtuple(eg.location=-33.86,151.20)² timestamp!desiredtimeassecondssincemidnight,January1,1970UTC.
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
39
q TheGoogleMapsTimeZoneAPIallowsrequestingthetimezoneforalocationontheearth,aswellasthatlocationtimeoffsetfromtheUTC
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510×tamp=1331161200&key=YOUR_API_KEY
{"dstOffset":0,"rawOffset":-28800,"status":"OK","timeZoneId":"America/Los_Angeles","timeZoneName":"PacificStandardTime"}
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
40
q MainGoogleMapswebservices² GoogleMapsGeolocationAPI² GoogleMapsElevationAPI² GoogleMapsGeocodingAPI² GoogleMapsDirectionsAPI² GoogleMapsRoadsAPI² GoogleMapsTimeZoneAPI² GooglePlacesAPI
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
41
q TheGooglePlacesAPIreturnsinformationaboutplaces,definedasestablishments,geographiclocations,orprominentpointsofinterest.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
² PlaceSearchesreturnalistofplacesbasedonauser'slocationorsearchstring.² PlaceDetailsrequestsreturninformationaboutaspecificPlace(e.g.reviews)
² PlaceAddallowaddingdatatotheGooglePlacesdatabase² PlacePhotosgivesaccesstothePlacerelatedphotosstoredinGoogle'sPlacedatabase.² PlaceAutocompletecanbeusedtoautomaticallyfillinthenameand/oraddressofaplace² QueryAutocompletecanbeusedtoprovideaquerypredictionservicefortext-based
geographicsearches,byreturningsuggestedqueriesasyoutype.
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
42
q TheGooglePlacesAPIreturnsinformationaboutplaces,definedasestablishments,geographiclocations,orprominentpointsofinterest.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
https://maps.googleapis.com/maps/api/place/nearbysearch/jsonlocation=-33.8670522,151.1957362&radius=500&type=restaurant&name=Italia&key=YOUR_API_KEY
https://maps.googleapis.com/maps/api/place/radarsearch/json?location=51.503186,-0.126446&radius=5000&type=museum&key=YOUR_API_KEY
https://maps.googleapis.com/maps/api/place/textsearch/json?query=restaurants+in+Sydney&key=
Documentationandsourcecodeavailableat:https://developers.google.com/maps/web-services/
APIs for Location-based services
43
q GoogleMapsAPI
² HTTP-basedWebserviceAPI
² WebclientAPI(Javascript)
² High-levelProgramminglanguageAPI(Java,Python)
² MobileOSAPI(Android,iOS)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Location-aware services
44LOCATIONINTELLIGENCE&SPATIALDATAANALYSIS
MARCODIFELICE
APIsforOUTDOORLOCALIZATION
MOBILEAPPLICATIONS(ANDROIDOS)
Location-aware services
45LOCATIONINTELLIGENCE&SPATIALDATAANALYSIS
MARCODIFELICE
² GPSmodulesmightpresentaseriousbatterydrainproblemduetotheirhighcomputationload
KleomenisKatevas,HamedHaddadi,LaurissaTokarchuk,SensingKit:EvaluatingtheSensorPowerConsumptioniniOSdevices,https://arxiv.org/abs/1606.05576
Location-aware services
46LOCATIONINTELLIGENCE&SPATIALDATAANALYSIS
MARCODIFELICE
² GPSmodulesmightpresentaseriousbatterydrainproblemduetotheirhighcomputationload
Per-phaseconsumption Consumptionfordifferentaccuracies
KongyangChen,GuangTan,andMingmingLu,ImprovingtheEnergyPerformanceofGPSReceiversforLocationTrackingApplications,2017IEEEConferenceonComputerCommunicationsWorkshops(INFOCOMWKSHPS):2017IEEEInfocomMiseNetWorkshop
Location-aware services
47LOCATIONINTELLIGENCE&SPATIALDATAANALYSIS
MARCODIFELICE
² GPSmodulesmightpresentaseriousbatterydrainproblemduetotheirhighcomputationload
MeeyeonLee,Deok-KiKimandJung-WonLee,AnalysisofCharacteristicsofPowerConsumptionforContext-AwareMobileApplications,Information2014,5,612-621;doi:10.3390/info5040612
OUTDOOR(GPS)
INDOOR(WI-FI)
OUTDOOR(GPS)
Location-aware services
48LOCATIONINTELLIGENCE&SPATIALDATAANALYSIS
MARCODIFELICE
APIvsmeterbasedconsumptionvalues
ImmanuelKönig,AbdulQudoosMemon,KlausDavid,EnergyconsumptionofthesensorsofSmartphones,TenthInternationalSymposiumonWirelessCommunicationSystems2013
APIs for Location-based services
49APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
HOWtogetthecurrentpositioninAndroid?
LOCATIONMANAGER
GPSprovider Wi-Fiprovider Cellularprovider
LOCATIONLISTENER
Locationchanged!
[interface]
NETWORKPROVIDER
APIs for Location-based services
50APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
q InAndroid,thebatteryconsumptionofLocation-awareapplicationscanbemanagedbyproperlysettingthreeconfigurationparametersofthemobileapp:
https://developer.android.com/guide/topics/location/battery
² Accuracy:Theprecisionofthelocationdata.Ingeneral,thehighertheaccuracy,thehigherthebatterydrain.
² Frequency:Howoftenlocationiscomputed.Themorefrequentlocationiscomputed,themorebatteryisused.
² Latency:Howquicklylocationdataisdelivered.Lesslatencyusuallyrequiresmorebattery.
APIs for Location-based services
51APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
q InAndroid,thebatteryconsumptionofLocation-awareapplicationscanbemanagedbyproperlysettingthreeconfigurationparametersofthemobileapp:
https://developer.android.com/guide/topics/location/battery
² Accuracy:Theprecisionofthelocationdata.Ingeneral,thehighertheaccuracy,thehigherthebatterydrain.
LocationRequestmLocationRequest=newLocationRequest();mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
PRIORITY_HIGH_ACCURACY,PRIORITY_BALANCED_POWER_ACCURACY,PRIORITY_LOW_POWER,PRIORITY_NO_POWER
Usesalllocationproviders
Passivelocalization,itexploitslocalizatioupdatesfromotherapps
APIs for Location-based services
52APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
q InAndroid,thebatteryconsumptionofLocation-awareapplicationscanbemanagedbyproperlysettingthreeconfigurationparametersofthemobileapp:
https://developer.android.com/guide/topics/location/battery
² Frequency:Howoftenlocationiscomputed.Themorefrequentlocationiscomputed,themorebatteryisused.
LocationRequestmLocationRequest=newLocationRequest();mLocationRequest.setInterval(10000);mLocationRequest.setFastestInterval(5000);
Intervalatwhichlocationcomputedforotherappsisdeliveredtothecurrentapp
APIs for Location-based services
53APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
q InAndroid,thebatteryconsumptionofLocation-awareapplicationscanbemanagedbyproperlysettingthreeconfigurationparametersofthemobileapp:
https://developer.android.com/guide/topics/location/battery
² Latency:Howquicklylocationdataisdelivered.Lesslatencyusuallyrequiresmorebattery.
LocationRequestmLocationRequest=newLocationRequest();mLocationRequest.setInterval(10000);mLocationRequest.setMaxWaitTime(50000);
Thisvalueshouldbeconsiderablelargerthantheinterval
APIs for Location-based services
54APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
q InAndroid,thebatteryconsumptionofLocation-awareapplicationscanbemanagedbyproperlysettingthreeconfigurationparametersofthemobileapp:
https://developer.android.com/guide/topics/location/battery
1. RemoveLocationUpdatesifnotneeded2. Setatimeoutofwhenthelocationupdateshouldstop3. Usepassivelocationupdatesandproperlysettheupdateparameters
LocationRequestrequest=newLocationRequest();request.setInterval(15*60*1000);request.setFastestInterval(2*60*1000);
APIs for Location-based services
55APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
q FusedlocationproviderAndroidAPIs.² Itmergesthelocalizationoutputsofdifferentlocalization
providersforbetteraccuracy.² Itmanages/hidestheunderlyinglocationtechnology(i.e.
GPS,cellularbasedorWiFibased).² Itallowstheusertospecifyrequirementsatahighlevel,
likehighaccuracyorlowpower.² Itsupportsgeofencingandactivityrecognition.
APIs for Location-based services
56
q STEP1-Requestlocationpermissions
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.google.android.gms.location.sample.basiclocationsample"><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/></manifest>
ANDROIDMANIFEST.XML
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
57
q STEP2–ConnecttoGooglePlayservices
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
if(mGoogleApiClient==null){mGoogleApiClient=newGoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(LocationServices.API).build();}…mGoogleApiClient.connect();
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
58
q STEP3–Getthelastknownlocation
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
publicvoidonConnected(BundleconnectionHint){mLastLocation=
LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);if(mLastLocation!=null){
mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));}}
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
59
q STEP4–Createalocationrequest
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
LocationRequestmLocationRequest=newLocationRequest();mLocationRequest.setInterval(10000);mLocationRequest.setFastestInterval(5000);mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationSettingsRequest.Builderbuilder=newLocationSettingsRequest.Builder().addLocationRequest(mLocationRequest);
Interval–inmilliseconds-ofupdates
PRIORITY_BALANCED_POWER_ACCURACY,PRIORITY_HIGH_ACCURACY,PRIORITY_LOW_POWER,PRIORITY_NO_POWER
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
60
q STEP5–ReceiveLocationupdates
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,this);
publicclassMainActivityextendsActionBarActivityimplementsConnectionCallbacks,OnConnectionFailedListener,LocationListener{...@OverridepublicvoidonLocationChanged(Locationlocation){mCurrentLocation=location;
…}
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
61
q Geofencingisatechniquetodefinevirtualboundariesofageographicarea,andtolocalizeauseroverit.
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Geofenceàpoint(latitude/longitude)plusaradiusAneventistriggeredeachtimetheuserentersorexitsthegeofence,ordwellslongerthanagivenintervaloftime.Eachgeofenceisassociatedtoanexpirationtime
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
62
q STEP1–Createageofenceobject
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
mGeofenceList.add(newGeofence.Builder()//SettherequestIDofthegeofence..setRequestId(entry.getKey()).setCircularRegion(entry.getValue().latitude,entry.getValue().longitude,Constants.GEOFENCE_RADIUS_IN_METERS).setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS).setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER|Geofence.GEOFENCE_TRANSITION_EXIT).build());
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
63
q STEP2–Definetheinitialtriggerevents
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
mGeofenceList.add(newGeofence.Builder()//SettherequestIDofthegeofence..setRequestId(entry.getKey()).setCircularRegion(entry.getValue().latitude,entry.getValue().longitude,Constants.GEOFENCE_RADIUS_IN_METERS).setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS).setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER|Geofence.GEOFENCE_TRANSITION_EXIT).build());
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
APIs for Location-based services
64
q STEP3–AddgeofencesandIntents
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
LocationServices.GeofencingApi.addGeofences(mGoogleApiClient,mGeofenceList,getGeofencePendingIntent())
privatePendingIntentgetGeofencePendingIntent(){Intentintent=newIntent(this,GeofenceTransitionsIntentService.class);returnPendingIntent.getService(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);}
Documentationandsourcecodeavailableat:http://developer.android.com/training/location/index.html
Location-aware services
65LOCATIONINTELLIGENCE&SPATIALDATAANALYSIS
MARCODIFELICE
APIsforINDOORLOCALIZATION(BASEDONWIRELESSTECHNOLOGIES)
APIs for Indoor Localization
66
q IndoorAtlas(https://www.indooratlas.com)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
SDKavailableat:https://www.indooratlas.com
q Localizationbygeomagnetictechnology(i.e.analysisoftheEarth’smagneticfield)
q Supportsindoornavigation,geo-fencingandway-finding.
APIs for Indoor Localization
67
q IndoorAtlas(https://www.indooratlas.com)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
SDKavailableat:https://www.indooratlas.com
q Client-serverarchitecture,basedonfoursteps
1. CreateLocationandAddmapfloor(throughaWebapplication)
2. Setwaypoints(throughamobileapp)3. Walkthroughthewaypoints,andautomatically
gathersensordata(e.g.magnetometer)4. Importthemap,andaddlocation-based
featuresthroughthemobileapplication
APIs for Indoor Localization
68
q IndoorAtlas(https://www.indooratlas.com)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
SDKavailableat:https://www.indooratlas.com
q SDKforAndroidandIOSoperatingsystemsLocationupdatesareprovidedbytheIALocationListenerinterfaceandtheonLocationChanged()callbackmethod,andareexpressedasabsolutecoordinates(LAT;LONG).
privateIALocationListenermIALocationListener=newIALocationListener(){@OverridepublicvoidonLocationChanged(IALocationlocation){
Log.d(TAG,"Latitude:"+location.getLatitude());Log.d(TAG,"Longitude:"+location.getLongitude());
}};
APIs for Indoor Localization
69
q ESTIMOTE(http://developer.estimote.com/android/)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Furtherinformationavailableat:http://developer.estimote.com/android/
Android/IOSSDKforindoorlocalizationandLocalizationbasedservicesthroughBeaconsq Defineindoorgeofenceregions
q MonitortheBLEsignal
q TriggercorrespondingactionbasedondetectedBeacon
APIs for Indoor Localization
70
q ESTIMOTE(http://www.i-locate.eu/the-virtual-hub/)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Furtherinformationavailableat:http://developer.estimote.com/android/
EachBeaconisidentifiedbythreevalues:
² UUID,commonlyrepresentedasastring,e.g.“B9407F30-F5F8-466E-AFF9-25556B57FE6D”
² majornumber,anunsignedshortinteger,i.e.,anintegerrangingfrom1to65535,(0isareservedvalue)
² minornumber,alsoanunsignedshortinteger,likethemajornumber.
APIs for Indoor Localization
71
q ESTIMOTE(http://www.i-locate.eu/the-virtual-hub/)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Furtherinformationavailableat:http://developer.estimote.com/android/
beaconManager=newBeaconManager(getApplicationContext());//addthisbelow:beaconManager.connect(newBeaconManager.ServiceReadyCallback(){@OverridepublicvoidonServiceReady(){beaconManager.startMonitoring(newRegion("monitoredregion",UUID.fromString("B9407F30-F5F8-466E-AFF9-25556B57FE6D"),22504,48827));}});
DEFINETHEREGION
APIs for Indoor Localization
72
q ESTIMOTE(http://www.i-locate.eu/the-virtual-hub/)
APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICESMARCODIFELICE
Furtherinformationavailableat:http://developer.estimote.com/android/
beaconManager.setMonitoringListener(newBeaconManager.MonitoringListener(){@OverridepublicvoidonEnteredRegion(Regionregion,List<Beacon>list){ DOSOMETHING}@OverridepublicvoidonExitedRegion(Regionregion){ DOSOMETHING}});
DEFINETHEACTION
APIs for Indoor Localization
73APPLICATIONLAYERINTERFACES(API)FORLOCATION-BASEDSERVICES
MARCODIFELICE
INDOORLOCALIZATIONDEMOTHROUGHBLEBEACONS