Panel z najciekawszymi aplikacjami WP7

Jakiś czas temu ruszyła nowa strona poświęcona aplikacjom na Windows Phone. Możecie ją znaleźć tu: http://www.microsoft.com/poland/windowsphone/najlepsze-polskie-aplikacje/. Strona ta zawiera dwie grupy aplikacji. Pierwsza z nik to między innymi Facebook, Endomondo, Allegro czy Ceneo– czyli aplikacje top, lub też “must have”.

Druga grupa stanowi aplikacje promowane przez zespół Microsoft – aktualizacja znajdujących się na niej aplikacji będzie częstsza niż pierszej grupy, jednakże nie częściej niż ok 2 tygodnie. Na tej liście można się również znaleźć wykupując za punkty GeekClub pakiet promocyjny – w jego skład wchodzi również promocja aplikacji w przeglądarce Marketplace znajdującej się na telefonie…


Webcasty o WP7 od Eduweb

Kurs

Jakiś czas temu na stronach Eduweb pojawiły się dwa cykle webcastów, które pozwalają na zapoznanie się z platformą Windows Phone 7. Pierwszy z cykli pozwala na zapoznanie się z platformą Windows Phone od zupełnych podstaw. Jest to idealny kurs dla osób, które nie miały wcześniej styczności ani z Windows Phone ani nawet z platformą .NET i Visual Studio. W trakcie kursu krok po kroku dowiesz się najważniejszych informacji związanych z tworzeniem aplikacji na platformę mobilną Microsoft. Drugi z cykli przeznaczony jest dla nieco bardziej zaawansowanych programistów. Taki podział daje pewność, że nikt nie będzie się nudził podczas oglądania materiałów.

Grzegorz Róg, który dzieli się swoją wiedzą podczas tych dwóch cykli podszedł do zadania w pełni profesjonalnie i przygotował bardzo solidną bazę wiedzy na temat Windows Phone 7. Zapraszam do odwiedzenia i zapoznania się z obiema częściami!

Windows Phone – Podstawy:

http://www.eduweb.pl/img/banner-wp7-podstawy-small.jpg

oraz Windows Phone w praktyce

http://www.eduweb.pl/kursy/windows-phone/windows-phone-w-praktyce.html

Kurs sam w sobie jest płatny, jednakże stawki odpowiednio 49 i 79 wydają się być niewygórowane szczególnie w kontekście nagród, które można wygrać na portalu Codeguru.pl!

Przy okazji przypominam też o dwóch kursach znajdujących się na channel9, które wraz z powyższymi materiałami tworzą świetny i przede wszystkim duży zastrzyk wiedzy:

Kurs programowania Windows Phone – pisz na Mango Kurs WP7 na channel9

Akcja GeekClub

Zapewne wiele z was już słyszało i być może nawet bierze udział w akcji Geek Club na CodeGuru.pl. Podczas akcji można zdobyć od 600 do 1000 punktów za aplikację (lub 0, jeżeli aplikacja nie przeszła progu akceptacji:)).  Zdobyte w ten sposób punkty można wymieniać na cenne nagrody takie jak Nokia Lumia 710, Nokia Lumia 800 lub też XBox 360. Akcja trwa do końca maja, zatem zostało jeszcze trochę ponad miesiąc. Warto oczywiście pamiętać, że aplikacja musi znaleźć się na Marketplace, co wymaga ok tygodnia, dlatego decyzję o wzięciu udziału w konkursie warto podjąć już teraz i nie czekać na ostatnią chwilę. Dzięki temu będzie można uniknąć niepotrzebnych niedomówień i oczekiwania jak to miało miejsce przy okazji poprzedniej akcji…

Niedługo postaram się wrzucić namiary na kilka moich aplikacji – nie tylko tych konkursowych, żebyście mogli je pobrać i ocenić. Tym czasem wracam do projektu na codeplex, o którym napiszę mam nadzieję najpóźniej w przyszłym tygodniu :)


WP 7.1.1 – Oficjalnie dostępne

Na stronach Microsoft jest dostępne do pobrania Windows Phone 7.1.1 Update (pisałem o wersji CTP tu).

Bezpośredni link: http://www.microsoft.com/download/en/details.aspx?id=29233

Co ciekawe nie ma konieczności odinstalowywania wersji CTP – co raczej rzadko się zdarzało w historii tej platformy :) Tak to wyglądało u mnie :)

Dla przypomnienia – dzięki 7.1.1 istnieje możliwość rozróżnienia urządzeń, które posiadają niższe parametry, dzięki czemu można dostosować ilość obliczeń / odświeżeń klatek dokonywanych w aplikacji do słabszych urządzeń. Dodatkowo istnieje możliwość wyboru emulatora (512 MB / 256 MB).

Ale to nie wszystko! SDK (a właściwie emulator) wreszcie działa bez problemu na Windows 8! DLa wszystkich, którzy wyposażyli się już w kafelki na “dużej” maszynie będzie to duży plus przy pracy z WP7 :)

Jeszcze kilka linków:

What’s new: http://msdn.microsoft.com/en-us/library/hh855084(v=vs.92).aspx

Tworzenie aplikacji na urządzenia 256MB http://msdn.microsoft.com/en-us/library/hh855081(v=vs.92).aspx


WP7 – Database tip

Jednym z najbardziej rozpowszechnionych błędów związanych z aplikacjami na WP7 korzystającymi z bazy danych jest błąd inicjowania tabel. Objawiał się on informacją o nieistniejących tabelach w momencie gdy przy tworzeniu bazy nie zostały do niej dodane żadne wpisy. Okazuje się, że po zainstalowaniu aktualizacji WP 7.1.1 błędu tego nie udało mi się już zreprodukować. Tak to jest, gdy posty zalegają w kolejce i nie zawsze jest czas, żeby na spokojnie je opisać :)

Niemniej jednak – jeżeli tworzymy bazę danych warto do niej dodać przykładowy wpis (najlepiej do dodatkowej, fakeowej tabeli). Dzięki temu silnik SQL CE poprawnie zainicjuje wszystkie tabele co pozwoli uniknąć problemu nieistniejących tabel. Dlaczego? Ponieważ nawet jeżeli błąd jest poprawiony w nowych uaktualnieniach, to nie mamy grawancji, że każdy użytkownik kożysta z najnowszej wersji systemu (dystrybucja uaktualnień u operatorów niestety różnie trwa, szczególnie w przypadku telefonów z USA brandowanych przez AT&A).

Inny problem, na który chciałbym zwrócić uwagę jest dużo bardziej prozaiczny. Chodzi o sposób eksponowania tabel w klasie kontekstu bazy danych. Przyzwyczajenie do właściwości (properties) okazuje się tu niestety zabójcze dla projektu.

Wyobraźmy sobie poniższy kod:

1
2
3
4
5
6
7
8
9
public class SampleDataContext : DataContext
{
	public SampleDataContext(string connectionString)
		: base(connectionString)
	{
	}
 
	public Table<SampleEntry> DataEntries { get; set; }
}

Okazuje się, że po jego uruchomieniu każda próba odwołania się do tabeli otrzymujemy błąd jak na poniższym screenie (Value can not be null):

Okazuje się, że w takim przypadku rozwiązanie zakrawa wręcz o banał, ponieważ wystarczy usunąć dodaną przez nas podświadomie deklarację gettera i settera czyli { get; set; } przy definicji tabeli – zamiast propercji powinna ona być zwykłym polem, o czym warto pamiętać, bo może wam to zaoszczędzić ładny kawałek czasu – w moim przypadku ta “pomyłka” kosztowała 3 godziny :)

 


Windows Phone SDK 7.1.1 Update CTP

W związku z premierą telefonu Nokia Lumia 610 na Mobile World Congress na stronach Microsoft Download pojawiła się wersja Windows Phone SDK 7.1.1 CTP. Wychodząc na przeciw rynkowi urządzeń mobilnych system Windows Phone szerzej zagości wśród urządzeń ze “słabszymi” parametrami (tańsze procesory i 256MB RAM). Aby zapewnić, że aplikacje będą przygotowane do płynnego działania również na takich urządzeniach nowe API udostępnia dostatkowe funkcjonalności. Od razu zaznaczę, że system jest na tyle zoptymalizowany, że nie ma tu najmniejszych problemów z wydajnością.

Do nowych funkcjonalności należą:

Dwa obrazy emulatora – tym razem przy testowaniu aplikacji mamy do dyspozycji emulator z pamięcią 512MB RAM (domyślny) oraz z 256MB RAM. Opcje te widać na liście wyboru emulatora:

 

 

 

Nowe API

Gdy chcemy rozpoznać na jakim urządzeniu pracujemy wystarczy wykorzystać poniższy kawałek kodu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
try
{
	Int64 result = (Int64)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
	if (result < 94371840L)
		// IsLowMemDevice = true;
	else
	{
		// IsLowMemDevice = false;
	}
}
catch (ArgumentOutOfRangeException)
{
	// Windows Phone OS update not installed, which indicates a 512-MB device. 
}

Warunek ten jest związany z faktem, że przy standardowej konfiguracji urządzenia działająca w tym momencie aplikacja ma do dyspozycji maksymalnie 90MB pamięci RAM. W przypadku urządzeń wyposażonych tylko w 256MB pamięci operacyjnej takie zużycie zagrażałoby stabilności pozostałych mechanizmów platformy. Warto już teraz zadbać o to, by nowi odbiory byli w stanie korzystać z naszych aplikacji i w razie konieczności np ograniczyć taktowanie zegara gry lub wykorzystywać mniej zasobochłonne operacje.

Więcej szczegółów na stronach MSDN.


Windows 8 CP i Visual Studio 2011 Beta

Dziś na stronach Microsoft pojawił się do pobrania Windows 8 w wersji Consumer Preview. Oto link do bezpośredniej strony z plikami ISO: http://windows.microsoft.com/en-US/windows-8/iso

Dodatkowo jest dostępne również Visual Studio 2011 w wersji Beta! Dostępne jest pod adresem http://www.microsoft.com/visualstudio/11/en-us/downloads. Do wyboru mamy Visual Studio, TFS oraz wersje Express. Ja wybrałem VS w wersji Ultimate, do której prowadzi ten oto link: http://www.microsoft.com/visualstudio/11/en-us/downloads#ultimate – moje kopie już się pobierają :)


Krótka Piłka.. czyli Windows Phone vs. iPhone

Już w środę 29 lutego podczas Inżynierskich Targów Pracy odbędzie się konfrontacja dwóch platform. W lewym narożniku Windows Phone reprezentowany przeze mnie, natomiast w prawym narożniku iPhone (reprezentowany przez Tomasza Janeczko). Podczas prezentacji przeprowadzimy swego rodzaju pojedynek mający na celu porównanie wspomnianych systemów z punktu widzenia programistów… Zajmiemy się ogólnymi zagadnieniami dotyczącymi zarówno sprzętu, jego dostępności, wymagań systemowych, API oraz zaprezentujemy przykładową aplikację stworzoną w analogiczny sposób na obu systemach. Żywy kod, 5 minutowe sloty, konkrety, po prostu krótka piłka :) Kto zwycięży? – o tym zadecyduje publiczność…

Ilość miejsc ograniczona!

Strona wydarzenia


Skype dla Windows Phone

Dwa dni temu Microsoft opublikował Skype dla Windows Phone w wersji pre beta. Z racji na wersję nie jest ona jeszcze wspierana na wszystkich urządzeniach – przy instalacji dostałem informację o niekompatybilności LG Quantum, natomiast HTC Surround, Trophy i Nokia Lumia radzą sobie z tym bez problemu.

Niemniej jednak werja 0.2 działa dość płynnie i pozwala jednemu z najpopularniejszych komunikatorów internetowych zagościć na platformie Windows Phone :) Testową wersję można pobrać z tego miejsca. Proces instalacji nie jest standardowy i wymaga walidacji numeru telefonu, o który jesteśmy proszeni podczas pobierania XAP’a na telefon. Podczas samej instalacji może wystąpić błąd wraz z informacją o przesłaniu instrukcji na adres email. W moim przypadku tak właśnie było, jednakże aplikacja zainstalowała się poprawnie i nie otrzymałem żadnego maila :) Gorąco zachęcam do pobrania i przetestowania nowej aplikacji :)


IsolatedStorageSettings wrapper

Często w aplikacjach tworzonych na Windows Phone 7 posługujemy się ustawieniami aplikacji, dzięki czemu staje się ona bardziej przyjazna dla użytkownika. Służy do tego klasa IsolatedStorageSettings wraz ze słownikiem ApplicationSettings. Okazuje się jednak, że kod odpowiedzialny za ciągłe sprawdzanie zawartych w niej danych oraz ich rzutowanie na odpowiednie typy powtarza się w wielu miejscach. Przedstawiam zatem moje podejście, które stosuję w praktyczniej każdej aplikacji na WP7 i umieszczam je w klasie SettingsProvider.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class SettingsProvider
{
	...
 
	#region internal
	private static void SetValue(string key, T value)
	{
		if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
		{
			IsolatedStorageSettings.ApplicationSettings[key] = value;
		}
		else
		{
			IsolatedStorageSettings.ApplicationSettings.Add(key, value);
		}
	}
 
	private static T GetValueOrDefault(string key, T defaultValue)
	{
		if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
		{
			return (T)IsolatedStorageSettings.ApplicationSettings[key];
		}
		else
		{
			IsolatedStorageSettings.ApplicationSettings.Add(key, defaultValue);
			return defaultValue;
		}
	}
	#endregion
}

Dzięki temu mogę w prosty sposób uwidocznić dla pozostałych komponentów projektu właściwości korzystające z przedstawionych powyżej metod generycznych. Na przykład w ten sposób:

1
2
3
4
5
public string UserName
{
	get { return GetValueOrDefault("UserName", ""); }
	set { SetValue("UserName", value); }
}

Mam nadzieję, że przedstawiony kawałek kodu przyda się wam do wygodniejszego i szybszego korzystania z ustawień aplikacji na Windows Phone :)


WP7 – Webcast o obsłudze kamery

Kolejny webcast z cyklu poświęconego Windows Phone. Tym razem dotyczy on obsługi aparatu wbudowanego w telefon.

Pliki źródłowe do pobrania:

[download id=”7″]


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