niedziela, 23 maja 2010

15 minut o Silverlight na Windows Phone 7 - materiały z Visual Studio 2010 Community Launch w Krakowie

Poniżej zamieszczam materiały z mojego wczorajszego wystąpienia na Visual Studio 2010 Community Launch.


VSCL 2010: Windows Phone 7 - intro


VSCL 2010: Silverlight for Windows Phone 7 - hello world


VSCL 2010: Silverlight for Windows Phone 7 - sample application

        

Dodatkowo z myślą o tym evencie przygotowałem również nagranie pokazujące notyfikacje push we wszystkich trzech rodzajach. Z uwagi na dość krótki czas wystąpienia nie trafiło do ostatecznej wersji prezentacji.


Silverlight for Windows Phone 7 - weather service

środa, 19 maja 2010

Windows Phone 7 w Krakowie - 22.05.2010

W najbliższą sobotę będę miał przyjemność opowiedzieć o Silverlight na Windows Phone 7 na konferencji Visual Studio Community Launch 2010 w Krakowie.

p18

Pokażę m.in aplikację napisaną z uwzględnieniem najnowszych trendów UI oraz funkcjonalności Windows Phone 7, które są dostępne dla programisty od ostatniego odświeżonego wydania CTP. Więcej szczegółów nie mogę zdradzić. Wszystko wyjaśni się w sobotę !

piątek, 14 maja 2010

Windows Phone 7 - Suplement!

Odświeżone CTP dla Windows Phone 7 stwarza nowe możliwości z uwagi na odblokowane taski systemowe, obsługę tile (skrót do aplikacji na ekranie startowym)  oraz  związanego z nim rodzaju notyfikacji push. Standardowy obraz pozwala na uruchomienie wszystkich tasków systemowych! Czasami jednak nie ma możliwości ich wcześniejszego skonfigurowania, by były bardziej użyteczne.

To nie wszystko! Bardzo łatwo można pozyskać odblokowaną wersję obrazu działającą tym razem z Visual Studio !!! Można więc pokusić się o testowanie swoich aplikacji obok aplikacji systemowych z lepszą możliwością ich skonfigurowania. W niektórych przypadkach powoduje to efekt jakbyśmy się przesiedli z syreny do mercedesa -:)

Tym mocnym  technicznym uderzeniem zaczynam dzisiejszego posta!  Tak więc pobawimy się taskami systemowymi (w obrazie standardowym i odblokowanym). Zobaczymy co i jak działa, co działa mniej lub nie działa. Pokażemy wszystkie trzy rodzaje notyfikacji push oraz wspomnimy o usuwaniu certyfikatów z dll-ek Toolkita. Nie wiesz o co chodzi? Nie szkodzi. Na pewno więcej będziesz wiedział jak przeczytasz moją pisaninę.

Zacznijmy od tasków systemowych. Napisałem sobie taką syntetyczną stricte techniczną aplikację o nazwie WP7 TasksDemo.


Aplikacja WP7 TasksDemo

Składa się ona ze strony startowej, strony do zapisywaniu danych w kontaktach telefonu oraz przykładowego formularza z obrazkiem i danymi, które mogą być uzupełnione przy pomocy elementów znajdujących się na telefonie. Dodatkowo z użyciem tych danych można wykonać dodatkowe czynności. Achtung! Nie ma persystencji między kolejnymi uruchomieniami emulatora.

Jakie  konkretne czynności możemy zrobić  na Windows Phone 7 ?

Zapisywanie emaila lub numeru telefonu w kontaktach 


Zapisywanie numeru telefonu

Zapis polega na uruchomieniu modułu zarządzającego kontaktami. Możemy stworzyć nowy kontakt lub wybrać istniejący. Zostanie otwarty odpowiedni podformularz (emaila lub numeru telefonu) w ustawieniach danego kontaktu z podanym przez nas wcześniej tekstem, który możemy edytować. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wstawianie zdjęcia zrobionego kamerą


Wstawianie zdjęcia z kamery

Możliwe jest zrobienie zdjęcia bez kamery ? …Tak! Co prawda dostajemy “czerwoną kamerę”, ale możemy na niej prawym górnym przyciskiem cyknąć fotkę (nawet taki dźwięk słychać). Nasza aplikacja dostaje “białe zdjęcie” z małym czarnym prostokątem. W praktyce wyszło, że “czerwona kamera” pojawia się przy obecności w miarę nowej grafiki na komputerze (o wymaganiach dla emulacji GPU można przeczytać w dokumentacji), inaczej zobaczymy czarny ekran z migoczącym obszarem –:) Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wstawianie  zdjęcia  z kolekcji Pictures telefonu


Wstawianie wybranego zdjęcia

Używając zarówno standardowego jak i odblokowanego obrazu zobaczymy moduł obrazków bez obrazków! Czyli lipa? Ale screenshoty pokazują, że jednak jakoś się udało…  W odblokowanym obrazie możemy niezależnie otworzyć sobie wcześniej moduł Pictures przed otworzeniem go z poziomu naszej aplikacji. Jeśli to zrobimy, to wtedy przykładowe obrazki również pokażą się, gdy wywołamy moduł z poziomu aplikacji. Czyli jakaś niedoróbka … ale nie przeszkadza nam to cieszyć się wybraniem przykładowego obrazka, który pojawi się w naszej aplikacji!  

Wstawianie emaila lub numeru telefonu z kontaktów


Wstawianie emaila z kontaktów


Wstawianie numeru telefonu z kontaktów

Wybór emaila i numeru telefonicznego odbywa się podobnie. Należy wybrać kontakt z podanej listy. Aby lista była niepusta należy wcześniej dodać kontakty (przez taska zapisania do kontaktu - obraz standardowy i odblokowany lub stworzenie kontaktu w hubie People – obraz odblokowany). Nie każdy kontakt musi mieć zdefiniowany email i numer telefonu. W oknie wyboru prezentowana jest odfiltrowana lista kontaktów (np. wszystkie kontakty mające zdefiniowany email przy wyborze emaila). Do aplikacji jest przekazywany email lub numer telefonu wybranego przez nas kontaktu.

Wysyłanie maila


Wysyłanie maila

W obrazie standardowym oraz w odblokowanym - ale bez wcześniejszej konfiguracji konta pocztowego - dostaniemy informację o braku konfiguracji. W obrazie odblokowanym konfiguracja konta pocztowego odbywa się przez odpowiedni moduł (możemy wybrać predefiniowany rodzaj konta – m.in Windows Live, Outook, GMail - lub zdefiniować każde inne dowolne konto internetowe). Przy GMail i Windows Live konfiguracja zapisała mi się, ale przy próbie sychronizacji skrzynki dostałem informację o błędzie. Outlooka nie udało mi się do końca skonfigurować. Po skonfigurowaniu konta przy wysyłaniu maila z aplikacji dostajemy okno z wyborem konta pocztowego. Gdy wybierzemy jedno z wcześniej przez nas skonfigurowanych kont, wyświetli się nam edytor maila (możliwość predefiniowania tematu i treści wiadomości). Wiadomości przy GMail “wysyłały się bez błędu”, jednak nie udało mi się otrzymać żadnej z tych wiadomości-:) Być może wysyłanie w ogóle nie działa, ale zabawa i pole do dalszych eksperymentów są. Uwaga! Konfiguracja kont pocztowych zostanie utracone przy ponownym uruchomieniu emulatora!

Rozmowa telefoniczna


Rozmowa telefoniczna

Po zaakceptowaniu wykonania rozmowy przez użytkownika pojawia się interfejs pokazujący próbę nawiązania połączenia. Jedną z opcji jest zakończenie rozmowy, której użycie jest dla nas konieczne. Nie mamy przecież GSM w emulatorze, aż tak dobrze nie ma –:) Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wysyłanie SMS


Wysyłanie SMS

Uruchamia się aplikacja do tworzenia i wysyłania SMS-ów. Wysłanie nie powoduje błędu, … oczywiście fizycznie nic się wysłało, ale zabawa jest. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Odtwarzanie multimediów - MediaPlayer


Odtwarzanie video w MediaPlayer

Niestety, póki co nie udało mi się usłyszeć dźwięków ani zobaczyć obrazu na plikach, z którymi MediaElement w emulatorze radzi sobie bez problemu. Zamiast tego dostajemy tajemniczą informację, że wystąpił błąd, ale nie wiadomo, co jest jego przyczyną. Nie ma znaczenia tutaj rodzaj obrazu systemu, grafika też zdaje się nie mieć znaczenia (tak, gdzie jest lepsza pojawia się odtwarzacz, ale nic się nie odtwarza). Jakby się komuś udało coś odtworzyć, to koniecznie napiszcie !  Może w grę wchodzi jednak grafika (sterownik karty) albo kodek ?  Chyba, że po prostu odtwarzacz jeszcze nie działa …

MarketPlace


MarketPlace - Podcasts

Bez problemu otwiera się MarketPlace w kategorii muzyka oraz podcasts. Przy aplikacjach zaczął się bardzo długo otwierać, tak więc nie doczekałem się. Nie próbowałem też … nic kupować. Tak więc pozostaje tutaj ewentualnie przestrzeń do dalszej zabawy. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wyszukiwanie


Wyszukiwarka - wyniki

Podane w aplikacji zapytanie jest przekazywane do otworzonej wyszukiwarki, która zwraca wyniki. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Od ostatniego CTP pojawiła się możliwość przypinania skrótu do aplikacji tile na ekranie startowym. Na liście aplikacji trzeba dłużej przycisnąć ikonę aplikacji, wtedy pojawia się kontekstowe menu. Wybieramy interesującą nas opcję. Tile z ekranu startowego usuwamy naciskając przycisk w prawym górnym rogu. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem. W odblokowanym widzimy jednak też wiele innych tile systemowych aplikacji. Jak ustawić własny tekst i obrazek dla tile w swojej aplikacji? W ustawieniach projektu Visual Studio jest odpowiednia sekcja.


Tile

Ostatnie CTP wnosi też obsługę notyfikacji push typu tile. Team opracował bardzo dobry przykład pokazujący działanie wszystkich trzech rodzajów notyfikacji push: tile, toast i raw. Pozwoliłem sobie się nim pobawić, co widać na screenshotach. Patrzyłem też na przykład Ingo Rammer'a. Jak autor pisze nie działa wysyłanie notyfikacji tile ze zdalnym adresem obrazka. Eksperymentowałem też w innych przykładach i na razie nie udało mi się ani razu wyświetlić w tile obrazka o ścieżce adresu spoza aplikacji. 

Należy pamiętać, że w emulatorze należy odczekać dwie lub trzy minuty od jego uruchomienia, aby notyfikacje działały. Uwaga! W praktyce wyszło mi, że przy oblokowanym obrazie notyfikacje push nie działają! Straciłem na to półtora wieczoru próbując odpalić ten przykład, ale w końcu mnie oświeciło, gdy na innej maszynie zadziałał mi od razu … Potem sprawdziłem kilka różnych przykładów na obu obrazach. Z nieznanych powodów nie jest wołane zdarzenie zmiany adresu URI kanału, czyli nie dostajemy z klienta push adresu dla naszej aplikacji! 


Push Notifications

W CTP jest oczywiście trochę więcej zmian. Tutaj wspomnę jeszcze tylko o korzystaniu z bibliotek podpisanych innych certyfikatem niż certyfikat WP7. Jakie to biblioteki? Ano na przykład biblioteki Microsoftu Silverlight SDK i Silverlight Toolkit. Teraz przy korzystaniu z nich dostajemy na dzień dobry komunikat o błędzie albo czarny ekran aplikacji. Co robić? Jest skrypt PowerShell wskazany m.in przez Tim Heuer'a  do … usuwania certyfikatów z dll-ek. Microsoft wydał gdzieś oświadczenie, że czasowo do następnego CTP lub końca lipca tego roku zezwala na takie praktyki. 

Wziąłem na warsztat WrapPanel z toolkit’a jako że kiedyś używałem już tej kontrolki w Windows Phone 7. Obecnie dostaniemy czarny ekran, jeśli nie usuniemy certyfikatu z assembly. Po tej operacji wraca wszystko do normy - mój przykład WP7WrapPanel.

Wszystkie opisywane tutaj przykłady (WP7TasksDemo, notyfikacje push, WP7WrapPanel + skrypt) można pobrać tutaj: