Tag: Windows Phone

Windows Phone 7 na Channel 9 i codeguru.pl – Nawigacja

Dziś na codeguru.pl ukazał się mój kolejny artykuł z cyklu poświęconego Windows Phone 7 poświęcony nawigacji. Równolegle z artykułami na channel 9 pojawiają się webcasty poświęcone tej samej tematyce. Autorem piątego odcinka jest Michał Korzunowicz. Gorąco zachęcam do czytania i oglądania :)

Projekt do pobrania

Windows Phone 7 Odcinek 5 - Nawigacja

W czasie mojego urlopu pojawił się również czwarty odcinek serii webcastów oraz artykuł przygotowany przez Daniela Plawgo, które są poświęcone interakcji z użytkownikiem.


Windows Phone 7 – więcej darmowych aplikacji!

Do tej pory rejestrując się na marketplace była możliwość opublikowania 5 darmowych aplikacji. W dzisiejszym newsletterze ukazała się informacja, że liczba ta zostaje zwiększona z 5 do 100!
Warto tu jednak zaznaczyć jedną rzecz, a mianowicie opublikowanie aplikacji oznacza wysłanie pliku XAP, a nie jakby można było się spodziewać publikację pojedynczej aplikacji. Oznacza to tyle, że wszelkie updaty, ponowne wysyłanie po wykrytych błędach itp jest liczone jako -1 z darmowej puli. Ma to swoje uzasadnienie. “Publikacja” jest tu rozumiana jako, tak jak wspomniałem, wrzucenie do machiny weryfikacyjnej pliku XAP, co wiąże się z kosztami (po wyczerpaniu darmowego limitu opłata wynosi 20$). Nie mniej jednak zwiększenie tego limitu ułatwi zapoznanie się z marketplace oraz nie zrazi osób, które dopiero zaczynają przygodę z tą technologią.


Windows Phone 7 na Channel 9 i codeguru.pl – Data binding i MVVM

Dziś ukazał się trzeci już artykuł na codeguru.pl z cyklu WP7 dla programistów. Dzisiejszy odcinek poświęcony jest bindowaniu danych oraz wzorcowi MVVM. Podobnie jak poprzednio artykuł ten nawiązuje do równoległej serii webcastów dostępnej na Channel 9 w języku polskim. Autorem trzeciego odcinka jest Michał Korzunowicz.

Projekt do pobrania



Odcinek 3


Windows Phone Capability Detection Tool inaczej – UI

Capabilities – na początek trochę teorii

Przy tworzeniu aplikacji na Windows Phone w naszym projekcie dodawany jest zawsze plik WMAppManifest.xml, który znajduje się w katalogu Properties. Istotną jego częścią jest informacja na temat tak zwanych capabilities, czyli elementów platformy, z których nasza aplikacja będzie korzystać. Domyślnie zawarte tam są wszystkie możliwe wpisy widoczne na listingu 1. Należą do nich między innymi korzystanie z połączenia sieciowego, mikrofonu, akcelerometru, notyfikacji itp.

Listing 1. Capabilities

1
2
3
4
5
6
7
8
9
10
11
12
13
<Capabilities>
	<Capability Name="ID_CAP_GAMERSERVICES"/>
	<Capability Name="ID_CAP_IDENTITY_DEVICE"/>
	<Capability Name="ID_CAP_IDENTITY_USER"/>
	<Capability Name="ID_CAP_LOCATION"/>
	<Capability Name="ID_CAP_MEDIALIB"/>
	<Capability Name="ID_CAP_MICROPHONE"/>
	<Capability Name="ID_CAP_NETWORKING"/>
	<Capability Name="ID_CAP_PHONEDIALER"/>
	<Capability Name="ID_CAP_PUSH_NOTIFICATION"/>
	<Capability Name="ID_CAP_SENSORS"/>
	<Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
</Capabilities>

Informacje te są o tyle istotne, że informują system po jakie uprawnienia będzie sięgać nasza aplikacja. W przypadku próby odwołania się do funkcjonalności, która nie jest uwzględniona w sekcji capabilities wówczas zostanie zgłoszony błąd bezpieczeństwa, a nasza aplikacja zostanie zatrzymana.

Capabilities też są wykorzystywane podczas procesu dodawania aplikacji do marketplace. W tym momencie proces ten analizuje paczkę z naszą aplikacją pod i następnie ustala ich listę usuwając zbędne elementy. Po co w takim razie jest ta informacja w WMAppManifest, skoro możnaby wychodzić z założenia – używam wszystkiego, a wy znajdździe to, czego jednak nie potrzebuję. Jeżeli weźmiemy pod uwagę, że proces weryfikacji może się w przyszłości zmienić i nie pomagać użytkownikowi w określaniu właściwych wartości, to ocena przydatności WMAppManifest ulega zmianie :) Jeżeli okaże się, że automatyczne usuwanie niepotrzebnych wpisów zosgtanie zarzucone, to te śmieci mogą mieć duży wpływ na postrzeganie naszej aplikacji. Wyobraźmy sobie prosty przykład: tworzymy prosty stoper i umieszczamy go na marketplace bez czyszczenia manifestu. W momencie gdy użytkownik znajduje naszą aplikację i zobaczy, że korzysta ona z sensorów, GPS, notyfikacji, sieci, mikrofonu itp, to podejrzewam, że zastanowi się zanim ją zainstaluje.

Koniec commandline – czyli Windows Phone Capability Detection Tool UI

Na szczęście do analizy naszej aplikacji pod kątem capabilities istnieje narzędzie dostarczane z Windows Phone Developer Tools o nazwie Windows Phone Capability Detection Tool. Jest to narzędzie dostępne z linii komend, które można znaleźć w katalogu %ProgramFiles%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect.

Składnia jest bardzo prosta. Wywołujemy komendę CapabilityDetection.exe podajemy plik z regułami (Rules.xml) a następnie w apostrofach ścieżkę do naszej aplikacji. Może to być ścieżka do pliku XAP, lub po prostu do katalogu, który ją zawiera. W rezultacie otrzymujemy listę używanych elementów, które powinny się znaleźć w manifeście naszej aplikacji. Przykład wykorzystania widać na rysunku 1.

Windows Phone Capability Detection Tool

Rysunek 1. Użycie CapabilityDetection.exe

Jak każde narzędzie dostępne z poziomu command line jest ono mało wygodne. W związku z tym przygotowałem nakładkę graficzną o nazwie WindowsPhoneCapabilityDetectionTool UI, która znacznie (przynajmniej w mojej ocenie) ułatwia korzystanie z tego narzędzia. Ekran aplikacji widoczny jest na rysunku 2.

Windows Phone Capability Detection Tool UI

Rysunek 2. Okno Windows Phone Capability Detection Tool UI

Jego działanie sprowadza się do wykonania czterech kroków:

  1. Wybieramy folder skompilowanej aplikacji
  2. Procesujemy aplikację
  3. Kopiujemy kod
  4. Podmieniamy sekcję capabilities

W razie problemów korzystając z lupy możemy otworzyć okno pomocy w którym opisane są wszystkie elementy niezbędne do wygodnego korzystania z tego narzędzia.

Windows Phone Capability Detection Tool UI Help

Rysunek 3. Okno pomocy Windows Phone Capability Detection Tool UI

Ważna informacja

Z racji na konieczność dodania pliku app.manifest, w którym jest wpis o dziedziczeniu uprawnień od aktualnego użytkownika (requestedExecutionLevel level=”asInvoker”) może zostać zgłoszona informacja o niebezpieczeństwie (Comodo tak robi). Nie ma się jednak czego bać :) – w razie potrzeby mogę udostępnić też źródła.

Do pobrania

binaria


Windows Phone 7 na Channel 9 i codeguru.pl – Kontrolki i style

Dziś na codeguru.pl ukazał się mój drugi artykuł na temat Windows Phone 7 – tym razem podejmuję temat kontrolek i styli. Artykuł ten nawiązuje do webcastu o tym samym tytule, który przygotował Michał Korzunowicz. Znajdziecie go tutaj.

Materiały do artykułu

Panorama w akcji - artykuł na Codeguru.pl

Odcinek 2


3. 2. 1. Start. Windows Phone 7 na Channel 9 i codeguru.pl

Od dziś rozpoczynają się dwa równoległe cykle poświęcone programowaniu w technologii mobilnej Windows Phone 7. Pierwszy z nich będzie dostępny na portalu Channel9. Autorami webcastów są Barłomiej Zass, Michał Korzunowicz, Daniel Plawgo oraz ja :) Pierwszy odcinek, którego jestem autorem dostępny jest pod tym adresem. Jest on poświęcony ogólnemu wprowadzeniu w tematykę Windows Phone 7 jako platformy dla programistów, opowiadam o narzędziach. Pokazuję rowniez jak stworzyć swoją pierwszą aplikację na tą platformę korzystając z Silverlight oraz XNA.

Jednocześnie z webcastami na Channel 9 będą ukazywały się artykułu na portalu codeguru.pl. Będą one w ścisły sposób nawiązywać do tematyki poszczególnych webcastów. Powiązanie to będzie tym silniej widoczne, że na końcu każdego artykułu bedzie dostępny link do odpowiedniego nagrania na Channel9. Pierwszy artykuł możecie znaleźć tutaj.

Materiały do pierwszego odcinka

Mamy nadzieję, że dzięki takiemu podejściu i dywersyfikacji każdy znajdzie coś dla siebie. Oczywiście dla lepszego poznania tematu polecam zapoznanie się zarówno z webcastem jak i z artykułem :) Kolejne odcinki serii będą ukazywały się co tydzień zarówno na CG jak i CH9 (a stosowny news będzie zawsze dostępny również tutaj).
artykuł

Odcinek 1


Kolejna książka o WP7 – tym razem w kontekście Silverlight

Puya Paymudya z Indonezyjskiego Centrum Innowacji Microsoft udostępnił książkę o Windows Phone 7 za darmo. Można ją pobrać ze stron Microsoft Feed. Jest to kolejna książka o Windows Phone 7 udostępniona w formie bezpłatnego ebooka. Jak widać firma Microsoft stara się dotrzeć do jak największego grona deweloperów, dzięki czemu możemy się spodziewać dynamicznego rozwoju Marketplace dla WP7. Oby tak dalej, bo więcej aplikacji zrobionych w “dobry” sposób to korzyść nie tylko dla Microsoft, ale przede wszystkim dla użytkowników urządzeń z najnowszym systemem mobilnym MS.


WP7 – Silverlight + XNA != InvalidOperationException

Dziś po małej przerwie mała podpowiedź dla osób zajmujących się Windows Phone 7.

Jak wiadomo (lub też nie :) ) platformy, przy pomocy których możemy pisać własne aplikacje na WP7 to Silverlight 4 Windows Phone (nie piszę samego Silverlight, bo są tu pewne różnice w stosunku do pełnej wersji) oraz XNA 4.0. Nie oznacza to jednak, że musimy zamykać się tylko w jednym ze światów. Istnieje możliwość korzystania w jednym projekcie z przestrzeni nazw, klas i funkcjonalności dostępnych w obu tych technologiach. Zapewne najczęstsze “wymieszanie” technologii następuje gdy tworzymy w Silverlight. Dlaczego? Między innymi dlatego, że XNA oferuje nam wiele funkcjonalności multimedialnych takich jak odtwarzanie dźwięków, nagrywanie przy pomocy mikrofonu, MediaPlayera, ale również udostępnia rozpoznawanie gestów przy pomocy TouchPanel (tak – wiem, że Silverlight mamy Silverlight Control Toolkit i GestureListener, ale tak naprawdę jest on nakładką na TouchPanel z XNA :) ).

Tak czy inaczej, może okazać się, że w momencie gdy dodamy do projektu referencję do klas z XNA i będziemy korzystać z zawartych tam obiektów może się okazać, że otrzymujemy błąd widoczny na screenie poniżej, czyli InvalidOperationException, FrameworkDispatcher.Update has not been called.

Dispatcher

Oznacza on tyle, że korzystamy z elementów, które wymagają wywołania metody “odświeżenia stanu XNA” . Aby to zrobić wystarczy użyć takiego oto fragmentu kodu w konstruktorze strony SL:

1
2
3
4
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = TimeSpan.FromMilliseconds(33);
dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };
dt.Start();

W tym momencie przy uruchomieniu aplikacji błąd ten się nie pojawi. Warto jeszcze zauważyć, że nie ma sensu ustawiać częstszego odświeżania (czyli interwału dla DispatcherTimer), gdyż platforma Windows Phone 7 wspiera maksymalnie 30 klatek na sekundę (co daje odświeżenie do 33 milisekundy), w przeciwieństwie do pełnego XNA, które wspiara standardowo 60 fps.


Windows Phone 7 – porównanie urządzeń

Pewnego dnia siedząc przed komputerem i studiując lekturę dotyczącą Windows Phone 7 trafiłem na porównanie urządzeń pod względem rozmiarów, wagi, baterii, pamięci RAM/ROM itp. Niestety gdy chciałem jeszcze raz sięgnąć do tego zestawienia nie mogłem go znaleźć…
Przypadkiem porównanie ponownie wpadło mi w ręce, a właściwie pojawiło się na moim ekranie i tym razem, zamieszczam je na blogu. Robię to z dwóch powodów:
1 – w razie potrzeby będę wiedział gdzie szukać :)
2 – może komuś też się to przyda, lub kogoś zainteresuje

Windows Phone 7 comparision

Źródła:
ElectricForest
Microsoft News Center


Windows Phone 7 Accelerometer Emulator

Windows Phone 7 Accelerometer Emulator
W dziale projektów dodałem najnowszy projekt, który ma na celu ułatwienie tworzenia aplikacji opartych o akcelerometr. Jak wiadomo emulator WP7 nie wspiera takiej funkcjonalności, dlatego postanowiłem przygotować odpowiedni projekt, który pozwala uporać się z tym problemem bez wykorzystania dodatkowych urządeń.

Aby z niego skorzystać wystarczy dosłownie kilka linijek kodu:

1
2
3
4
5
6
7
8
9
10
11
var acc = new WP7AccelerometerProvider();
acc.ReadingChanged += OnAccelerometerProviderReadingChanged;
 
try
{
    acc.Start();
}
catch (Exception exc)
{
    //txtblk.Text = exc.Message;
}

oraz obsłużenie pojawienia się nowych informacji:

1
2
3
4
5
private void OnAccelerometerProviderReadingChanged(object sender, WP7AccelerometerReadingEventArgs args)
{
    //do what you want with data
    ProcessAccelerometerData(args.X, args.Y, args.Z, args.Timestamp);
}

Przykładowy screen wykorzystania emulatora:

WP7 Accelerometer Emulator UI

Jest to pierwsza wersja emulatora, jednakże w wolnym czasie będę starał się ją rozwijać o czym możecie przeczytać na stronach:

Strona projektu w języku polskim
Strona projektu w języku angielskim


  • 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: