930 likes | 1.15k Views
Programowanie urządzeń mobilnych. Bartłomiej Zass Microsoft. Plan prezentacji. Aplikacje mobilne w HTML i JavaScript Aplikacje natywne Windows 8, Windows Phone 7 – krótkie przypomnienie Windows Phone 8 dla programistów Techniki współdzielenia kodu dla aplikacji natywnych
E N D
Programowanie urządzeń mobilnych Bartłomiej Zass Microsoft
Plan prezentacji • Aplikacje mobilne w HTML i JavaScript • Aplikacje natywne • Windows 8, Windows Phone 7 – krótkie przypomnienie • Windows Phone 8 dla programistów • Techniki współdzielenia kodu dla aplikacji natywnych • Windows Phone 8, Windows 8 – podobieństwa i różnice • Architektura aplikacji - MVVM i Portable Class Libraries
Dlaczego HTML i Javascript? • Jedyny wspólny mianownik między platformami • Przeglądarki internetowe w urządzeniach mobilnych • Osadzone kontrolki przeglądarki w natywnych aplikacjach • A może C++? • Windows Phone 8 obsługuje C++ • Objective-C to NIE C++ “79% of mobile developers report that they will integrate some HTML5 in their apps in 2012” Appcelerator/IDC – Q1-2012 – Mobile Developer Report
Javascript dzisiaj • Natywne aplikacje dla Windows 8 • Gry – np. Cut The Rope, Angry Birds • Office 2013, Sharepoint • Node.js • Cała masa bibliotek – nie tylko jQuery! • „Model-View-Whatever” w Javascript • np. Knockout, Angular, Backbone, Mustache • Ciekawostki • http://jscriptlinq.codeplex.com/ - LINQ w JS • http://bellard.org/jslinux/ - implementacja Linux w JS
TypeScript • Nowy język autorstwa Andersa Hejlsberga (twórca C#) • Nadzbiór Javascript • Nie trzeba uczyć się nowej składni • Silnie typowany Javascript • Klasy, interfejsy, dziedziczenie, modyfikatory dostępu, ... • Częściowa zgodność z propozycją ECMAScript 6 • Refactoring, wsparcie Visual Studio • Kompilowany do Javascript!
Demo TypeScript
Strategie - HTML 5 i aplikacje mobilne JQueryMobile SenchaTouch Jo Propulsion … Frameworki Javascript Cross-kompilacja Rozwiązania hybrydowe Mobilna strona Apache Cordova (PhoneGap) AppMobi … Titanium (Appcelerator) … Natywna platforma aplikacyjna Przeglądarka obsługująca HTML 5 OS platform
Demo jQuery Mobile
Apache Cordova • Dostęp do natywnych funkcji z poziomu JavaScript • Inaczej niż w Windows 8 – opakowana kontrolka przeglądarki • PhoneGap – popularna dystrybucja Apache Cordova • Obecnie własnością Adobe • PhoneGap Build Service • Aplikacje mogą być zgłaszane do sklepów • Windows Phone, Android, iOS, Symbian, BlackBerry, ... • Windows 8 póki co nie – może nie mieć sensu • Windows Phone 8 – nadal ma zastosowanie, pełne wsparcie
Demo PhoneGap i Windows Phone
Aplikacje natywne Windows 8 – krótkie przypomnienie Windows Phone
Platforma Windows 8 Windows Store Apps Desktop Apps HTML JavaScript HTML / CSS XAML View JavaScript (Chakra) C C++ C# VB Model Controller C# VB C C++ WinRT APIs Devices & Printing Communication & Data Graphics & Media System Services .NET / SL Internet Explorer Win32 Application Model Windows Core OS Services Core
Demo Windows 8 i Windows Phone 7
Nowe telefony, nowe rozdzielczości, … • wiele rdzeni procesora, • nowy procesor graficzny, • nowoczesna architektura, • karty MicroSD, • NFC, • … 720p 1280 x 720 16:9 WXGA 1280 x 768 15:9 WVGA 800 x 480 15:9
WVGA 480x800 1.0 Scale WXGA 768x1280 1.6 Scale 720p 720x1280 1.5 Scale 400 Logical 640 Physical 400 Logical 600 Physical 400 Logical 400 Physical 2 Logical 3 Physical (Rounded) 2 Logical 3 Physical 2 Logical 2 Physical 30 Logical 48 Physical 30 Logical 45 Physical 30 Logical 30 Physical Myśl o layoutach wpikselach WVGA Myśl o grafice / filmach wWXGA
Windows Phone 8 i Windows 8 • Wspólne jądro systemu – Windows NT • Te same komponenty systemowe • Sieć, kernel, grafika, system plików, multimedia • Wspólny model sterowników • Obsługa wielu rdzeni w Windows Phone • Solidna, nowoczesna platforma do przyszłej rozbudowy • Ten sam CLR • Nie oznacza to dokładnie tego samego API • Obecnie - wiele podobieństw • W przyszłości - na pewno bardzo dużo wspólnego kodu
Windows Phone 8 API Aplikacje managed wykorzystujące WP 7.1, WP 8.0 .NET oraz WinPRT API Natywne aplikacje wykorzystujące WinPRT i Win32 Gry wykorzystujące WP 7.1 XNA Framework Gry wykorzystujące Direct3D lub DirectX WP8.0 Games DirectX/Direct 3D & C++ WP8.0 XAML & C++ WP8.0 XAML & C#/VB with Direct3D Graphics WP8.0 XAML & C#/VB WP7.1 XNA & C#/VB WP7.1 XAML & C#/VB .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed & Native Managed Native
.NET API for Windows Phone • Zarządzany kod • Wszystkie API z Windows Phone 7.1 • Przestrzenie nazw System oraz Microsoft.Phone • Wiele nowych klas dodanych w WP 8, np.: • Microsoft.Phone.Wallet • Microsoft.Phone.Tasks.ShareMediaTask • Microsoft.Phone.Tasks.MapsTask • Microsoft.Phone.Storage.ExternalStorage • Microsoft.Phone.Networking.Voip • …
Windows Phone Runtime API • Podzbiór pełnego WinRT + dodatki specyficzne dla telefonu • Windows (Phone) Runtime zaimplementowane w C++ • Projekcje do C#, VB.NET, C++ • Obecnie brak projekcji do HTML5/JavaScript Pełny WinRT(ok. 11,000 obiektów) • Specyficzne dla Windows Phone (wybrane): • Synteza i rozpoznawanie mowy • VOIP • Windows.Phone.PersonalInformation • LockScreen,LockScreenManager • Wszystkie i dodatki Podzbiór przeniesiony do Windows Phone Runtime (ok. 2,800 obiektów) Nowe dla Windows Phone Runtime (ok. 600 obiektów)
Win32 i COM API • Oprócz .NET i WinPRT API, dostęp do niektórych Win32 API, np.: • Winsock do niskopoziomowego oprogramowania połączeń • Camera APIs dla aplikacji natywnych • COM APIs takie jak CoInitializeEx, CoTaskMemAlloc, CoTaskMemFree, CreateFile2, ReadFile, WriteFile, HeapAlloc, CreateMutexExW, WaitForSingleObjectW,… • Głównie dla programistów piszących w kodzie natywnym • Możliwość dodania referencji w projekcie managed (rzadko potrzebne)
Aplikacje WP 7.x na systemie WP 8.0 bez rekompilacji • Aplikacje stworzone na WP 7.x będą działały na telefonach z systemem WP 8.0 WP OS 8.0 app WP OS 7.1 app WP OS 8.0 app WP OS 7.1 app +Quirks WP 8.0 Runtime/Libraries
Twoje centrum dowodzenia aplikacjami http://dev.windowsphone.com
Konto deweloperskie • Nie jest wymagane do tworzenia aplikacji • Jest wymagane do testowania aplikacji na urządzeniu i publikacji jej w Windows Phone Store • Jak je otrzymać?: • znajduje się w MSDN, • studenci bezpłatnie poprzez Dreamspark, • płacąc 99$ rocznie per programista.
Wymagania sprzętowe dla WP SDK 8.0 • System operacyjny: • Windows 8 x64 • Hardware: • zalecane 4GB RAM, • 8GB wolnej przestrzeni dyskowej • WP Emulator wymaga Second Level AddressTranslation(SLAT)
Lock the Screen na emulatorze • Z klawiatury: • Dwa razy F12 • Simulation Dashboard
Symulacja sieci • Dostępne w simulationdashboard • Testowanie dla różnych warunków sieci
Zrzuty ekranu • Na emulatorze • Na urządzeniu • Przyciski Win + power
Wydajność aplikacji • Czas startu bardzo ważny z punktu widzenia użytkownika • Facebook • WP 7 – 12 sekund • WP 8 – 4 sekundy • Dlaczego? • Zmiany w środowisku uruchomieniowym • Usprawnienia CoreCLR • Kompilowanie w chmurze • Dual core > 1 ghz
Kompilowanie w chmurze • CoreCLR dodaje wsparcie dla NGEN • Czasochłonne na urządzeniu • Po zgłoszeniu aplikacji do Windows Store automatyczny NGEN • Nowe aplikacje • Zgłaszamy XAP • XAP aktualizowany – kod natywny • Co z istniejącymi aplikacjami? • Aplikacje WP 7.5 kompilowane przez NGEN dla WP 8 • Oryginalny XAP pozostaje dla WP 7.x
Model aplikacji • Użytkownicy oceniają aplikację na podstawie własnych doświadczeń • 4 sekundy to wciąż długo, jeśli często uruchamiamy aplikację • Za każdym razem wchodzenie do określonej sekcji aplikacji • Fast Application Swithing – WP 7.x • Przycisk wstecz • Taskswitcher– wielu użytkowników nie wie o nim
Fast Application Resume • Aplikacja może być wskrzeszana niezależnie od tego jak została uruchomiona • Lista aplikacji • Live Tile • Toast • Deep link • Jeśli jest na stosie – przywracanie • Jeśli nie ma jej na stosie – nowa instancja • Podobnie jak w Windows 8
Włączanie Fast Application Resume • Domyślnie wyłączone • Ochrona interfejsu użytkownika • Pewność, ze aplikacje będą działały prawidłowo • Bardzo proste do włączenia • Nowy atrybut ActivationPolicyw DefaultTask <DefaultTaskName="_default"NavigationPage="MainPage.xaml" ActivationPolicy="Resume"/>
Kontrolki • ProgressBar animuje się poza wątkiem UI • Panorama, Pivot i LongListSelector przeniesione do ROM • Mniejsze zużycie pamięci przez kontrolkę Panorama • Poprawiony „firsttouchexperience” • Toolkit – http://phone.codeplex.com
LongListSelector JumpList Grid View StickyHeaders
Nowa kontrolka do wyświetlania map • Nowa kontrolka korzysta z technologii i zasobów Nokia • Zawiera m.in.: • Bazuje na wektorach • cztery modele kartograficzne • tryb jasny i ciemny • informacje o ruchu, trasach itp.
Nowe API służące do lokalizacji • Bliźniacze do API w Windows 8 • Windows Phone OS 7.1 .NET Location API nadal jest wspierane • Backgroundtask pobierający lokalizację urządzenia • Tylko 1 agent • Tylko kiedy aktywnie śledzi położenie
Jak włączyć? <DefaultTaskName="_default"NavigationPage="Views/Home.xaml"> <BackgroundExecution> <ExecutionTypeName="LocationTracking" /> </BackgroundExecution> </DefaultTask>
Nowe wielkości i szablony kafelków • W Windows Phone 8 możemy korzystać z trzech typów Tile: • Flip – dwa „rotujące” obrazki (tożsame z WP 7.1 Tile) • Iconic – sama pojedyncza ikona • Cycle – „rotacja” do dziewięciu różnych obrazków
Dostęp do Lockscreen • Użytkownik może dodać powiadomienia z naszej aplikacji (LockScreen Notification) • Nasza aplikacja może zmienić tło zablokowanego ekranu (LockScreenBackground) • New Shell APIs • ShellSetWallpaper to use a new image • ShellWallpaperSchedule to download a single image from the internet on a specific interval (e.g., 30 mins, 1 hour, etc.) • ShellWallpaperFolderSchedule to cycle through a set of image in app’s isolated storage (e.g., a photo slideshow) based on number of views of the lock screen
Zestaw nowych launcherów • SaveAppointmentTask • ShareMediaTask • MapDownloaderTask • MapsTask • MapsDirectionsTask
Komendy głosowe i rozpoznawanie mowy • Voice Commands umożliwia uruchomienie aplikacji, lub jej konkretnej funkcji, za pomocą głosu, po przytrzymaniu przycisku Start • Speech Recognition + Text-to-Speech APIwspiera przekształcenie mowy w tekst i czytanie już zapisanego teksu
Portfel • Możliwość zarządzania kartami i „kuponami” z poziomu własnej aplikacji • Obsługa kart: • kredytowych i debetowych, • lojalnościowych, • specjalnych ofert, • Wsparcie dla „tap to pay”
Nowe możliwości aparatu fotograficznego i przetwarzania zdjęć • Lenses = rozszerzenia do kamery oferujące nowe opcje, możemy tworzyć je sami i udostępniać użytkownikom • Picture.GetPreviewImage()= miniaturka obrazka • Integracja aplikacji z Photo Edit Picker lub rejestracja jako własny edytor • Upload zdjęć w tledo zewnętrznych serwisów • Zaawansowana kontrola (klasy PhotoCaptureDevicei AudioVideoCaptureDevice)