Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

56
Windows Phone Codename “Mango” Doug Holland Sr. Architect Evangelist

Transcript of Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Page 1: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows PhoneCodename “Mango”

Doug HollandSr. Architect Evangelist

Page 3: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Software Architecture

App Model

Cloud and Integration

Services

Hardware Foundation

UI Model

Agenda: Windows Phone

SoC

Camera, Sensors & Motion

FASSilverlight and XNA integratio

n

Silverlight 4.0

Flexible chassis

SQL CEGen GC

Push, Alerts

Multitasking

Calendar Contacts Maps

Extras

codename “Mango”

Page 4: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Hardware Foundation

Page 5: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Hardware Foundation UpdatesCapacitive touch4 or more contact points

SensorsA-GPS, Accelerometer, Compass, Light, Proximity,

Camera5 mega pixels or more

MultimediaCommon detailed specs, Codec acceleration

Memory256MB RAM or more, 8GB Flash or more

GPUDirectX 9 acceleration

CPUQualcomm MSM8x55 800Mhz or higher

80

0

480

Hardware buttons | Back, Start, Search

Gyro

MSM7x30

Compass

Camera

Motion Sensor

Improved capability detection APIs

Page 6: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Measures resultant acceleration (force) on device

Pros: Available on all devices

Cons: Difficult to tell apart small

orientation changes from small device motions

6

Accelerometer

+Y

+X-X-Z

Page 7: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.7

Camera Access to live camera stream

PhotoCamera Silverlight 4 Webcam

Display in your app Video Brush

Page 8: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.8

When to use each approach

PhotoCamera Take High Quality Photos Handle Hardware Button Handle Flash mode and

Focus Access Samples (Pull

Model)

Webcam Record Video Record Audio Share code with desktop Access Samples (Push

Model)

Page 9: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Camera Demo

Page 10: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Measures rotational velocity on 3 axis Optional on Mango

phones Not present in pre-Mango

WP7 phones

10

Gyroscope

Page 11: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.11

Gyroscope API

Page 12: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Gives 3D heading of Earth’s magnetic and Geographic North Subject to external electromagnetic influences Requires user calibration over time Great inaccuracies in orientation, up to 20 degrees Significant lag

Availability: Optional on “Mango” phones Included in some pre-Mango WP7 phones

12

Compass (aka Magnetometer)

Page 13: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.13

Compass APIprotected override void OnNavigatedTo(NavigationEventArgs e){ if (Compass.IsSupported) { compass = new Compass(); compass.CurrentValueChanged += compass_CurrentValueChanged; compass.Start() }}private void compass_CurrentValueChanged(object sender,

SensorReadingEventArgs<CompassReading> e) { Deployment.Current.Dispatcher.BeginInvoke(() => { CompassRotation.Angle = -e.SensorReading.TrueHeading; Heading.Text = e.SensorReading.TrueHeading.ToString("0°"); });}

Page 14: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Virtual sensor, combines gyro + compass + accelerometer

Motion Sensor vs. gyro or compass or accelerometer More accurate Faster response times Comparatively low drift Can disambiguate motion types

Has fall-back if gyro is not available14

Motion Sensor

Always prefer Motion Sensor when available

Page 15: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.15

Motion APIif (Motion.IsSupported) { _sensor = new Motion(); _sensor.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<MotionReading>> (sensor_CurrentValueChanged); _sensor.Start();}

void _sensor_CurrentValueChanged(object sender, SensorReadingEventArgs<MotionReading> e){ Simple3DVector rawAcceleration = new Simple3DVector( e.SensorReading.Gravity.Acceleration.X, e.SensorReading.Gravity.Acceleration.Y,

e.SensorReading.Gravity.Acceleration.Z); … }

Page 16: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Degraded modes have lower quality approximations

When Motion.IsSupported is false, apps should use accelerometer or other input and control mechanisms1

6

Motion Sensor Adapts to DevicesAccelerometer Compass Gyro Motion

Yes Yes Yes Full

Yes Yes No Degraded

Yes No Yes Unsupported

Yes No No Unsupported

Page 17: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Sensor Calibration

Calibration Event is fired when calibration is needed Both Compass and Motion sensors need user

calibration Apps should handle it

Provide UI asking user to move device through a full range of orientations

Not handling will cause inaccurate readings We are considering providing copy & paste solution

17

Page 18: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Software Foundation Software

Foundation

App Model

Cloud and Integration

Services

Hardware Foundation

UI Model

Page 19: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.19

Run-time improvements

Silverlight 4

• Implicit styles

• RichTextBox• ViewBox• More touch

events (tap, double tap)

Features

• Sockets• Clipboard • IME • WebBrowser

(IE9)• VideoBrush

Performance

• Gen GC• Input thread• Working set• Profiler

Page 20: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.20

Networking Sockets

TCP UDP unicast, Multicast ( on Wi-Fi)

Connection Manager Control Overrides and sets preferences

(e.g. Wi-Fi or cellular only) HTTP

Full header access WebClient returns in originating thread

Page 21: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Sockets Classes in Mango

Area Silverlight 4.0 Windows Phone

TCP Sockets Socket class (Async) Socket

UDP Sockets UdpAnySourceMulticastClient UdpSingleSourceMulticastClient

UdpAnySourceMulticastClient UdpSingleSourceMulticastClientSocket

Addressing SocketAddressIPAddressIPEndPoint

SocketAddressIPAddressIPEndPoint

Name Resolution

DnsEndPoint DnsEndPointNameResolution APIs

Page 22: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Coding Sample: TCP Socket Connect _endPoint = new DnsEndPoint(“192.168.0.2", 5000); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

SocketAsyncEventArgs args = new SocketAsyncEventArgs();args.UserToken = _socket;args.RemoteEndPoint = _endPoint;args.Completed += new EventHandler<SocketAsyncEventArgs>(OnSocketConnectCompleted);

_socket.ConnectAsync(args);

Page 23: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Coding Sample: UDP Socket

Client = new UdpAnySourceMulticastClient(address, port);Client.BeginJoinGroup( result => {

Client.EndJoinGroup(result); Dispatcher.BeginInvoke(delegate

{ OnAfterOpen();

Receive();});

}, null);

Page 24: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.24

Silverlight and XNA Shared Graphics XNA inside Silverlight App Integration at Page Level

XNA takes over rendering Integration at Element level

Silverlight elements in XNA pipeline via UIElementRenderer

Shared input

Page 25: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.25

Local database SQL Compact Edition

Use object model for CRUD LINQ to SQL to query, filter, sort

Application level access Sandboxed from other apps Uses IsolatedStorage Access for background agents

DatabaseSchemaUpdater APIs for upgrades

SQL CE

Page 26: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Database APIs: Datacontext and attributes // Define the data context.

public partial class WineDataContext : DataContext

{

public Table<Wine> Wines;

public Table<Vineyard> Vineyards;

public WineDataContext(string connection) : base(connection) { }

}

// Define the tables in the database

[Table]

public class Wine

{

[Column(IsPrimaryKey=true]

public string WineID { get; set; }

[Column]

public string Name { get; set; }

……

}

// Create the database form data context, using a connection string

DataContext db = new WineDataContext("isostore:/wineDB.sdf");

if (!db.DatabaseExists()) db.CreateDatabase();

Page 27: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Queries: Examples

// Find all wines currently at home, ordered by date acquiredvar q = from w in db.Wines

where w.Varietal.Name == “Shiraz” && w.IsAtHome == true orderby w.DateAcquired select w;

Wine newWine = new Wine{

WineID = “1768", Name = “Windows Phone Syrah", Description = “Bold and spicy"

};

db.Wines.InsertOnSubmit(newWine);db.SubmitChanges();

Page 28: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Application Model Software

Architecture

App Model

Cloud and Integration

Services

Hardware Foundation

UI Model

Page 29: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.29

Fast Application Resume Immediate Resume of recently used applications

Apps stay in memory after deactivation New “task switcher”

Long-press back button While dormant

Apps are not getting CPU cycles Resources are detached

You must recompile and resubmit targeting Mango

Page 30: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Mango Application Lifecycle

running

deactivated

dormant

activated

Phone resources detachedThreads & timers suspended

Fast App Resume

Save State!State preserved!IsAppInstancePreserved == true

Restore state!IsAppInstancePreserved == false

Resuming .. .

Tombstone the oldest app

Tombstoned

Page 31: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.31

Multi-tasking design principles

Network Conscience

Battery Friendly

Hardened Services

Delightful and

Responsive UX

Never Regret App Install

Integrated Feel

UX

Health

Page 32: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.32

Multi-tasking Options Background Transfer Service Background Audio Background Agents

Periodic On Idle

Alarms and Reminders

Page 33: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Background Audio Playback

App provides URL or stream to Zune Audio continues to play even if app is closed App is notified of file or buffer near completion

Phone Integration Music & Video Hub Universal Volume Control (UVC), lauch app, controls, contextual info Contextual launch – Start menu, UVC, Music & Video Hub

App Integration App can retrieve playback status, progress, & metadata Playback notification registration

33

Page 34: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Background Audio App Types URL PlayList

Provide URL to play Pause, resume, stop, skip-forward, skip-

backward Stream Source

Provide audio buffers Custom decryption, decompression

Requires app to run some code in background34

Page 35: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.35

Background Agents Agents

Periodic On Idle An app may have up to one of each

Initialized in foreground, run in background Persisted across reboots

User control through CPL System maximum of 18 periodic agent

Agent runs for up to 14 days (can be renewed)

Page 36: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Generic Agent Types

36

Periodic Agents Occurrence

Every 30 min Duration

~15 seconds Constraints

<= 6 MB Memory <=10% CPU

On Idle Agents Occurrence

External power, non-cell network

Duration 10 minutes

Constraints <= 6 MB Memory

All of this is requirements can change before RTM, but should not change too much

Page 37: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.37

Background Agent Functionality

Allowed Tiles Toast Location Network R/W ISO store Sockets Most framework APIs

Restricted

Display UI XNA libraries Microphone and Camera Sensors Play audio

(may only use background audio APIs)

Page 38: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.38

Notifications Time-based, on-phone notifications Supports Alerts & Reminders Persist across reboots Adheres to user settings Consistent with phone UX

Page 39: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Alarms vs Reminders? Alarms

•Modal•Snooze and Dismiss•Sound customization•No app invocation•No stacking

Reminders

• Rich information• Integrates with other

reminders• Snooze and Dismiss• Launch app• Follows the phones global

settings39

Page 40: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.40

Alarms APIAlarmsusing Microsoft.Phone.Scheduler;

private void AddAlarm(object sender, RoutedEventArgs e){ Alarm alarm = new Alarm("Long Day"); alarm.BeginTime = DateTime.Now.AddSeconds(15); alarm.Content = "It's been a long day. Go to bed."; alarm.Title = "Alarm";

ScheduledActionService.Add(alarm);}

Page 41: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.41

Reminders API

using Microsoft.Phone.Scheduler;

private void AddReminder(object sender, RoutedEventArgs e){ Reminder reminder = new Reminder("CompanyMeeting"); reminder.BeginTime = DateTime.Now.AddSeconds(15); reminder.Content = "Soccer Fields by The Commons"; reminder.Title = "Microsoft Annual Company Product Fair 2009"; reminder.RecurrenceType = RecurrenceInterval.Yearly; reminder.NavigationUri = new Uri("/Reminder.xaml", UriKind.Relative);

ScheduledActionService.Add(reminder);}

Reminders

Page 42: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.42

Background Transfer Service Start transfer in foreground, complete in

background, even if app is closed Queue persists across reboots

Queue size limit = 5 Queue APIs (Add, Remove, Query status)

Single service for many apps, FIFO Download ~20 MB ( > over Wi-Fi) Upload Size ~4 MB (limit to come) Transfers to Isolated Storage

Page 43: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Background Transfer Service API

void DownloadWithBTS(Uri sourceUri, Uri destinationPath){ btr = new BackgroundTransferRequest(sourceUri, destinationUri); btr.TransferStatusChanged += BtsStatusChanged; btr.TransferProgressChanged += BtsProgressChanged; BackgroundTransferService.Add(btr);}

void BtsProgressChanged(object sender, BackgroundTransferEventArgs e){ DrawProgressBar(e.Request.BytesReceived);

}

using Microsoft.Phone.BackgroundTransfer;Needs more!

Page 44: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Live Tile improvements Local Tile APIs

Full control of ALL properties Multiple tiles per app

Create,Update/Delete/Query Launches direct to Uri

44

Application TileLaunches main app experience

Secondary TileLaunches world news page

Secondary TileLaunches local news page

Page 45: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Back of tile updates Full control of all properties when your app

is in the foreground or background Content, Title, Background

Flips from front to back at random interval Smart logic to make flips asynchronous

Live Tiles – Local Tile API Continued…

Title

Content

Title

BackgroundContent string is bigger

Page 46: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.46

AppConnect Integration point between Bing Search and 3rd party

apps User launches 3rd party from Bing Search – search

parameter is passed to the app Four item types:

Movies Places Events Products

Page 47: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.47

New Choosers and Launchers SaveRingtoneTask AddressChooseTask BingMapsTask BingMapsDirectionsTask GameInviteTask Updates:

EmailAddressChooserTask PhoneNumberChooserTask

Page 48: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.48

Contacts Read-only querying of

contacts

Third party social data cannot be shared

Requires ID_CAP_CONTACTS

Page 49: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Contacts/Appointments Data Shared  Contact

Nameand Picture

Other contact data

Appointments/Events

Windows Live Social YES YES YES

Windows Live Rolodex(user created and SIM import)

YES YES n/a

Exchange accounts(corporate plus Google, etc.)

YES YES YES

Operator Address Books YES YES n/a

Facebook YES NO NO

Other networks in the People Hub (e.g., Twitter)

NO NO NO

Page 50: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Contacts APIContacts contacts = new Contacts();

contacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>((sender, e) => {

... = e.Results; });

// E.g. search for all contactscontacts.SearchAsync(string.Empty, FilterKind.None, null);

filter expression(not a regex)

Filter kind: dispay name | email | phone number | pinnedto start)

state

// E.g. search for all contacts with display name matching "jaime"contacts.SearchAsync("jaime", FilterKind.DisplayName, null);

Page 51: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.51

Calendar Read-only querying of

calendar appointments Returns a snapshot (not live

data) You must refresh manually

Requires ID_CAP_APPOINTMENTS

Page 52: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Appointments API

Appointments appointments = new Appointments();appointments.SearchCompleted += new EventHandler<AppointmentsSearchEventArgs>((sender, e) => { ... = e.Results; });

// get next appointment (up to 1 week away)appointments.SearchAsync(DateTime.Now, DateTime.Now + TimeSpan.FromDays(7), 1, null);

Start date and time

Maximum items to return

stateend date and time

Page 53: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

What are Search Extras?

Added functionality 3rd party apps provide for Bing items

Four item types: Movies Places Events Products

Page 54: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Three Easy Steps to Implement Search Extras

1. Update your app’s Manifest Use the Extensions element One child Extension element for each category your app supports

Your app will appear in those items! This is a great way to drive downloads if your app isn’t yet installed

2. Add an Extras.XML file to your XAP Specify captions for each Bing category

 3. Accept Context to automatically open the item in your app

Create a SearchExtras page that accepts parameters. Search for the item using the parameters passed to your app.

Page 55: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.

Call to Action Build and ship for 7 now Everything you build will work just fine in the next

release 7.1 allows you to build deeply integrated

phone experiences Multitasking opens up completely new experiences Integration points are a key way for your app to

shine Download the tools now!!!55

Page 56: Windows Phone Codename Mango Doug Holland Sr. Architect Evangelist.

Windows Phone Microsoft Corporation.56

© 2011 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.