Programowanie Windows Phone 7

1,863 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,863
On SlideShare
0
From Embeds
0
Number of Embeds
248
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Programowanie Windows Phone 7

  1. 1. Silverlight 4dla Windows Phone 7<br />Bartłomiej Zass<br />ISV Developer Evangelist<br />Microsoft Polska<br />
  2. 2. Wybrane elementy<br />Telefon – wstęp<br />Marketplace<br />Interfejs użytkownika<br />Interakcja<br />Nawigacja<br />Tombstoning<br />Akcelerometr<br />Launchers & Choosers<br />WebBrowser<br />Usługi lokalizacyjne<br />Powiadomienia push<br />Integracja z OS<br />Media<br />Inne<br />
  3. 3. Windows Phone 7<br />Całkiem nowy początek<br />Inna grupa docelowa niż WM 6.x<br />Konsument: wygoda, design, platforma<br />ZUNE<br />Windows Phone 7 vs <br />Windows Embedded Handheld<br />
  4. 4. Inny nie bez powodu<br />Interfejs użytkownika<br />Integracja <br />z sieciami społecznościowymi<br />Zupełnie nowe API<br />Aplikacje użytkowe – Silverlight<br />Gry – XNA (XBOX)<br />
  5. 5. Metro<br />
  6. 6. Metro w Windows Phone 7<br />
  7. 7. Panorama<br />Hub<br />
  8. 8. Unifikacja sprzętu<br />Multimedia<br />Dokładna specyfikacja<br />Akceleracja kodeków<br />Rozdzielczość<br />480x800 QVGA<br />320x480 HVGA<br />800 lub 480<br />Ekr. pojemnościowy<br />4 lub więcej punktów<br />Pamięć<br />256MB RAM lub więcej<br />8GB flash lub więcej<br />Sensory<br />A-GPS, Akcelerometr, Kompas, Światło, Czujnik zbliżeniowy<br />GPU<br />Akceleracja DirectX 9<br />Aparat<br />5 mega pixeli lub więcej<br />480 lub 320<br />Radio FM<br />Przyciski<br />Start, Szukaj, Wstecz<br />
  9. 9. Interfejs telefonu<br />Analogiczny do przeglądarki internetowej<br />3 przyciski <br />Wstecz<br />Start<br />Wyszukiwanie<br />
  10. 10. demo<br />
  11. 11. Marketplace<br />Sklep / katalog z aplikacjami, grami i muzyką <br />Na każdym telefonie (domyślnie jako quickstart)<br />Jedyna możliwość wgrania aplikacji<br />Dobry pomysł na zarobek<br />70% zysków ze sprzedaży<br />Globalny rynek<br />iPhone’owi milionerzy = 1 USD * 100 000<br />
  12. 12. Zasięg<br />30 rynków<br />
  13. 13. Marketplace - warunki<br />Rejestracja - 100 USD za rok<br />Studenci<br />5 aplikacji bezpłatnych, kolejne 19,99 USD<br />Model reklamowy<br />Dowolna liczba aplikacji płatnych<br />http://create.msdn.com<br />Rejestracja i weryfikacja konta<br />Możliwość przetestowania w biurze Microsoft lub na ITAD<br />
  14. 14. Marketplace - cechy<br />Codzienna, zlokalizowana promocja<br />Trial API<br />Różne modele biznesowe<br />Paid, freemium, reklamy, bezpłatne<br />Różne modele płatności<br />Karta kredytowa, billing<br />Automatyczne aktualizacje (push)<br />Reguły (contentpolicies)<br />
  15. 15. Marketplace - cechy<br />Miesięczna wypłata<br />Proces rejestracji<br />Potwierdzenie adresu e-mail<br />Aktywacja konta – średnio 10 dni<br />Wypłata – formularz W8B<br />Certyfikacja – średnio 5 dni<br />
  16. 16. Dystrybucja<br />Dystrybucja beta<br />Do wybranej grupy użytkowników (live ID)<br />Deeplink przesyłany poprzez e-mail<br />Okres beta – krótki, określony<br />Wiele języków w jednym pliku XAP<br />
  17. 17. Urządzenia deweloperskie<br />Konieczne aktywne konto w Marketplace<br />Max 3 telefony deweloperskie <br />Studenci<br />Max 1 telefon deweloperski <br />Pełna aktywacja po zgłoszeniu aplikacji<br />
  18. 18. Integracja z aplikacją<br />MarketplaceDetailTask<br />ContentType: Application | Music<br />ContentID: null (detale aktualnej), lub app ID<br />MarketplaceHubTask<br />MarketplaceReviewTask<br />MarketplaceSearchTask<br />
  19. 19. demo<br />
  20. 20. Silverlight dla Windows Phone<br />Bazuje na Silverlight 3 (zmodyfikowany)<br />Elementy Silverlight 4<br />Dodatkowe funkcjonalności<br />Tylko out-of-browser (większe uprawnienia)<br />
  21. 21. PhoneApplicationService<br />App.xaml<br />Zdarzenia globalne dla aplikacji<br />Launching<br />Closing<br />Activated<br />Deactivated<br />
  22. 22. Capabilities<br />WMAppManifest.xml<br />Deklaracja zapotrzebowania na konkretną funkcję<br />Bezpieczeństwo!<br />Marketplace<br />Informacje o aplikacji<br />Ostrzeżenie podczas instalacji<br />Ostrzeżenie, kiedy funkcja zostanie wywołana<br />UnauthorizedException (brak API do sprawdzania)<br />
  23. 23. Capabilities – c.d.<br />
  24. 24. Interfejs użytkownika<br />Prosty i elegancki<br />Ekran pojemnościowy (wielkość!)<br />Skórki<br />Ciemna<br />Jasna (bateria!)<br />Kolor akcentu - wiodący<br />Automatyczne skinowanie kontrolek wbudowanych<br />Możliwość nadpisania każdego elementu skórki<br />
  25. 25. Themes (skórki)<br />Domyślne zasoby globalne<br />http://msdn.microsoft.com/en-us/library/ff769552(VS.92).aspx<br />Projektowatnie interfejsu - wyświetlacz<br />OLED (OrganicEmittingDiode)<br />Czerń – połowa mocy LCD<br />Biel – trzykrotna moc LCD<br />30 klatek na sekundę<br />
  26. 26. Kontrolki systemowe<br />Menu „Application Bar”<br />Maksymalnie 4 przyciski<br />Menu – rzadziej używane zadania<br />Możliwa przezroczystość<br />System Tray (możliwość schowania)<br />
  27. 27. Grafika - Silverlight<br />Kontrolka Image<br />JPEG i PNG (XNA dodatkowo GIF)<br />Źródło<br />Buildaction = Resource lub Content<br />Internet URL<br />BitmapImage<br />newBitmapImage(URI)<br />ImageOpened, ImageFailed, DownloadProgress<br />Rozmiar aplikacji vs rozmiar zdjęć<br />Camerachooser<br />
  28. 28. Orientacja ekranu<br />Możliwość obrócenia ekranu<br />Akcelerometr<br />Klawiaturka<br />Obsługa automatyczna<br />Własne zdarzenie <br />(dodatkowe operacje)<br />
  29. 29. Panorama<br />
  30. 30. Pivot<br />
  31. 31. Efekt Tilt<br />Efekt „pływających” przycisków<br />Dołączany jako Attached Property<br />ButtonBase, ListBoxItem<br />NajcześciejPhoneApplicationFrame<br />Możliwe włączenie dla wybranego kontenera<br />Właściwości<br />IsEnabled<br />SuppressTilt<br />
  32. 32. demo<br />
  33. 33. Interakcja<br />TextBox zintegrowany z Software Input Scope<br />Tekst, URL, liczba, czas, telefon, e-mail, hasło, chat<br />Klawiatura - opcjonalnie<br />
  34. 34. Touch w Silverlight<br />TouchPanel.GetCapabilities<br />IsConnected<br />MaximumTouchCount<br />TouchPanel.GetState()<br />Niskopoziomowo – Touch.FrameReported<br />GetTouchPoints<br />GetPrimaryTouchPoint i args.SuspendMousePromotionUntilTouchUp()<br />TouchPoint -> TouchDevice.DirectlyOver<br />Zdarzenia Manipulation (max 2 punkty)<br />ManipulationStarted, ManipulationDelta, ManipulationCompleted<br />ManipulationDeltaEventArgs– Velocities, FinalVelocities<br />LinearVelocity, ExpansionVelocity<br />Dla kontrolki (sender)<br />Dla kontenera (args.OriginalSource – RoutedEvents)<br />
  35. 35. Gesty<br />
  36. 36. Gesty<br />Standardowe kontrolki automatycznie<br />Silverlight Toolkit<br /><Grid x:Name="LayoutRoot" Background="Transparent"><br /> <toolkit:GestureService.GestureListener><br /> <toolkit:GestureListener x:Name="gl" /><br /> </toolkit:GestureService.GestureListener><br /></Grid><br />XNA Gestures<br />ManipulationCompleted<br />TouchPanel.ReadGesture();<br />
  37. 37. demo<br />
  38. 38. Nawigacjadomyślnie w Silverlight<br />Application<br />UserControl<br />Content<br />Content<br />Content<br />
  39. 39. Silverlight 3 Navigation<br />Application<br />Application<br />UserControl<br />UserControl<br />Frame<br />Page 3<br />Page 1<br />Page 2<br />Content<br />Content<br />Content<br />
  40. 40. Windows Phone 7<br />?<br />Application<br />Application<br />UserControl<br />Frame<br />Frame<br />Page 3<br />Page 1<br />Page 2<br />Page 3<br />Page 1<br />Page 2<br />
  41. 41. Nawigacja<br />PhoneApplicationFrame, PhoneApplicationPage<br />Przycisk wstecz<br />Przełączanie między aplikacjami<br />Możliwość nadpisania obsługi zdarzenia <br />OnNavigating(ed)From, OnBackKeyPress<br />e.Cancel<br />NavigationService<br />GoBack, CanGoBack<br />NavigateTo<br />GoForward – brak<br />UriMapper<br />
  42. 42. demo<br />
  43. 43. Świat pełen przerwań…<br />phone calls<br />low battery<br />lock screen<br />reminders<br />App<br />switch<br />
  44. 44. Tombstoning<br />Brak przetwarzania w tle<br />Długotrwałe obliczenia – chmura<br />Aplikacja nigdy nie działa w tle – system ją zatrzymuje<br />Cykl życia aplikacji<br />Running<br />Closing<br />Deactivating<br />Activating<br />Stan aplikacji <br />Stan wizualny – focus, scroll, itp.<br />
  45. 45. Tombstoning<br />Zamrażanie aplikacji<br />Dostępne zdarzenia<br />Launched (uruchomienie)<br />Closed (przycisk back)<br />Deactivated (przycisk start, telefon, sms, …)<br />Activated (przycisk back po wyjściu z aplikacji)<br />Debugowanie<br />Ponownie F5 w ciągu 10 sekund<br />
  46. 46. Przywracanie stanu<br />PhoneApplicationPage<br />Ustawienia pojedynczej strony<br />OnNavigatedFrom<br />OnNavigatingFrom<br />OnNavigatedTo<br />PhoneApplicationService.Current.State<br />Dane tymczasowe (np. stan interfejsu użytkownika)<br />Dictionary<string, object><br />Wyłącznie obiekty serializowalne<br />Publiczny bezparametrowy konstruktor<br />
  47. 47. Wyjątki<br />PhotoChooserTask<br />CameraCaptureTask<br />MediaPlayerLauncher<br />EmailAddressChooserTask<br />PhoneNumberChooserTask<br />Multiplayer Game Invite [games]<br />Gamer You Card [games]<br />
  48. 48. Isolated Storage<br />Ustawienia globalne aplikacji<br />IsolatedStorageSettings<br />IsolatedStorageFile<br />Wirtualne pliki przechowywane w pamięci flash<br />Brak ograniczeń przestrzeni<br />
  49. 49. demo<br />
  50. 50. Akcelerometr<br />+Y<br />Mierzy siłe przyłożoną <br />do każdej osi<br />-Z<br />-X<br />Przynajmniej 1 sensor<br />Grawitacja i inne źródła<br />W planach kalibracja<br />+X<br />+Z<br />-Y<br />
  51. 51. Akcelerometr<br />Microsoft.Devices.Sensors<br />Wektor X, Y, Z (zasada prawej dłoni)<br />Wartość - twierdzenie pitagorasa<br />1 = 1g (przyspieszenie ziemskie)<br />Standardowa pozycja: [0, 0, -1]<br />Możliwe odchylenie ok. 10%<br />Accelerometer.ReadingChanged<br />Dispatcher!<br />
  52. 52. demo<br />
  53. 53. Launchers<br />MediaPlayerLauncher<br />PhoneCallTask<br />PhoneNumberChooserTask<br />PhotoChooserTask<br />SaveEmailAddressTask<br />SavePhoneNumberTask<br />SearchTask<br />SMSComposeTask<br />WebBrowserTask<br />CameraCaptureTask<br />EmailAddressChooserTask<br />EmailComposeTask<br />MarketplaceDetailTask<br />MarketplaceHubTask<br />MarketplaceReviewTask<br />MarketplaceSearchTask<br />
  54. 54. Choosers<br />EmailAddressChooserTask<br />CaptureCameraTask<br />PhoneNumberChooserTask<br />PhotoChooserTask<br />
  55. 55. demo<br />
  56. 56. Kontrolka Web Browser<br />Zdalna i lokalna zawartość<br />Obsługa gestów – pan, doubletap, pinch<br />Transformacje<br />Możliwość interakcji z JavaScript<br />Prywatność<br />Skrypt domyślnie wyłączony<br />Ciasteczka i cache wyizolowane<br />
  57. 57. Silverlight -> JS<br />string out = <br />wb.InvokeScript("runScriptStuff", arg1, arg2);<br />javascript<br />function runScriptStuff(arg1, arg2)<br />{ return “awesome”; }<br />
  58. 58. JS -> Silverlight<br />void wb_ScriptNotify(object s, NotifyEventArgs e)<br />{<br />string return = e.Value;<br />}<br />javascript<br />window.external.Notify(string);<br />
  59. 59. demo<br />
  60. 60. Lokalizacja<br />GPS<br />+Dokładność<br />-Energia<br />-Szybkość<br />-Zasięg<br />-Dokładność<br />+Energia<br />+Szybkość<br />-Zasięg<br />WiFi<br />+/-Dokładność<br />+/-Energia<br />+/-Szybkość<br />+/-Miasta<br />Nadajniki BTS<br />Location services<br />
  61. 61. Usługi lokalizacyjne<br />Analogiczne API do Windows 7<br />Kompromis pomiędzy dokładnością, <br />czasem i energią<br />Jednorodne API pomiędzy urządzeniami<br />
  62. 62. A-GPS<br />Assisted GPS<br />System.Device.Location<br />GeoCoordinateWatcher<br />GeoPostitionAccuracy: High | Default<br />PositionChanged<br />PositionChanged udostępnia e.Position.Location<br />Longitude (-180 – 180), Latitude(-90 - 90)<br />VerticalAccuracy, HorizontalAccuracy- dokładność<br />Speed - szybkość<br />Course (0-360) - kierunek<br />Altitude – wysokość<br />GeoCoordinate -> GetDistanceTo<br />
  63. 63. Bing Maps<br />https://www.bingmapsportal.com/<br />Bezpłatne dla rozwiązań mobilnych<br />Usługi (SOAP, JSON, REST …)<br />Geocode / ReverseGeocode – adresy<br />Search – np. restaurant in Warsaw<br />Imagery Service – grafika<br />Route– trasy<br />Kontrolka Bing Maps dla WP7<br />
  64. 64. demo<br />
  65. 65. Notyfikacje push<br />Komunikacja inicjowana przez serwer<br />Analogiczne do Exchange Push<br />Przetwarzanie po stronie serwera<br />Oszczędza baterię i poprawia użyteczność<br />
  66. 66. Typy notyfikacji<br />14<br />15<br />New photos online!<br />Seattle, WA: Sunny and 85 degrees<br />
  67. 67. Notyfikacje push<br />Push client<br />Tile<br />Toast<br />Open push channel<br />Return URI<br />Data to toast<br />Data to tile<br />Data to App<br />App<br />Send URI to server<br />Send push data to client<br />Push service<br />Your service<br />Event<br />Send push data to URI<br />
  68. 68. Push<br />HttpNotificationChannel<br />Jeden dla aplikacji<br />Konieczne uzupełnienie Publisher w WMAppManifest<br />
  69. 69. Usługa push - odpowiedzi<br />Status notyfikacji<br />Received<br />QueueFull<br />Suppressed<br />Dropped<br />Status urządzenia<br />Connected<br />TemporarilyDisconnected<br />Status subskrybcji<br />Active,<br />Expired<br />
  70. 70. demo<br />
  71. 71. Kafelki<br />Notyfikacje push<br />ShellTileSchedule<br />Aktualizacja ikony aplikacji<br />Minimum 1h<br />Jednorazowo lub cyklicznie<br />
  72. 72. Integracja z OS<br />Launchers („uruchom i zapomnij”)<br />Choosers („okna dialogowe”)<br />MediaLibrary<br />MediaHistoryTask<br />Pictures<br />Share<br />Extras<br />
  73. 73. demo<br />
  74. 74. Wibracja<br />Uruchamia wibrację na dany okres czasu<br />Przywołanie uwagi użytkownika<br />Powiadomienia o zmianach<br />Itp..<br />VibrateControllervc = VibrateController.Default;<br />vc.Start(TimeSpan.FromSeconds(3));<br />
  75. 75. Media<br />Obsługa mediów<br />Dekodowanie sprzętowe<br />PlayReady DRM<br />Ograniczenia MediaElement<br />Tylko jeden<br />Brak VideoBrush (przysłanianie, itp.)<br />Radio FM<br />
  76. 76. Integracja z XNA<br />Dostępne wszystkie assembly oprócz:<br />Microsoft.Xna.Framework.Game<br />Microsoft.Xna.Framework.Graphics<br />SoundEffect<br />Większa wydajność niż MediaElement<br />SoundEffectse = <br />SoundEffect.FromStream(TitleContainer.OpenStream("hand-clap-1.wav")); <br />soundEffectInstance= se.CreateInstance(); <br />soundEffectInstance.IsLooped= true; <br />soundEffectInstance.Play();<br />
  77. 77. Integracja z XNA (2)<br />Mikrofon <br />RAW PCM WAV<br />DynamicSoundEffectInstance – dźwięki dynamicznie<br />MediaLibrary<br />Obrazy i muzyka (bez DRM)<br />Także zapis zdjęć (muzyki nie)<br />Song (Song.FromUri(„”), MediaPlayer.Play(song)<br />MathHelper, Vector, itp.<br />GameServices<br />
  78. 78. Integracja z XNA (3)<br />Gesty – Microsoft.Xna.Framework.Input.Touch<br />
  79. 79. demo<br />
  80. 80. Inne<br />Blokada ekranu<br />Menu kontekstowe<br />
  81. 81. demo<br />

×