Mój artykuł na MSDN – WP7 Mango Silverlight + XNA

Niedawno ukazał się mój kolejny artykuł na MSDN poswięcony Windows Phone 7.1 Mango. Artykuł dotyczy zagadnienia integracji dwóch technologii jakimi są Silverlight i XNA w ramach jednej aplikacji, a nawet w ramach jednego widoku. Jest to moim zdaniem jedna z przełomowych nowości dostarczana przez ten system, gdyż daje praktycznie nieograniczone mozliwości w kontekście projektowania przyjaznego i efektownego interfejsu użytkownika. Interakcja przy pomocy kontrolek Silverlight połączona z mozliwościami graficznymi XNA może stać się nowym standardem tworzenia gier, a nawet aplikacji użytkowych na Windows Phone.

Zapraszam do lektury artykułu.

Do artykułu dołączony jest również przykład, który możecie pobrać z tego miejsca.


Software Update: WP7 vs Android

Ostatnio pisałem o udanej instalacji Windows Phone 7 Mango na moim telefonie. Wczoraj przyszło mi również zmierzyć się z aktualizacją Androida z wersji 2.1 na 2.2 (Samsung i5700 – Spica). Cały proces nasunął mi pewną refleksję dotyczącą porównania pod tym kątem obu platform. Oto moje spostrzeżenia:

Oprogramowanie

Windows Phone 7 – pobieramy paczkę w której jest nowa wersja ZUNE (4.8), system, instrukcja i updater.

Android – pobieramy aplikację Odin, sterowniki do telefonu, paczkę z systemem z odblokowanym rootem, paczkę z systemem w wersji 2.2 (lub wyższym, bo widziałem też 2.3).

Przebieg instalacji

Windows Phone 7 – podłączamy telefon, uruchamiany updater, uruchamiamy Zune a następnie wybieramy opcję Update. Po jakimś czasie gotowe.

Android – instalujemy na telefonie system z rootem. Do tego są potrzebne jeszcze kombinacje klawiszowe, żeby przełączać telefon w odpowiednie tryby (Volume Down + Aparat + “czerwona słuchawka” – ona wcale nie jest czerwona :) ) Wgrywamy system przez Odin, instalacja i kilka restartów.
Teraz można zacząć wgrywać system w wersji 2.2. Wrzucamy paczkę na kartę microSD i instalujemy w telefonie. Ponownie klawiszologia, tym razem, żeby uruchomić telefon w trybie root (Volume Down + obie “słuchawki”). Instalacja z karty + czyszczenie cache, factory reset i restart. Nareszcie! Android (a właściwie SamDroid) działa :)
Do tego dochodzi konieczność odłączania i podłączania telefonu w “odpowiednim momencie”, bo Odin potrafi się zgubić i nie wykryć urządzenia (tu podpowiedź – podłączajcie telefon dopiero gdy Odin jest uruchomiony – oczywiście w trybie administratora…)

Czas twrania

Windows Phone 7 – 2.5h
Android – 1.5h

Rezultat

Windows Phone 7 – sukces.
Android – sukces (pomimo kilkukrotnej konieczności wyciągania baterii z telefonu, bo “coś” nie zaskoczyło :) ) Dodatkowo telefon działa zdecydowanie szybciej.

Podsumowanie

Aby móc w pełni mówić o zaletach danej technologii, trzeba spróbować również innych. Dzięki temu, że miałem okazję przetestować ten proces na obu systemach, mam możliwość bardziej rzetelnego ich ocenienia.  Powyższe porównanie dotyczy tylko i wyłącznie instalacji nowej wersji softu, a nie samych systemów (o tym może kiedy indziej :)
W obu przypadkach nie jest to trywialny “update” jak ma to miejsce dla oficjalnych paczek z nowszą wersją systemu (wtedy wystarczy wcisnąć przycisk UPDATE i poczekać). WP7 w mojej ocenie wypada lepiej – jest samoobsługowy i nie trzeba do tego tyle zachodu – puszczamy update i możemy robić swoje. Oceny tej nie jest w stanie zmienić nawet satysfakcja w przypadku Androida, która jest nieco większa – właśnie przez te wszystkie utrudnienia :)

Brak jakiejkolwiek standaryzacji w przypadku Androida (co jest zarówno wadą jak i zaletą) powoduje, że nie ma jednej “paczki” do aktualizacji. Każdy użytkownik kombinuje w swoim kierunku, przez co gdy na jednym urządzeniu pracujemy na wersji 2.3 na innym działa jeszcze 1.5… Tu Windows Phone 7 (jak narazie) bije Androida na głowę, bo tworząc oprogramowanie mamy dużo większą pewność rezultatów jego działania. Oczywiscie może się to zmienić w przyszłości (oby jak najdalszej) – pierwsze sygnały widać w różnicach między urządzeniami dla WP7 i 7.1 (czyli Mango) choćby w kontekście sensorów. “Stare” urządzenia nie są wyposażone np w żyroskop, a do kompasu musi być dostarczone przez producenta telefonu stosowne API…

P.S.

Przyczyna aktualizacji androida była dość prozaiczna, aczkolwiek ważna z punktu widzenia użyteczności. Wersja 2.1 nie pozwala na instalowanie aplikacji na karcie microSD. Wynik – po krótkim czasie brakuje miejsca i nie możemy już nawet ich uaktualniać!


Mango on board 2

Wczoraj pisałem o udanej instalacji Windows Phone Mango na moim telefonie. Podczas standardowego korzystania z nowego systemu natknąłem się na kilka udogodnień w tej kwestii:

Stan baterii

Wreszcie można dowiedzieć się czegoś więcej na temat stanu baterii! Wystarczy wejść do Settings -> Battery saver. Mamy tam do dyspozycji możliwość włączenia tak zwanego Battery Saver’a, który przy niskim stanie baterii może wyłączyć pewne dodatki jak automatyczne odbieranie wiadomości, wątki działające w tle (a właściwie agentów działających w tle) itp. Co jednak ciekawe jest tam też informacja na temat stanu baterii, prawdopodobnego czasu działania na niej i czas od ostatniego ładowania. Dużo więcej niż tylko pasek na toolbarze. Przydał by się do tego kafelek, ale niestety na pierwszy rzut oka API do Mango nie daje takich informacji (jedynie to czy telefon jest podłaczony do zasilania, czy działa na baterii), ale być może jeszcze się do tego nie dokopałem.

Dzwonienie

Dzwonienie, czyli podstawowa funkcja telefonu… No tak, to już raczej nie jest telefon, a wręcz telefon jest tu dodatkiem. Trochę zmieniony interfejs w trakcie wykonywania rozmowy (na +) – jest bardziej przejrzysty, a przyciski większe. Niestety nie zmieniło się zarządzanie połączeniami, ale z tym można się jakoś uporać tym bardziej, że tu również pojawiła się ikonka wyszukiwania (wszędzie ta lupa :) ). Moim zdaniem to dobrze, bo jest lepiej niż było.

Regulacja głośności

Trochę mniej istotna rzecz, ale jednak zmiana. Do tej pory regulując głośność widzieliśmy kreseczki jedna nad drugą… Stopień głośnosci był regulowany “na oko”. Teraz nie musimy “liczyć kreseczek” lub “szacować”, gdyż mamy podane odpowiednie wartości np 20/30.

Bing Audio

Jeżeli widzieliście kiedyś na iPhonie aplikację, która wyszukiwała piosenkę na podstawie dźwięku, to już powinniscie wiedzieć o co mi chodzi :) Ile razy słyszycie kawałek w radiu i czekacie na jego tytuł, który nie jest podawany? Koniec z tym… Jakiś czas temu na Channel 9 pojawił się wywiad ze Stevem Cosmanem z zespołu Bing Audio i opowiadał o nowej usłudze jaką jest wspomniana platforma. Jak to działa? Po uruchomieniu wyszukiwarki mamy na pasku nową ikonkę nutki. Po jej wciśnięciu możemy zacząć wydawanie dźwięków, w celu odnalezienia interesującego nas tytułu. Oto wyniki testów

  • Scorpions i Send me an Angel – trafiony zatopiony
  • Linkin Park i Bleed It Out – trafiony zatopiony
  • Godsmack i Good Day To Die – znowu zadziałało…
  • trochę inne klimaty: bachata i Lamento Boliviano – trafiony!
  • Van Canto też zna…

Postanowiłem potestować z polską muzyką. Enej “Żyj” – pudło, ostatnio często goszczący w radiu kawałek Sylwi Grzeszczak – Male Rzeczy – trafił. Czas zatem na test ostateczny – samośpiew do telefonu. Po pół godzinie prób z odsłuchem nie dało rady. Dodam, że testowałem to nie tylko ja (tu brakowi wyników się nie dziwie 😛 ) ale i osoby uzdolnione pod tym względem (np. moja żona) też miały problemy :) W aplikacji na iPhone działało nawet jak mój kolega “burczał” do telefonu… Być może jest to z powodu ciągłej fazy rozwoju Bing Audio, lub po prostu cel jest inny (słyszymy piosenke i chcemy znać jej tytuł, a nie nucimy coś pod nosem – ciekawe co to za utwór :) ). Tak czy inaczej fajny gadżet!

Bing Vision

Możliwość przeanalizowania obrazu (zdjęcia z aparatu) pod kątem znajdującego się na nim tekstu. Ukryta jest pod ikonką oka we wbudowanej wyszukiwarce. To co możemy dalej zrobić, to przetłumaczyć wykryty tekst… Hm… Za granicą nie koniecznie mamy dostęp do sieci, a w swoim kraju nie ma czego tłumaczyć. Ale kto wie jak to się dalej rozwinie…

Jak na jeden dzień bez szukania zmian, to całkiem sporo :)


Mango on board

Po ukazaniu się wersji Beta 2 narzędzi dla Windows Phone, Microsoft udostępnił dla deweloperow WP7 możliwość pobrania i uaktualnienia telefonów do tejże wersji systemu (dokładniej do builda 7661). Na początku było to zarezerwowane tylko dla ograniczonej liczby krajów, jednakże po pozytywnym odbiorze procesu aktualizacji MS postanowił rozszerzyć program na pozostałe kraje. Ja również otrzymałem zaproszenie to testów, z którego postanowiłem skorzystać.

Po wypełnieniu ankiety dostajem dostęp do plików niezbędnych do aktualizacji telefonu. Są wśród nich nowe wydanie Zune (wersja 4.8) oraz pliki niezbędne do aktualizacji samego telefonu a także najważniejszy plik – instrukcja, która dokładnie krok po kroku przeprowadza przez cały proces. Warto się jej trzymać i wykonywać po kolei – ja za pierwszym razem przeoczyłem jeden punkt i z aktualizacji nici.

Cały proces trwa krócej niż można przeczytać na forach i jest zbliżony bardziej do estymowanych czasów podany – w moim przypadku całość zajęła 2,5h wraz z odinstalowywaniem starej wersji Zune (nie wliczam narzedzi deweloperskich do mango, bo to miałem zainstalowane dużo wcześniej).

Po zainstalowaniu aktualizacji mamy do dyspozycji wszystkie wcześniej posiadane aplikacje i ustawienia. Okazuje się jednak, że gdy będziemy chcieli pobrać finalną wersję Mango będziemy musieli się cofnąć do backupu przygotowanego przed tą aktualizacją, co w rezultacie oznacza utratę zmian dokonanych po aktualizacji. Jest to o tyle rozsądne, że nie jest to standardowy update, a raczej skok w oddzielną gałąź rozwoju systemu, która najprawdopodobniej nie znajdzie w przyszłości połączenia do głównego toru.

 

Co do samej aktualizacji było w związku z tym kilka przebojów, do których należał między innymi zapis w warunkach instalacji, a mianowicie:

8. Confidentiality: By participating in this program, the developer agrees to not publish any content, screenshots or comments in any media in advance of the official launch of Windows Phone ‘Mango’

Był to oczywiście nie do końca przemyślany zapis, a konkretniej był niewłaściwie sformułowany. Fora są ogólnie dostępne, więc zgłaszanie uwag i sugestii niepublicznie jest tu utrudnione. Jak wiadomo, jeżeli proces testowania i zgłaszania uwag jest utrudniony, wówczas feedback jest znacznie ograniczony, a przecież nie o to chodzi… Na szczęście po dość krótkim czasie został poprawiony na następujący:

8. Confidentiality: By participating in this program, the developer agrees tonot share the ‘Mango’ pre-release device image, binary dumps, or the applications used to update to this pre-release image, with third parties.

W związku z tym w pełni legalnie mogłem się podzielić (i mogę się dzielić w przyszłości) swoimi spostrzeżeniami dotyczącymi WP7 Mango :)

Pierwsze wrażenia

Działanie – Telefon wydaje się działać minimalnie płynniej – muszę przyznać, że od samego początku byłem pozytywnie zaskoczony realną wydajnością urządzenia, jednakże okazuje się, że można wyciągnąć z niego jeszcze pare procent. Widać to również przy przeglądaniu zdjęć – tu rożnica jest spora, bo zdjęcia wręcz śmigają.

Kafelki – nie trzeba przygotowywać aplikacji testowej, żeby zobaczyć jak zmieniły się kafelki. Widać to po zintegrowanym facebooku :) Dla niewtajemniczonych dodam, że w Mango aplikacja może mieć kilka kafelków, a dodatkowo są one dwustronne, co dodatkowo zwiększa możliwość interakcji naszej aplikacji z użytkownikiem, nawet gdy nie jest ona włączona.

Lista aplikacji – Tu rzecz znana z emulatora, a mianowicie wyszukiwanie aplikacji. Po pewnym czasie korzystania z urządzenia może się okazać, że lista aplikacji jest dość długa. Z pomocą przychodzi tu wyszukiwarka, dzięki której znalezienie właściwej aplikacji staje się dużo prostsze.

Do sprawdzenia

Nie samymi gotowcami człowiek żyje, więc trzeba będzie również trochę pokodować. Do przetestowania jest na pewno:

  • Sensory (podobno na niektórych urządzeniach nie działają poprawnie)
  • Kafelki (będzie się działo)
  • dostęp do kontaktów
  • multitasking (WP7 też może…)
  • przechwytywanie obrazu z kamery

Jak widać jest co robić, a telefon z Mango na pokładzie na pewno to ułatwi :)


Artykuł na MSDN – WP7 Mango – nowe możliwości emulatora

Stało się. Dziś dołączyłem do grona autorów artykułów publikowanych na portalu MSDN. Pierwszy z moich artykułów poświęcony jest nowym możliwościom oferowanym przez emulator Windows Phone dostarczony wraz z narzędziami Windows Phone 7.1 Mango, o których pisałem jakiś czas temu. W artykule opisuję wsparcie dla emulacji akcelerometru oraz lokalizacji. W drodze kolejne!

Zapraszam do lektury artykułu.

P.S.

Czy pamiętacie mój projekt emulatora akcelerometru? W ogóle nie widać podobieństw 😉

 


WP7 i Isolated Storage – błąd designera

Przy tworzeniu aplikacji dla Windows Phone 7 może okazać się, że w designerze dostaniemy błąd o następującej treści:

Cannot create an instance of “MyControl”.
“Unable to determine application identity of the caller”.

Jeżeli aplikacja korzysta z Isolated Storage to bład ten jest zapewne spowodowany faktem, że przy ładowaniu kontrolki odwołujemy się do tego właśnie mechanizmu.

Analogiczny błąd może się pojawić gdy dodamy już kontrolkę do strony, dopiszemy do niej pewne operacje na isolated storage, które wykonują się przy jej ładowaniu a następnie wrócimy do okna designera. W takim przypadku jego treść jest bardziej znacząca:

IsoatedStorageException was thrown on “myControl”: Cannot create an instance of “MyControl”.

Aby pozbyć się błędu wystarczy umieścić kod, który korzysta z Isolated Storage wewnątrz warunku widocznego poniżej:

1
2
3
4
if (!System.ComponentModel.DesignerProperties.IsInDesignTool)
{
    ...
}

W ten sposób mamy pewność, że w trybie designera nasza kontrolka, nie będzie odwoływać się do niedostępnych w tym momencie zasobów Isolated Storage.


Problem 260 znaków

Problem 260 znaków

Przy okazji robienia projektu na potrzeby artykułu okazało się, ze Visual Studio przy buildowaniu wyników mojej pracy zwróciło błąd:

Could not write lines to file “……”. The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

Z racji na fakt, że było to związane z pracą przy projekcie dla Windows Phone pierwszym co przyszło mi do głowy to fakt, że być może emulator nie jest w stanie poradzić sobie z tak długimi ścieżkami do plików. W związku z tym szybki test wla standardowego projektu i … wynik ten sam.

Okazuje się, że dotarłem do granicy, której wcześniej nie zdażyło mi się osiągnąć. Próbowałem sobie przypomnieć, czy być może spotkałem się z takim błędem wcześniej, lecz nic nie przychodziło mi do głowy. Pomimo tworzenia projektów w katalogu X:\Work\ okazało się, że moje nieustanne ich porządkowanie (względem rodzaju technologii, przeznaczenia, przydatności itp) przerosło możliwości systemu i Visual Studio – głównym winowajcą jest tu system, którego ograniczenia co do długości ścieżek są opisane tutaj.

Wniosek

Nałogowe porządkowanie katalogów i plików może doprowadzić do problemu zbytniej normalizacji, który jak w przypadku baz danych prowadzi do ponownej i zamierzonej denormalizacji.


Windows Phone Mango Beta 2

Do pobrania jest dostępna nowa odsłona narzędzi deweloperskich dla Windows Phone 7.1 (Mango) oznaczona jako Beta 2. Do pobrania jest z tego adresu. Jak zawsze mamy do wyboru instalator online lub pobranie obrazu iso.
Warto pamiętać, że zanim zainstalujemy nową wersję narzędzi należy odinstalować poprzednią (Beta) – na koniec wymagany jest restart komputera :) Moja kopia już się ściąga (jak zawsze preferuję ISO :)

Dodatkowo na Windows Phone Developer Blog został ogłoszony konkurs, w ramach którego można wygrać telefon wyposażony w najnowszą odsłonę tego systemu. Zatem do dzieła!


Ctrl + T w Visual Studio

Przed chwilą natrafiłem na dość dziwny skrót dostępny w Visual Studio, a mianowicie na kombinację klawiszy Ctrl + T. Skrót ten jest znany z przeglądarek internetowych do otwierania nowej zakładki, lecz nie wiedziałem, że istnieje taki również w VS. Natrafiłem na niego zupełnie przypadkowo, gdyż przełączając się między oknami przerwałem o jedno okno za wcześnie (zamiast przeglądarki było to właśnie Visual Studio). Ctrl + T i nic się nie dzieje. Ok, przełączyłem się dalej, ale gdy wróciłem do VS okazało się, że mój plik konfiguracyjny się rozsypał. po chwili poszukiwań znalazłem w nim czeski błąd. Dziwne, bo nic w nim nie zmieniałem i ot tak sobie się pojawił? Otóż nie! skrót klawiaturowy Ctrl + T powoduje zamianę dwóch sąsiednich znaków znajdujących się przy kursorze! Co więcej jeżeli postawimy kursor gdzieś w środku słowa i wykonamy kilka tych kombinacji pod rząd wówczas litera po lewej stronie kursora wyląduje na końcu słowa. Pytanie – W JAKIM CELU? Nie mam pojęcia czy ktoś z tego korzysta i jaki jest sens tworzenia takiego skrótu klawiaturowego. No chyba, że ktoś namiętnie robi literówki, ale wówczas można użyć Backspace i poprawić zamiast przypominać sobie, że taka właśnie kombinacja klawiszy istnieje.

Tak czy inaczej – człowiek całe życie się uczy a mój wniosek – strzeż się Ctrl + T w Visual Studio – szczególnie w plikach konfiguracyjnych :) (w kodzie nie ma takiego problemu, bo od razu dostaniemy informację o błędzie, jednakże z w *.config może być problem)


WCF 4.0 na TGD.NET

Toruńska Grupa Deweloperów .NET ma przyjemność zaprosić na 28 spotkanie, na ktorym poprowadzę prezentację pt.: “WCF 4.0 What’s new?”.

O czym będzie:
Windows Communication Foundation przy okazji pojawienia się czwartej odsłony .NET Framework przyniósł ze sobą nowe możliwości. Podczas sesji postaram się je przedstawić oraz podzielić własnymi spostrzeżeniami na temat ich przydatności. Pod lupę weźmiemy cztery najciekawsze moim zdaniem nowości w WCF 4.0.
Prezentacja ta była również poprowadzona na konferencji 2nd Silesian Code Camp.

Agenda:

  1. Simplified configuration
  2. Routing service
  3. Service discovery
  4. Workflow services

Gdzie i kiedy:
Spotkanie odbędzie się 28 czerwca od godziny 17:00 w SALI S3 na Wydziale Matematyki i Informatyki UMK (ul. Chopina 12/18).

DODATKOWO:
Będzie to jednocześnie ostatnie spotkanie przed wakacjami a także 3 jubileusz powstania naszej grupy. W związku z tym zapraszamy wszystkich na urodzinowy tort. Do wygrania będzie również kilka niespodzianek.

Wstęp na wykład jest wolny. Rejestracja na spotkanie jest obowiązkowa.
(Link dla osób korzystających z Codeguru: Rejestracja na spotkanie)


  • O mnie

    Maciej Grabek

    Moje profile na:

    MVP

    Codeguru.pl GoldenLine
    Twitter CodeProject

  • english version
  • Polecam

  • Copyright © Maciej Grabek. All rights reserved.
    Powered by WordPress
    %d bloggers like this: