Windows Phone 7 - wstęp Andrzej Chybicki
Windows Phone 7 - początki Microsoft o Windows Phone 7: In golf, it’s known as a “mulligan”; in schoolyard sports, it’s called a “do-over”; and in the computer industry, we say it’s a “reboot.” Dwie ścieżki programowania : - XNA -Silverlight Silverlight – platforma developerska łącząca wygodę tworzenia interfejsu, automatycznym łączeniem zdarzeń z możliwością zaawansowanego przetwarzaniem danych XNA – platforma developerska do tworzenia gier (2D i 3D), -game-loop -XBOX, PC, Zune (mobile)
Środowisko pracy aplikacji Kod w pełni zarządzalny przez .NET Framework Języki programowania Sugerowane rozwiązanie – C# XNA i Silverlight współdzieli niektóre biblioteki, ale nie można tworzyć projektów „mieszanych”
Silverlight vs. XNA Dla aplikacji użytecznych (RIA) XAML (Extensible Application Markup Language ) Interfejs użytkownika Przekazywanie zdarzeń Niektóre elementy logiczne oraz animacyjne WP7 Silverlight = Silverlight 3 – niektóre rzeczy, których nie można zrobić na telefonie + niektóre rzeczy które można zrobić tylko na telefonie
XNA vs. Silverlight Gry, aplikacje medialne, animacje z interakcją z użytkownikiem wymagające zaawansowanego renderowania grafiki Wewnętrzna synchronizacja wątków odświeżania i użytkownika 2D (sprites) i 3D (models) Silverlight (vector graphics) vs. XNA (bitmap graphics) Time-steered vs. user (event) steered apps
Two Flavors of Applications High performance game framework Rapid creation of multi-screen 2D and 3D games Rich content pipeline Mature, robust, widely adopted technology spanning Xbox 360, Windows, and Zune Modern XAML/event-driven application UI framework Rapid creation of visually stunning apps Metro-themed UI controls HTML/JavaScript 500,000 developers spanning Windows and web
Windows Phone 7 jest w chmurze! Mapy Bing (LBS) Xbox Live Windows Phone Marketplace
General Concept Software Architecture App Model Cloud and Integration Services Hardware Foundation UI Model General Concept
New Concept DESIGN: END USER COMES FIRST PLATFORM: RICHER, DEEPER, EASIER APPS HARDWARE: FASTER TO MARKET, LESS HEAVY LIFTING
Metro UI
Hardware Foundation (in 7.0) MIX 11 3/26/2017 Hardware Foundation (in 7.0) Capacitive touch 4 or more contact points 800 Sensors A-GPS, Accelerometer, Compass, Light, Proximity, Camera 5 mega pixels or more Multimedia Common detailed specs, Codec acceleration Memory 256MB RAM or more, 8GB Flash or more GPU DirectX 9 acceleration CPU Qualcomm MSM8x55 800Mhz or higher Hardware buttons | Back, Start, Search 480 © 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.
Sprzęt, wymagania i usługi Wielodotykowy ekran OLED (“organic light emitting diode”) Przyciski: Rozmiar ekranu: 480 x 800 (480 x 320) (160 px) Modem 3G, Wi-fi, Camera, Akcelerometr Vibration FM Radio Push Notification
Windows Phone Developer Tools Phone Emulator Samples Documentation Guides Community Packaging and Verification Tools Tools Windows Phone device Packaging & Verification Tools Windows Phone Emulator myapp.xap
Deployment Process Develop & Debug Submit & Validate Certify & Sign Windows Phone Application Deployment Service Marketplace
Certyfikacja aplikacji – główne filary Applications are reliable. Applications make efficient use of resources. Applications do not interfere with the phone functionality. Applications are free of malicious software.
Obszary procesu certyfikacji Application Policies Content Policies Application Submission Requirements Technical Certification Requirements Additional Requirements for Specific Application Types Patrz materiały do wykładu
Application Policies – Aplikacja… …musi być w pełni funkcjonalna i nie może żądać dodatkowej opłaty za udostępnienie swojej funkcjonalności, chyba że… … nie może promować planów taryfowych połączeń … nie może stanowić zagrożenia dla bezpieczeństwa telefonu oraz Marketplace … jeśli aplikacja pobiera lub zajmuje ponad 50 MB danych musi poinformować o tym użytkownika … jeśli wymaga uwierzytelniania w komunikacji peer2peer należy się upewnić że użytkownik ma ponad 13 lat
Application Policies (2)– Aplikacja… … może określać pozycję tylko na podstawie API ... może udostępniać lokalizację tylko za zgodą użytkownika … musi spełniać jeszcze inne wymagania : patrz materiały do wykładu
Content Policies Logo i znaki towarowe aplikacja może (powinna) posiadać swoje logo Może korzystać z innych znaków towarowych pod warunkiem akceptacji właściciela Nie może zawierać treści niezgodnych z prawem, w szczególności Promowanie przemocy, rasizmu, alkoholu, broni palnej i innych Treści, które ogólnie nie są obraźliwe ale mogą być uznane za takie w niektórych krajach ->treść powinna uwzględniać aspekt prawny każdego kraju w jakim MarketPlace oferuje swoje aplikacje
Application Submission Requirement Maksymalny rozmiar pliku XAP – 225 MB Używanie tylko API Windows Phone Zabronione jest korzystanie z metod wywołania typu Pinvoke oraz obiektów COM Nie może zawierać konfiguracji DEBUG Nie jest możliwe łączenie technologii XNA i Silverlight Microsoft.Xna.Framework.Game System.Windows.Controls Phone Capabilites czyli prawidłowy Manifest
Technical Certification Requirements Kompatybilność z różnymi telefonami WP 7 (2) Unexpected closure Responsywność aplikacji Operacji trwające dłużej niż 3 sekundy muszą być obsługiwane przez ProgressBar lub BusyIndicator W momencie przekazania aplikacji do MarketPlace wszystkie zdalne serwisy i zasoby aplikacji muszą być dostępne i wpływają na proces certyfikacji! Czas startu i responsywności po starcie – 5 s. i 20 s.
Technical Certification (2) Elementy obsługi przycisków telefonu…. Zajętość pamięci Max 90 MB RAM, dla urządzeń do 256 MB RAMU całkowitego Zaleca się użycie obiektów DeviceExtendedProperties DeviceStatus Aplikacja nie może blokować , opóźniać, przerywać odbioru połączeń telefonicznych, wiadomości SMS oraz innych zdarzeń wywoływanych z poziomu OS
Additional Requirements Lokalizacja Jeśli użytkownik nie życzy sobie … Aplikacje działające w tle a oszczędność baterii Aplikacje działające w tle do pobierania danych Muszą umożliwiać podgląd stanu zaawansowania pobierania oraz anulowania
Software Architecture App Model Cloud and Integration Services Hardware Foundation UI Model Software Architecture
Silverlight Capabilities Inputs Keyboard, Mouse, Touch, Ink XAML UI Core Common Controls, Text, Images, Data Binding, Page Navigation, Vector Graphics, Animation, Transformation, Styles and Templates Media Capture and Playback, VC1, WMA, MP3 Data LINQ to Objects, LINQ to XML, Isolated Storage, XML Base Class Library Generics, Collections, Cryptography, Threading Communication REST, RSS/ATOM, SOAP
Multitouch OOB Controls support touch Translate touch events to mouse events ScrollViewer has built-in support for pan and flick Manipulation for all UIElements Scale Translate
Keyboard Silverlight TextBox integrates with the SIP (on screen keyboard) Password has a delay SIP supports input scoping Key InputScopes: Text, Url, Number, Time, TelephoneNumber, EmailNameOrAddress
Media Media support H/W decode MediaStreamSource PlayReady DRM MediaElement Limitations One MediaElement only XNA sound effect API Supports polyphonic, looping wav data
Isolated Storage Compatible APIs with Silverlight on desktop No quota limits Not shared No write access to Media Library, use XNA for that Use for your application settings
Application Model Software Architecture App Model Cloud and Integration Services Hardware Foundation UI Model Application Model
Activation and Navigation Activation Events Handled by the Application instance Launching, Activated, Deactivated and Closing Navigation Events Handled by each PhoneApplicationPage class OnNavigatedTo, OnNavigatedFrom, OnBackKeyPressed, OnChooserReturn, OnOrientationChanged Controlled by Hardware using Back and Home keys Software using Navigation Service
Application Lifecycle Developer should check the IsApplicationInstancePreserved property to know if the application is returning from being dormant or tombstoned state. If it’s value true, then the application was in dormant state else tombstoned state. Application Lifecycle Load State!
Application Bar and System Tray No integration, but does affect Layout Show:Hide using SystemTray.IsVisible Application Bar Up to 4 Buttons Menu Items (Recommended 6) Toggle Visibility <mypage>.ApplicationBar.IsVisible
Panorama Part of the native Windows Phone look and feel Panorama is a long horizontal canvas PanoramaItem serves as a container that hosts other content and controls
Pivot Provides a quick way to manage views or pages Pivot is a container of pivot items PivotItem contain individual page content such as controls, grids, or links
Many more… Standard Controls Buttons, Image, Layout, ListBox, TextBox, Slider, Other… Bing Maps Bing Map Control, Integration with Bing Maps Services Deep Zoom Included in core run-time , Optimized to take advantage of GPU, Consumes same content as SL on desktop, Supported for Online content Web Browser Displays network and local content, Supports pan, double tap and pinch to zoom, Supports transforms & projections, Application can interact with javascript
Integration Services Software Architecture App Model Cloud and Integration Services Hardware Foundation UI Model Integration Services
Launchers & Choosers Enable applications to provide a set of common phone tasks to their users Launchers let you fire and forget SMS, Email, Web Browser, Dialer, Search, etc. Choosers let you fire and pick the results back Picture, Camera, Contact, etc.
Push Notifications
Types of Push Notifications Tile notifications Update tile count, title and background image Toast notifications Display a on-top-like message Raw notifications Can be used in application logic
Location and Services The service obtains location data from multiple sources such as GPS, Wi-Fi, and cellular Applications can access location information Allows you to create location- aware applications
Accelerometer +Y +X +Z Measures force applied on each axis over time Determine in which direction the user is moving the device Expressed as a 3-dimensional vector +Y -Y +X -X +Z -Z
Register Your Device Test on a physical device Register your device Install, run, and debug unsigned applications Use Zune to register your device
Programowanie Windows 7!! Visual Studio 2010 Zune software (zamiast ActiveSync) Oczywiście będą problemy z deployowaniem aplikacji na Windows Mobile (dlaczego ma być zbyt prosto?) Co trzeba zrobić aby zsynchronizować kalendarz Windows XP z Windows Phone 7? UŻYĆ GOOGLA!!
Pierwsza aplikacja Silverlight Windows Phone Application WMAppManifest.xml Title="SilverlightHelloPhone„ Deployowanie na emulator albo prosto do urządzenia Rozdzielczość ekranu emulatora jest taka sama jak w urządzeniu Możliwość zmiany orientacji emulatora
Układ plików projektu Silverlight Cztery główne pliki każdego projektu: App.xaml MainPage.xaml App.xaml.cs MainPage.xaml.cs Postulat „code-behind”
App.xaml.cs, App.xaml oraz App.g.cs
MainPage.cs.xaml - > MainPage.g.cs Element w Silverlight i XML Hierarchia obiektów:
/bin/Debug Plik XAP – spakowany, przekompilowany projekt
A teraz „Hello World” w XNA Brak wbudowanych czcionek Czcionka jest bitmapą! Wszystko jest bitmapą! Czcionka musi być osobno zaimportowana do projektu (problemy licencyjne)
Game.cs – główna część projektu w XNA
Orientacja (Sliverlight) Portrait, Landscape, PortraitOrLandscape Orientacja a dynamiczne lokowanie komponentów (dynamic layout) HorizontalAlignment VerticalAlignment
Wynik
Marigin i padding Atrybuty: ActualWidth SizeChanged Loaded ActualSize LayoutUpdated
Powiązywanie zdarzeń poprzez XAML
Wykrywanie zmiany orientacji
Orientacja XNA BackBuffer i jego rola BackBuffer a wydajność
Obsluga zmiany orientacji w XNA
Dotyk w WP7 (XNA) 4 przyciski równocześnie Obsługa przez zdarzenia (Sliverlight) W XNA sprawdzanie robimy w metodzie Update (TouchPanel) TouchCollection touchLocations = TouchPanel.GetState(); State : Pressed, Moved, Released. Position ( Vector2 ) Id TouchLocation previousTouchLocation; bool success = touchLocation.TryGetPreviousLocation(out previousTouchLocation);
Dotyk w XNA - przykład
Gesty!! Tap, doubleTap, pinch, pinchComplete, fredrag, HorizontalDrag, VerticalDrag, DragComplete
Dotyk w WP7 (Silverlight) Low-level Zdarzenie Touch.FrameReported (XNA TouchPanel), nie zawiera gestów TouchPoint Action (Down, Move, and Up). Position (Point), Size TouchDevice High-level 3 zdarzenia w klasie UIElement ManipulationStarted, ManipulationDelta, ManipulationCompleted
Routed Event handling args.Handled = true;
Bitmapy (XNA) Definicja bitmapy w Silvelight (vector drawing, image, bitmap) a w XNA (Texture2D) BMP, JPG(S), PNG(S)
Bitmapy (Silverlight) <Image Source="Images/Hello.png" Stretch="None" /> W Silverlight można pobierać obrazek z URL:
Bitmapy (XNA)
Camera
Photo Library (XNA)
Photo Library Silverlight
Sensory w WP7 - akcelerometr
Akcelerometr w XNA