silverlight 4 dla windows phone 7

82
7 Silverlight 4 dla Windows Phone 7 Bartłomiej Zass ISV Developer Evangelist Microsoft Polska

Upload: fauna

Post on 23-Feb-2016

46 views

Category:

Documents


0 download

DESCRIPTION

Silverlight 4 dla Windows Phone 7. Bartłomiej Zass. ISV Developer Evangelist. Microsoft Polska. Wybrane elementy. Telefon – wstęp Marketplace Interfejs użytkownika Interakcja Nawigacja Tombstoning Akcelerometr. Launchers & Choosers WebBrowser Usługi lokalizacyjne - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Silverlight  4 dla Windows Phone 7

7Silverlight 4dla Windows Phone 7

Bartłomiej ZassISV Developer EvangelistMicrosoft Polska

Page 2: Silverlight  4 dla Windows Phone 7

Wybrane elementy Telefon – wstęp Marketplace Interfejs użytkownika Interakcja Nawigacja Tombstoning Akcelerometr

Launchers & Choosers WebBrowser Usługi lokalizacyjne Powiadomienia push Integracja z OS Media Inne

Page 3: Silverlight  4 dla Windows Phone 7

Windows Phone 7 Całkiem nowy początek Inna grupa docelowa niż WM 6.x

Konsument: wygoda, design, platforma ZUNE

Windows Phone 7 vs Windows Embedded Handheld

Page 4: Silverlight  4 dla Windows Phone 7

Inny nie bez powodu Interfejs użytkownika

Integracja z sieciami społecznościowymi

Zupełnie nowe API Aplikacje użytkowe –

Silverlight Gry – XNA (XBOX)

Page 5: Silverlight  4 dla Windows Phone 7

Metro

Page 6: Silverlight  4 dla Windows Phone 7

Metro w Windows Phone 7

Page 7: Silverlight  4 dla Windows Phone 7

Panorama Hub

Page 8: Silverlight  4 dla Windows Phone 7

Unifikacja sprzętuRozdzielczość480x800 QVGA320x480 HVGA

Ekr. pojemnościowy4 lub więcej punktów

Aparat5 mega pixeli lub więcejPrzyciskiStart, Szukaj, Wstecz

GPUAkceleracja DirectX 9

Pamięć256MB RAM lub więcej8GB flash lub więcej

MultimediaDokładna specyfikacjaAkceleracja kodeków

SensoryA-GPS, Akcelerometr, Kompas, Światło, Czujnik zbliżeniowy

480 lub 320

800 lub 480

Radio FM

Page 9: Silverlight  4 dla Windows Phone 7

Interfejs telefonu Analogiczny do przeglądarki internetowej 3 przyciski

Wstecz Start Wyszukiwanie

Page 10: Silverlight  4 dla Windows Phone 7

demo

Page 11: Silverlight  4 dla Windows Phone 7

Marketplace Sklep / katalog z aplikacjami, grami i

muzyką Na każdym telefonie (domyślnie jako

quickstart) Jedyna możliwość wgrania aplikacji Dobry pomysł na zarobek

70% zysków ze sprzedaży Globalny rynek iPhone’owi milionerzy = 1 USD * 100 000

Page 12: Silverlight  4 dla Windows Phone 7

Zasięg

30 rynków

Page 13: Silverlight  4 dla Windows Phone 7

Marketplace - warunki Rejestracja - 100 USD za rok

Studenci 5 aplikacji bezpłatnych, kolejne 19,99 USD

Model reklamowy Dowolna liczba aplikacji płatnych http://create.msdn.com

Rejestracja i weryfikacja konta Możliwość przetestowania w biurze Microsoft

lub na ITAD

Page 14: Silverlight  4 dla Windows Phone 7

Marketplace - cechy Codzienna, zlokalizowana promocja Trial API Różne modele biznesowe

Paid, freemium, reklamy, bezpłatne Różne modele płatności

Karta kredytowa, billing Automatyczne aktualizacje (push) Reguły (content policies)

Page 15: Silverlight  4 dla Windows Phone 7

Marketplace - cechy Miesięczna wypłata Proces rejestracji

Potwierdzenie adresu e-mail Aktywacja konta – średnio 10 dni Wypłata – formularz W8B

Certyfikacja – średnio 5 dni

Page 16: Silverlight  4 dla Windows Phone 7

Dystrybucja Dystrybucja beta

Do wybranej grupy użytkowników (live ID)

Deeplink przesyłany poprzez e-mail Okres beta – krótki, określony

Wiele języków w jednym pliku XAP

Page 17: Silverlight  4 dla Windows Phone 7

Urządzenia deweloperskie Konieczne aktywne konto w Marketplace

Max 3 telefony deweloperskie Studenci

Max 1 telefon deweloperski Pełna aktywacja po zgłoszeniu aplikacji

Page 18: Silverlight  4 dla Windows Phone 7

Integracja z aplikacją MarketplaceDetailTask

ContentType: Application | Music ContentID: null (detale aktualnej), lub

app ID MarketplaceHubTask MarketplaceReviewTask MarketplaceSearchTask

Page 19: Silverlight  4 dla Windows Phone 7

demo

Page 20: Silverlight  4 dla Windows Phone 7

Silverlight dla Windows Phone Bazuje na Silverlight 3

(zmodyfikowany) Elementy Silverlight 4 Dodatkowe funkcjonalności Tylko out-of-browser (większe

uprawnienia)

Page 21: Silverlight  4 dla Windows Phone 7

PhoneApplicationService App.xaml Zdarzenia globalne dla aplikacji

Launching Closing Activated Deactivated

Page 22: Silverlight  4 dla Windows Phone 7

Capabilities WMAppManifest.xml Deklaracja zapotrzebowania na konkretną

funkcję Bezpieczeństwo!

Marketplace Informacje o aplikacji Ostrzeżenie podczas instalacji Ostrzeżenie, kiedy funkcja zostanie

wywołana UnauthorizedException (brak API do

sprawdzania)

Page 23: Silverlight  4 dla Windows Phone 7

Capabilities – c.d.Capability Klasa lub namespace, która jej wymagaID_CAP_MEDIALIB MediaStreamSource,

Microsoft.Devices.Radio, Microsoft.Xna.Framework.Media.MediaLibrary and MediaSource, Microsoft.Devices.MediaHistory

ID_CAP_NETWORKING System.Net, Microsoft.Xna.Framework.GamerServices.GamerServicesComponent, WebBrowser class, Smooth Streaming Media Element (SSME) ID_CAP_PUSH_NOTIFICATION

ID_CAP_SENSORS Microsoft.Devices.Sensors

ID_CAP_MICROPHONE Microsoft.Xna.Framework.Audio.Microphone

ID_CAP_PHONEDIALER Microsoft.Phone.Tasks

ID_CAP_PUSH_NOTIFICATION Microsoft.Phone.Notification

ID_CAP_WEBBROWSERCOMPONENT

WebBrowser class

ID_CAP_LOCATION System.Device.Location

Page 24: Silverlight  4 dla Windows Phone 7

Interfejs użytkownika Prosty i elegancki Ekran pojemnościowy (wielkość!) Skórki

Ciemna Jasna (bateria!)

Kolor akcentu - wiodący Automatyczne skinowanie kontrolek

wbudowanych Możliwość nadpisania każdego elementu

skórki

Page 25: Silverlight  4 dla Windows Phone 7

Themes (skórki) Domyślne zasoby globalne http://msdn.microsoft.com/en-us/library/ff7

69552(VS.92).aspx

Projektowatnie interfejsu - wyświetlacz OLED (Organic Emitting Diode) Czerń – połowa mocy LCD Biel – trzykrotna moc LCD 30 klatek na sekundę

Page 26: Silverlight  4 dla Windows Phone 7

Kontrolki systemowe Menu „Application Bar”

Maksymalnie 4 przyciski Menu – rzadziej używane zadania Możliwa przezroczystość

System Tray (możliwość schowania)

Page 27: Silverlight  4 dla Windows Phone 7

Grafika - Silverlight Kontrolka Image

JPEG i PNG (XNA dodatkowo GIF) Źródło

Build action = Resource lub Content Internet URL

BitmapImage new BitmapImage(URI) ImageOpened, ImageFailed, DownloadProgress

Rozmiar aplikacji vs rozmiar zdjęć Camera chooser

Page 28: Silverlight  4 dla Windows Phone 7

Orientacja ekranu Możliwość obrócenia ekranu

Akcelerometr Klawiaturka

Obsługa automatyczna Własne zdarzenie

(dodatkowe operacje)

Page 29: Silverlight  4 dla Windows Phone 7

Panorama

Page 30: Silverlight  4 dla Windows Phone 7

Pivot

Page 31: Silverlight  4 dla Windows Phone 7

Efekt Tilt Efekt „pływających” przycisków Dołączany jako Attached Property

ButtonBase, ListBoxItem Najcześciej PhoneApplicationFrame

Możliwe włączenie dla wybranego kontenera

Właściwości IsEnabled SuppressTilt

Page 32: Silverlight  4 dla Windows Phone 7

demo

Page 33: Silverlight  4 dla Windows Phone 7

Interakcja TextBox zintegrowany z

Software Input Scope Tekst, URL, liczba, czas,

telefon, e-mail, hasło, chat Klawiatura - opcjonalnie

Page 34: Silverlight  4 dla Windows Phone 7

Touch w Silverlight TouchPanel.GetCapabilities

IsConnected MaximumTouchCount TouchPanel.GetState()

Niskopoziomowo – Touch.FrameReported GetTouchPoints GetPrimaryTouchPoint i args.SuspendMousePromotionUntilTouchUp() TouchPoint -> TouchDevice.DirectlyOver

Zdarzenia Manipulation (max 2 punkty) ManipulationStarted, ManipulationDelta, ManipulationCompleted ManipulationDeltaEventArgs – Velocities, FinalVelocities

LinearVelocity, ExpansionVelocity Dla kontrolki (sender) Dla kontenera (args.OriginalSource – Routed Events)

Page 36: Silverlight  4 dla Windows Phone 7

Gesty Standardowe kontrolki automatycznie Silverlight Toolkit

<Grid x:Name="LayoutRoot" Background="Transparent"><toolkit:GestureService.GestureListener>

<toolkit:GestureListener x:Name="gl" /></toolkit:GestureService.GestureListener>

</Grid>

XNA Gestures ManipulationCompleted TouchPanel.ReadGesture();

Page 37: Silverlight  4 dla Windows Phone 7

demo

Page 38: Silverlight  4 dla Windows Phone 7

Nawigacja domyślnie w Silverlight

Application

UserControl

ContentContent Content

Page 39: Silverlight  4 dla Windows Phone 7

Silverlight 3 Navigation

UserControl

Frame

Page 3Page 1 Page 2

Application

Application

UserControl

ContentContent Content

Page 40: Silverlight  4 dla Windows Phone 7

?Windows Phone 7

UserControl

Frame

Page 3Page 1 Page 2

Application

Application

Frame

Page 3Page 1 Page 2

Page 41: Silverlight  4 dla Windows Phone 7

Nawigacja PhoneApplicationFrame,

PhoneApplicationPage Przycisk wstecz

Przełączanie między aplikacjami Możliwość nadpisania obsługi zdarzenia

OnNavigating(ed)From, OnBackKeyPress e.Cancel

NavigationService GoBack, CanGoBack NavigateTo GoForward – brak

UriMapper

Page 42: Silverlight  4 dla Windows Phone 7

demo

Page 43: Silverlight  4 dla Windows Phone 7

Świat pełen przerwań…phone calls

App

switch

reminders

low

batterylock scree

n

Page 44: Silverlight  4 dla Windows Phone 7

Tombstoning Brak przetwarzania w tle

Długotrwałe obliczenia – chmura Aplikacja nigdy nie działa w tle – system ją

zatrzymuje Cykl życia aplikacji

Running Closing Deactivating Activating

Stan aplikacji Stan wizualny – focus, scroll, itp.

Page 45: Silverlight  4 dla Windows Phone 7

Tombstoning Zamrażanie aplikacji Dostępne zdarzenia

Launched (uruchomienie) Closed (przycisk back) Deactivated (przycisk start, telefon, sms,

…) Activated (przycisk back po wyjściu z

aplikacji) Debugowanie

Ponownie F5 w ciągu 10 sekund

Page 46: Silverlight  4 dla Windows Phone 7

Przywracanie stanu PhoneApplicationPage

Ustawienia pojedynczej strony OnNavigatedFrom OnNavigatingFrom OnNavigatedTo

PhoneApplicationService.Current.State Dane tymczasowe (np. stan interfejsu

użytkownika) Dictionary<string, object> Wyłącznie obiekty serializowalne Publiczny bezparametrowy konstruktor

Page 47: Silverlight  4 dla Windows Phone 7

Wyjątki PhotoChooserTask CameraCaptureTask MediaPlayerLauncher EmailAddressChooserTask PhoneNumberChooserTask Multiplayer Game Invite [games] Gamer You Card [games]

Page 48: Silverlight  4 dla Windows Phone 7

Isolated Storage Ustawienia globalne aplikacji IsolatedStorageSettings IsolatedStorageFile

Wirtualne pliki przechowywane w pamięci flash

Brak ograniczeń przestrzeni

Page 49: Silverlight  4 dla Windows Phone 7

demo

Page 50: Silverlight  4 dla Windows Phone 7

Akcelerometr

Mierzy siłe przyłożoną do każdej osi

+Y

-Y

+X-X

+Z

-ZPrzynajmniej 1 sensor

Grawitacja i inne źródła

W planach kalibracja

Page 51: Silverlight  4 dla Windows Phone 7

Akcelerometr Microsoft.Devices.Sensors Wektor X, Y, Z (zasada prawej dłoni) Wartość - twierdzenie pitagorasa

1 = 1g (przyspieszenie ziemskie) Standardowa pozycja: [0, 0, -1] Możliwe odchylenie ok. 10%

Accelerometer.ReadingChanged Dispatcher!

Page 52: Silverlight  4 dla Windows Phone 7

demo

Page 53: Silverlight  4 dla Windows Phone 7

Launchers MediaPlayerLauncher PhoneCallTask PhoneNumberChooserTask PhotoChooserTask SaveEmailAddressTask SavePhoneNumberTask SearchTask SMSComposeTask WebBrowserTask

CameraCaptureTask EmailAddressChooserTask EmailComposeTask MarketplaceDetailTask MarketplaceHubTask MarketplaceReviewTask MarketplaceSearchTask

Page 54: Silverlight  4 dla Windows Phone 7

Choosers EmailAddressChooserTask CaptureCameraTask PhoneNumberChooserTask PhotoChooserTask

Page 55: Silverlight  4 dla Windows Phone 7

demo

Page 56: Silverlight  4 dla Windows Phone 7

Kontrolka Web Browser Zdalna i lokalna zawartość Obsługa gestów – pan, double tap, pinch Transformacje Możliwość interakcji z JavaScript Prywatność

Skrypt domyślnie wyłączony Ciasteczka i cache wyizolowane

Page 57: Silverlight  4 dla Windows Phone 7

Silverlight -> JS

function runScriptStuff(arg1, arg2){ return “awesome”; }

string out = wb.InvokeScript("runScriptStuff", arg1, arg2);

javascript

Page 58: Silverlight  4 dla Windows Phone 7

JS -> Silverlight

window.external.Notify(string);

void wb_ScriptNotify(object s, NotifyEventArgs e){ string return = e.Value;}

javascript

Page 59: Silverlight  4 dla Windows Phone 7

demo

Page 60: Silverlight  4 dla Windows Phone 7

Lokalizacja

Location services

WiFi

+ Dokładność- Energia- Szybkość- Zasięg

- Dokładność+ Energia+ Szybkość- Zasięg

+/- Dokładność+/- Energia+/- Szybkość+/- Miasta

GPS

Nadajniki BTS

Page 61: Silverlight  4 dla Windows Phone 7

Usługi lokalizacyjne Analogiczne API do Windows 7

Kompromis pomiędzy dokładnością, czasem i energią

Jednorodne API pomiędzy urządzeniami

Page 62: Silverlight  4 dla Windows Phone 7

A-GPS Assisted GPS System.Device.Location GeoCoordinateWatcher

GeoPostitionAccuracy: High | Default PositionChanged

PositionChanged udostępnia e.Position.Location Longitude (-180 – 180), Latitude (-90 - 90) VerticalAccuracy, HorizontalAccuracy - dokładność Speed - szybkość Course (0-360) - kierunek Altitude – wysokość GeoCoordinate -> GetDistanceTo

Page 63: Silverlight  4 dla Windows Phone 7

Bing Maps https://www.bingmapsportal.com/

Bezpłatne dla rozwiązań mobilnych Usługi (SOAP, JSON, REST …)

Geocode / ReverseGeocode – adresy Search – np. restaurant in Warsaw Imagery Service – grafika Route – trasy

Kontrolka Bing Maps dla WP7

Page 64: Silverlight  4 dla Windows Phone 7

demo

Page 65: Silverlight  4 dla Windows Phone 7

Notyfikacje push

Komunikacja inicjowana przez serwer Analogiczne do Exchange Push

Przetwarzanie po stronie serwera Oszczędza baterię i poprawia użyteczność

Page 66: Silverlight  4 dla Windows Phone 7

Typy notyfikacji

New photos online!

Seattle, WA: Sunny and 85 degrees

1415

Page 67: Silverlight  4 dla Windows Phone 7

Notyfikacje pushPush client

Push service

Your service

Tile

App

Toast

Send push data to URI

Send push data to

client

Send URI to server

Open push channelReturn URIData to App

Data to toast

Data to tile

Event

Page 68: Silverlight  4 dla Windows Phone 7

Push HttpNotificationChannel

Jeden dla aplikacji Konieczne uzupełnienie Publisher w

WMAppManifest

Page 69: Silverlight  4 dla Windows Phone 7

Usługa push - odpowiedzi Status notyfikacji

Received QueueFull Suppressed Dropped

Status urządzenia Connected Temporarily Disconnected

Status subskrybcji Active, Expired

Page 70: Silverlight  4 dla Windows Phone 7

demo

Page 71: Silverlight  4 dla Windows Phone 7

Kafelki Notyfikacje push ShellTileSchedule

Aktualizacja ikony aplikacji Minimum 1h Jednorazowo lub cyklicznie

Page 72: Silverlight  4 dla Windows Phone 7

Integracja z OS Launchers („uruchom i zapomnij”) Choosers („okna dialogowe”) MediaLibrary MediaHistoryTask Pictures

Share Extras

Page 73: Silverlight  4 dla Windows Phone 7

demo

Page 74: Silverlight  4 dla Windows Phone 7

Wibracja Uruchamia wibrację na dany okres czasu

Przywołanie uwagi użytkownika Powiadomienia o zmianach Itp..

VibrateController vc = VibrateController.Default;vc.Start(TimeSpan.FromSeconds(3));

Page 75: Silverlight  4 dla Windows Phone 7

Media Obsługa mediów

Dekodowanie sprzętowe PlayReady DRM

Ograniczenia MediaElement Tylko jeden Brak VideoBrush (przysłanianie, itp.)

Radio FM

Page 76: Silverlight  4 dla Windows Phone 7

Integracja z XNA Dostępne wszystkie assembly oprócz:

Microsoft.Xna.Framework.Game Microsoft.Xna.Framework.Graphics

SoundEffect Większa wydajność niż MediaElementSoundEffect se = SoundEffect.FromStream(TitleContainer.OpenStream("hand-clap-1.wav")); soundEffectInstance = se.CreateInstance(); soundEffectInstance.IsLooped = true; soundEffectInstance.Play();

Page 77: Silverlight  4 dla Windows Phone 7

Integracja z XNA (2) Mikrofon

RAW PCM WAV DynamicSoundEffectInstance – dźwięki

dynamicznie MediaLibrary

Obrazy i muzyka (bez DRM) Także zapis zdjęć (muzyki nie) Song (Song.FromUri(„”),

MediaPlayer.Play(song) MathHelper, Vector, itp. GameServices

Page 78: Silverlight  4 dla Windows Phone 7

Integracja z XNA (3) Gesty –

Microsoft.Xna.Framework.Input.Touch<Grid x:Name="ContentPanel" Grid.Row="1" ManipulationCompleted="ContentPanel_ManipulationCompleted">

TouchPanel.EnabledGestures = GestureType.Pinch | GestureType.Hold | GestureType.DoubleTap;

private void ContentPanel_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e){    while (TouchPanel.IsGestureAvailable)    {        GestureSample gesture = TouchPanel.ReadGesture();         if (gesture.GestureType == GestureType.Pinch)        {            // Do something with pinch        }      }

Page 79: Silverlight  4 dla Windows Phone 7

demo

Page 80: Silverlight  4 dla Windows Phone 7

Inne Blokada ekranu Menu kontekstowe

Page 81: Silverlight  4 dla Windows Phone 7

demo

Page 82: Silverlight  4 dla Windows Phone 7