periodic and distance based tracking desired accuracy in meters single location request caching and...

46
Windows Phone 8 Maps and Location Services Adina Trufinescu Program Manager Windows Phone Developer Platform

Upload: jonathan-saker

Post on 31-Mar-2015

239 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Windows Phone 8 Maps and Location Services

Adina TrufinescuProgram Manager Windows Phone Developer Platform

Page 2: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Agenda

Location Service APIs

Map Control and Services

Location Tracking in Background

Fast Resume

Page 3: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Location Service API

Page 4: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Periodic and distance based trackingDesired accuracy in metersSingle location requestCaching and timeoutPosition source

Location for Windows Phone 8

.Net APIs

Windows RuntimeAPIs

Track location changesDesired accuracy Movement thresholdPositionChangedStatusChangedStart & Stop

A-GPS

Wi-fi

Cell

Page 5: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

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;}

Page 6: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Single Location Request

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;}

Page 7: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Tips for Location Apps

Use single location request when you can

Leverage caching for faster results

Find the right tradeoff between accuracy and timeout

Is wifi on?

Page 8: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Map Control and Services

Page 9: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Windows Phone 8 Map Control

Nokia Mapping Data110+ Countries, vector maps, 3D landmarks, new map modes

Offline MapsDownloadable by users, MapsDownloader tasks expose download and update to developers

Map ControlSmooth interactions, lag-less overlays, rotation, pitch

Route DisplayEasy to display Route calculated via Maps Services

Page 10: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Windows Phone Maps Services

Geocoding Latitude,Longitude to Address

Reverse Geocoding Address to Latitude,Longitude

RoutingRouteQuery, Route, RouteLeg, RouteManeuver

Page 11: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Part of Windows Phone ToolkitMapsUserControlPushPinToGeoCoordinate

Windows Phone Map and Services APIMap Control &ServiceAPIs

Map ToolkitExtensions

ID_CAP_MAP and ID_CAP_LOCATION

Developer Token assigned through Windows Phone Developer Center

.Net

Page 12: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Map Control and Services Demo

Mike O’MalleyProgram Manager

Page 13: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Windows Phone 7.x Maps API

Deprecated for Windows Phone 8 AppsBing Maps ControlBing Maps Task

Continue to use for 7.x apps

Page 14: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Map Control and Services Takeaway

Map Control and Maps Services APIs powered by Nokia

Map Extensions Toolkit

Users can manage offline maps

Bing Map control is deprecated for 8.0

Page 15: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Location Tracking in Background

Page 16: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Location Tracking in BackgroundApp manifest:<defaultTask Name="_default" NavigationPage="MainPage.xaml" >    <BackgroundExecution>      <ExecutionType Name="LocationTracking" />    </BackgroundExecution ></defaultTask>

Actively listen for location change events

16

Page 17: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Background Execution Constraints

XAML apps only

A single Location Tracking App runs in the background

App runs with limited access to resources

17

Page 18: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Resource ManagementCPU allocation is capped at 10%App has access to• Location• Audio\Speech• Network• Storage• Sensors

No access to Camera, MicrophoneShellToast and ShellTile.Update

Page 19: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

User Awareness and ControlID_CAP_LOCATION

Users can close the running app

Users can disable background functionality per app

Page 20: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

DeactivationApp runs in the background until:• App stops tracking location• User disables Location Services• 4 hours without bringing the app in the foreground• Battery Saver ON• Another Location Tracking app moves to background• Low memory

DeactivationReason providedNotify the user!

Page 21: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Location Tracking in Background Demo

Page 22: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

App Lifecycle Events

PhoneApplicationServiceLaunchingDeactivated

RunningInBackgroundActivatedClosed

Page 23: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Application Lifecycle

running

deactivated

suspended

activated

tombstoned

Activ

ated

deactivated

Deactivated

Page 24: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Application Lifecycle for Location Tracking

running

running in background

suspended

activated

tombstoned

Activ

ated

RunningInB

g

deactivated

Page 25: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Application Lifecycle – Launching&Closing

Not Running ClosingRunningLaunchin

g

Running in Background

Launching

Launching

Closing

Page 26: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Application Lifecycle – Launching&Closing

Not Running ClosingRunningLaunchin

g

Running in Background

Launching

Launching

Closing

RunningInBg

Closing

Page 27: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Tips for Running in Background Use sound and toasts wisely

Inform the user when the app was deactivated

Stop active timers and animations

Stop tracking location when done

Optimize for Fast Resume

Page 28: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

What is Fast Resume?

Page 29: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Fast Resume for Windows Phone 8 Apps“Replace” is the default activation policyOpt-in to “Resume" via manifest setting

<defaultTask Name ="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"/>

Apps are still suspended or tombstoned

Page 30: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Fast Resume UXResume previous experience for Primary tilewhen previously launched via Primary tile

Start fresh for Deep Linkswhen previously launched via Primary tile or a different Deep Link

Don’t block OnBackKeyPressthis is how users close your app

30

Page 31: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Backstack – Do nothing

Page 32: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Backstack – Clear page stack

Page 33: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Reset: Clear the page stack

Backstack – Clear page stack

Page 34: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Backstack - Cancel navigation

Page 35: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Reset: Cancel navigation

Backstack - Cancel navigation

Page 36: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Navigation Events

NavigationMode.Resetraised on page at the top of the backstack; indicates that the app is relaunched

NavigationMode.Newraised when a page is created for new launch Uri

NavigationMode.Refresh raised when launch Uri is same as the page at the top of the backstack

Page 37: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

NavigationMode.Reset

Top Page OnNavigatedTo

Top Page OnNavigatedFrom

NavigationMode.New

NavigationMode.Reset

New Page OnNavigatingTo

NavigationMode.New

Clear Page Stack

Cancel Navigation

Page 38: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

NavigationMode.Reset - Resume

Top Page OnNavigatedTo

Top Page OnNavigatedFrom

NavigationMode.New

NavigationMode.Reset

Cancel Navigation

Top Page

Resume!!

!

Page 39: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

NavigationMode.Reset – Start Fresh

Top Page OnNavigatedTo

Top Page OnNavigatedFrom

NavigationMode.New

NavigationMode.Reset

New Page OnNavigatingTo

NavigationMode.New

Clear Page Stack

Page 40: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Fast Resume Demo

Page 41: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Fast Resume Takeaway

Main Tile: Resume!

Deep Links: Clear the back stack

OnBackKeyPress: Do not block

Test relaunch: between primary tile and deep links

Don’t forget Tombstoning!

Page 42: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

In Conclusion…

Page 43: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Take Away

Map Control and Map Services powered by Nokia

Windows Runtime Location APIs

Background Execution for Location Tracking Apps

Want to resume fast? Use Fast Resume!

Page 44: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Maps Toolkit Extension @

http://phone.codeplex.com

App to App Communication Session

Resources

Page 45: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

Questions?

Page 46: Periodic and distance based tracking Desired accuracy in meters Single location request Caching and timeout Position source.Net APIs Windows Runtime

© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.