czwartek, 15 grudnia 2011

Barman


   Tym razem chciałem pochwalić się jedną z pierwszych aplikacji na Androida jakie napisałem. Powstała na początku 2010 roku, w okresie, gdy dopiero zaczynałem poznawać system operacyjny od Google'a i próbowałem swych sił w robieniu aplikacji na iPhone'a. Jest to bardzo prosta implementacja książki z przepisami na drinki. Nazwałem ją Barman.
   Ekran główny, to przewijalna lista nazw dostępnych drinków. Wybranie któregokolwiek drinka wywołuje widok szczegółowy (nazwa, składniki i sposób przyrządzania) z możliwością modyfikacji wpisu.


Dodawanie nowego drinka odbywa się przez naciśnięcie przycisku menu w głównym oknie aplikacji, po wybraniu opcji "Dodaj Drinka" użytkownik kierowany jest do pustego widoku szczegółowego i może dodać wszystkie szczegóły drinku.


Usuwanie drinków jest możliwe poprzez wywołanie menu kontekstowego dla danego drinku z listy. Aby wywołać menu kontekstowe przyciskamy nazwę wybranego drinka dopóki nie pokaże nam się menu "Usuń Drinka". Dotykamy ten element menu zatwierdzając tym samym usunięcie wpisu.




   Pomysł na "Barmana" narodził się jeszcze w czasie gdy bawiłem się w pisanie aplikacji na iPhone'a i jest wzorowany na jednej z aplikacji z książki "Head First iPhone Development", którą w ramach nauki przerabiałem (swoją drogą polecam jak ktoś chce zacząć programować na iPhone'a). Pisząc tą aplikację wspomagałem się tutorialami chłopaków z google'a (zwłaszcza Notepad, który to polecam wszystkim początkującym programistom planującym napisanie aplikacji typu lista -> widok szczegółowy), oraz (w dużo mniejszym stopniu) serwisem StackOverflow, który jest lekturą obowiązkową dla każdego twórcy aplikacji mobilnych niezależnie od stopnia zaawansowania, czy stosowanej technologii.

niedziela, 11 grudnia 2011

Arkanoid na J2ME

Witajcie!

   zgodnie z dawną obietnicą zamieszczam opis jednej z pierwszych aplikacji, które w ogóle napisałem. W każdym razie jeśli chodzi o aplikacje mobilne. Zainspirowała mnie do tego książka, którą kiedyś kupiłem: "J2ME. Tworzenie gier." pana Janusza Grzyba. Wykorzystując jeden z przykładów z książki napisałem prosty klon gry Arkanoid/Breakout. Poniższy zrzut przedstawia menu główne, które pozwala uruchomić grę.





Sama rozgrywka jest prostym przykładem klasycznego Arkanoida. Mamy deseczkę, którą musimy odbijać piłkę i przy okazji zbijać cegiełki, za co otrzymujemy punkty. Ponieważ były to moje początki w dziedzinie programowania mobilnego wszystko jest maksymalnie uproszczone.



Po trzykrotnym "upuszczeniu" piłeczki niestety gra się kończy ;-)



Ale w razie jakby ktoś się potem nudził może sobie przeczytać właściwie zarys instrukcji obsługi no i to właściwie wszystkie możliwości tej prostej aplikacyjki.


Jak już wspominałem wcześniej - jest, a właściwie była to jedna z pierwszych moich aplikacji na telefony komórkowe. W tym czasie jeszcze nie słyszałem o rzeczach typu Google Android, czy iPhone. Gra była bardzo prosta i uboga, bo właściwie chciałem sprawdzić z czym się je całe to programowanie na telefony komórkowe. Oczywiście miałem w planach późniejsze rozbudowanie gry, dodanie nowych plansz i lepszej grafiki, ale jakoś potem rozpocząłem przygodę z platformą Google Android i niestety nie wróciłem już do tego projektu. Niemniej jednak nie żałuję poświęconego mu czasu, bo w trakcie pracy nad nim nauczyłem się dwóch bardzo ważnych rzeczy:

  1. To, że aplikacja działa na emulatorze wcale nie musi znaczyć, że będzie działała na "żywym" urządzeniu.
  2. Z wielowątkowością na urządzeniach mobilnych trzeba bardzo uważać.
Obie wielokrotnie przydały mi się później jak tworzyłem aplikacje na Androida, czy iPhone'a. Zwłaszcza podpunkt pierwszy ;-). Muszę się też szczerze przyznać, że implementacja silnika gry była moją pierwszą w ogóle stycznością z wielowątkowością.
Do tej pory czerpię z doświadczeń, które nabyłem przy pisaniu tej aplikacji.

Chciałem zamieścić fragmenty kodu, ale niestety przepadł gdzieś w mroku dziejów. Ale tak sobie myślę, że pewnie i tak nikt by w nie nie wnikał, bo w końcu kto dzisiaj programuje w Java'ie pod Symbiana... ?

Pozdrawiam,
   Markacy


czwartek, 8 grudnia 2011

Android, SQLite, Locale i kolejność sortowania

Helou,

   Dzisiejszego posta wrzucam ku pamięci, żeby pamiętać na przyszłość. Mam nadzieję, że oszczędzi on komuś czasu i nerwów.

Tworząc prostą, bazodanową aplikację na Google Android natknąłem się na problem z sortowaniem wyników kwerendy zaczynających się od polskich znaków. Problem polegał na tym, że słowa zaczynające się od polskich znaków (np. śrubokręt) lądowały w liście na końcu alfabetu (po tych zaczynających się na "z"). Po dłuższym czasie bezowocnego guglania znalazłem wreszcie na to sposób:

db.query("table_name", new String[] { "column1", "column2",
     "column3", "column4" }, null, null, null, null,
     "column2" + " COLLATE LOCALIZED");
 
 



Pomocne są parametry dodane do kwerendy: COLLATE LOCALIZED. Dzięki nim sqlite sortuje wyniki korzystając z locale systemu, co rozwiązuje problem.








   Tak przy okazji, to niedługo wrzucę swoją pierwszą aplikację na Android Market. :-)