Upload
jonas-folleso
View
1.023
Download
3
Embed Size (px)
DESCRIPTION
Introduksjon til Windows Phone 7 som plattform. Presentert på NNUG møte i Trondheim 30.09.2010.
Citation preview
Windows Phone 7
Jonas Follesø
NNUG Trondheim, 30. september 2010
AGENDA:- WP7 PLATFORM- PHONE APIs- TDD- BLEND 4- DEMOS!
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/2
07
92
78
7@
N0
0/2
24
86
23
39
1/
WINDOWS PHONE 7
A FRESH START!
XNA FOR GAMES
SILVERLIGHT FOR APPS
KNOW SILVERLIGHT?
THEN YOU KNOW WP7!
HELLO WORLD
DEMO
METRO DESIGN
LANGUAGE
PIVOT CONTROL
HUB CONTROL
BLEND 4DEMO
LAUNCHERS & CHOOSERS
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/m
ad
_hou
se_p
hoto
gra
ph
y/
44
40
87
13
80
/
• CameraCaptureTask• EmailAddressChooserTask• EmailComposeTask• MarketplaceDetailTask• MarketplaceHunTask• MarketplaceReviewTask• MarketplaceSearchTask• MediaPlayerLauncher• PhoneCallTask• PhoneNumberChooserTask• PhotoChooserTask• SaveEmailAddressTask• SavePhoneNumberTask• SearchTask• SmsComposeTask• WebBrowserTask
LAUNCH BUILT IN APP WITH SOME DATA
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/2
86
34
33
2@
N0
5/4
05
47
66
77
0/
private void smsCompose_Click(object sender, RoutedEventArgs e){ var smsCompose = new SmsComposeTask(); smsCompose.To = "97706660"; smsCompose.Body = "Hello NNUG!"; smsCompose.Show();}
LAUNCH BUILT IN APP TO CHOOSE
SOME DATA
private void choose_Click(object sender, RoutedEventArgs e){ var emailChooser = new EmailAddressChooserTask(); emailChooser.Completed += emailChooser_Completed; emailChooser.Show();}
private void emailChooser_Completed(object sender, EmailResult e){ if(e.TaskResult == TaskResult.OK) email.Text = e.Email;}
CHOSER & LAUCHER
DEMO
EXECUTION MODEL &
TOMBSTONING
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/9
81
09
48
@N
05
/15
83
50
67
87
/
NO MULTI TASKING
BUT...
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/n
3p
tun
3r/
33
76
69
74
90
/
FAST ACTIVATION &
DEACTIVATION
GIVES IMPRESSION OF
APP RUNNING IN
BACKGROUND
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/ci
rox/3
63
28
41
94
/
PAGE STATE• Poisition of ScollViewer• Content of TextBox• State of other UI elements
• OnNavigatedTo & OnNavigatedFrom
APP STATE• State not associated with
spesific page
• Managed by PhoneApplicationService
PERSISTENT DATA
• Data shared by all instances of app
• Save and loaded from Isolated Storage
TRANSIENT STATE
• Data for instance of application
• Stored in State dictionary
• Similar to cache
Launching Running
Closing Deactivating Activating
Chooser/Task/Other
PUSH NOTIFICATIONS
WHEN APP IS NOT RUNNING
TWO TYPES OF
NOTIFICATIONS
WP7 PUSH NOTIFICATIONS
Microsoft Push
Notification
Services
Your Web Applicatio
n
PUSH CLIENT
Notification Namespaces
Push Library
Your WP Application
1Open Channel
2 Hand off channel
URL
3 Pushmessage
4Push message
PUSH NOTIFICATION
S DEMO
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/ko
zlosk
i/2
30
65
10
52
0/
private void open_Click(object sender, RoutedEventArgs e){ var channel = HttpNotificationChannel.Find("NNUG");
if (channel == null) { channel = new HttpNotificationChannel("NNUG"); }
channel.ChannelUriUpdated += channel_ChannelUriUpdated; channel.ShellToastNotificationReceived += channel_ShellToastNotificationReceived; channel.Open();}
private void channel_ShellToastNotificationReceived
(object sender, NotificationEventArgs e){ foreach (var text in e.Collection) output.Text += text + "\r\n";}
ISOLATED STORAGE
FOR SIMPLE DATA STORAGE
NOSQLFOR WP7?
ISOLATED STORAGE
DEMO
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/om
arr
un
/46
72
53
12
53
/in
/ph
oto
stre
am
ACCELEROMETER
DEMO
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/h
ow
zey/2
88
04
55
76
2/
LOCATION AWARENESSIS KEY WHEN
ON THE GO
SAME API IN .NET 4 &
WP7
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/p
hoto
gra
ham
/19
83
24
03
1/
private void start_Click(object sender, System.Windows.RoutedEventArgs e){ var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); watcher.PositionChanged += watcher_PositionChanged; watcher.Start();}
private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e){ var location = e.Position.Location; var lat = location.Latitude; var lon = location.Longitude;}
TDD
FUNDAMENTALPRACTICE
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/m
ad
_hou
se_p
hoto
gra
ph
y/
44
40
87
13
80
/
TDDDEMO
FLIGHTS NORWAY
MONITORARRIVALS AND
DEPARTURES
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/sv
en
werk
/2
18
18
49
28
0/
RESTSERVICES
WITH FLIGHT INFORMATION
http://flydata.avinor.no/http://open.bekk.no/2009/12/13/hva-skjer-nar-man-gir-bort-flydata-gratis/
MVVM
PATTERN FOR BINDABLE UI
Data Model
VIEW
XAML
Code-BehindEvent
Handlers
APP LOGIC IN CODE BEHIND IS HARD TO TEST
AND MAINTAIN
Data Model
VIEW
XAML
Code-Behind
VIEW MODEL
State + Operations
Change notification
Data-binding and commands
SEPARATE USINGMVVM
MVVM SHOULD BE LIGHT WEIGHT
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/tr
eeh
ou
se1
97
7/2
89
24
17
80
5/
http://mvvmlight.codeplex.com/
FLIGHTS NORWAY
DEMO
DEMO
WP7 TWITTER CLIENT
SUMMARY:- WP7 PLATFORM- PHONE APIs- TDD- BLEND 4- DEMOS!
htt
p:/
/ww
w.fl
ickr
.com
/ph
oto
s/2
07
92
78
7@
N0
0/2
24
86
23
39
1/
FORK ME ON GITHUB
http://github.com/follesoe/FlightsNorway
http://github.com/follesoe/FrontEnd2010
BEKK CONSULTING ASSKUR 39, VIPPETANGEN. P.O. BOX 134 SENTRUM, 0102 OSLO, NORWAY.
WWW.BEKK.NO
Jonas FollesøSenior Consultant+47 977 06660
[email protected]@follesoe.no