Post on 17-Jun-2015
WPReborn 2013Orientarsi in un'applicazione: Nokia Maps
@dnlombardia#wpreborn
Nicolò Carandininicolo.carandini@domusdotnet.orgblogs.ugidotnet.org/Nick60@TPCWare
Location Service API
Map Control and Services
Location Tracking in Background
Agenda
Location Service API
Location Service per Windows Phone 8
.Net API
WinRT API
Track location changesDesired accuracy Movement thresholdPositionChangedStatusChangedStart & Stop
A-GPS
Wi-Fi
Cell
Periodic and distance based trackingDesired accuracy in metersSingle location requestCaching and timeoutPosition source
Principali novità• Tracking periodico e per variazione di
posizione• Precisione richiesta (in metri)• Timeout• Singola richiesta (senza tracking)• Sorgente (GPS / Wi-Fi / Cell)
Richiesta singola (senza tracking)public async Task<Geocoordinate> GetSinglePositionAsync(){ Geolocator geolocator = new Geolocator(); geolocator.DesiredAccuracyInMeters = 10;
Geoposition geoposition = await geolocator.GetGeopositionAsync(TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(30));
return geoposition.Coordinate;}
Posizione (singola richiesta)Demo
Location Trackingprivate Geolocator trackingGeolocator;private TypedEventHandler<Geolocator, PositionChangedEventArgs> positionChangedHandler; public void StartTracking(){ trackingGeolocator = new Geolocator();
trackingGeolocator.MovementThreshold = 100; // or trackingGeolocator.ReportInterval = (uint)TimeSpan.FromSeconds(30).TotalMilliseconds;
positionChangedHandler = (geolocator, eventArgs) => {}; trackingGeolocator.PositionChanged += positionChangedHandler;}public void StopTracking(){ trackingGeolocator.PositionChanged -= positionChangedHandler;}
Best Practice
Se non vi serve il tracking, usate le richieste singole
Utilizzate il caching per avere maggior velocità di risposta
Trovate il giusto compromesso tra precisione e timeout
Verificate che il Wi-Fi sia acceso, e in caso contrario suggerite all’utente di farlo
Map Control and Services
Windows Phone 8 Map Control
Nokia Mapping DataPiù di 110 paesi, mappe vettoriali 3D, nuovi modi di visualizzazione
Offline MapsScaricabili dagli utenti, disponibilità di task di download e update
Map ControlVeloce e reattivo, consente la rotazione e l’inclinazione della mappa
Route DisplayFacilità di visualizzazione delle Route calcolate con i Maps Service
Windows Phone Maps Services
Geocoding Latitudine, Longitudine -> Indirizzo
Reverse Geocoding Indirizzo -> Latitudine, Longitudine
RoutingRouteQuery, Route, RouteLeg, RouteManeuver
Windows Phone Map and Services API
Map Control
Service API
Map ToolkitExtensions
ID_CAP_MAP and ID_CAP_LOCATION Developer Token assegnato tramite il Windows Phone Developer Center
.Net
Windows Phone Toolkit:
MapsUserControlPushPinToGeoCoordinate
Nuovi Launcher
In Windows Phone 8 ci sono nuovi Maps launcher:• MapsTask• MapsDirectionsTask• MapDownloaderTask• MapUpdaterTask
Windows Phone 7.x Maps API
Nelle applicazioni Windows Phone 7.x si continua ad usare:• Maps Control• Bing Maps Task
Nelle applicazioni Windows Phone 8 l’uso è deprecato.L’unico scenario in cui può aver senso utilizzarli è l’aggiornamento alla versione 8 di un’applicazione 7.x
Location Tracking in Background
Location Tracking in BackgroundAbilita il tracking anche quando la nostra App viene disattivata
App manifest:<defaultTask Name="_default" NavigationPage="MainPage.xaml" > <BackgroundExecution> <ExecutionType Name="LocationTracking" /> </BackgroundExecution ></defaultTask>
17
Limiti dell’esecuzione in Background
Solo applicazioni XAML
Un’applicazione alla volta può fare background tracking
Le App hanno accesso limitato alle risorse di sistema
18
Resource ManagementL’uso della CPU è limitato al 10%L’applicazione che gira in background ha accesso a:• Location• Audio\Speech• Network• Storage• Sensori
Nessun accesso a:• Camera e Microfono• ShellTile.Update
User Awareness and ControlCapability:ID_CAP_LOCATION
L’utente può chiudere l’App che sta girando in background
L’utente può disabilitare la funzionalità di background tracking di ciascuna App
DeactivationL’ App smette di girare in background se:• L’ App ferma il tracking• L’utente disabilita i Location Service• Sono passate almeno 4 ore dall’ultima volta in cui l’App è stata in
foreground• Il Battery Saver è ON• Un’altra App che fa uso di Location Tracking va in background• C’è poca memoria
Quando l’App viene disattivata viene fornito il motivo:• DeactivationReason
E’ fondamentale avvertire l’utente.
App Lifecycle Events
PhoneApplicationServiceLaunchingDeactivated
RunningInBackgroundActivatedClosed
Application Lifecycle
running
deactivated
suspended
activated
tombstoned
Activ
ated
deactivated
Deactivated
Application Lifecycle - Location Tracking
running
running in backgrou
nd
suspended
activated
tombstoned
Activ
ated
RunningInB
g
deactivated
Consigli per il Background TrackingUsate l’output vocale e i toast
Informate l’utente se l’App viene disattivata
Fermate i timer attivi e le animazioni
Fermate il tracking della posizione se non è più necessario
Ottimizzate per il Fast Resume
Per saperne di piùA breve una serie di articoli e progetti demo relativi al Map Control e Servizi su DomusDotNet (www.domusdotnet.org)
Deep dive su Background Tracking e Fast Resume nella prossima sessione ai Community Days 2013 (www.communitydays.it)
Forse* una sessione sull’applicazione Decoro Urbano, con particolare riguardo alla georeferenziazione delle foto e ai pushpin singoli o in cluster, a Codemotion (roma.codemotion.it)
(* Se sarà accettata la call for paper)
@dnlombardia#wpreborn
Nicolò Carandininicolo.carandini@domusdotnet.orgblogs.ugidotnet.org/Nick60@TPCWare
WPReborn 2013Orientarsi in un'applicazione: Nokia Maps