niedziela, 2 czerwca 2013

Barman: Reloaded Again

   Dzisiaj krótka notka :-)
 
   W związku z dużą ilością próśb i zapytań opublikowałem kolejną aktualizację Barmana - tym razem zawierającą nowe przepisy na drinki oraz drobne poprawki.
Postaram się raz na jakiś czas dodawać kolejne przepisy. Tymczasem próbujcie i testujcie nowe drinki. ;-)
Miłej zabawy :-)

poniedziałek, 20 maja 2013

Barman: Reloaded

   Po prawie półtora roku od momentu publikacji mojej pierwszej aplikacji na Google Play wziąłem się do roboty i przygotowałem aktualizację Barmana. Skupiłem się głównie na uatrakcyjnieniu interfejsu graficznego. Wiem, że sporo osób zwracało uwagę na małą ilość przepisów, ale to temat następnej aktualizacji, którą planuję a nad którą praca już jest w toku.

W obecnej aktualizacji zmiany obejmują:
  • uatrakcyjnienie interfejsu graficznego aplikacji
  • wersja aplikacji dedykowana dla tabletów (nie trzeba niczego dodatkowo instalować)
  • duże zmiany w samym silniku aplikacji niewidoczne z zewnątrz, ale usprawniające jej działanie
  • sporo drobnych poprawek
Tak więc użytkownikom mojej aplikacji polecam zrobienie aktualizacji, natomiast tym, którzy nie mieli przyjemności korzystania z Barmana mogę powiedzieć tylko, żeby zainstalowali aplikację na swoich smartfonach z androidem :-)

Aktualizacja lada chwila powinna się pojawić na Google Play.

Miłej zabawy,
Szczypek

wtorek, 23 kwietnia 2013

Przygody z MeeGo i plikami GPX :-)

No to dzisiaj z nieco innej beczki :-)

   Żeby czasem odpocząć od aplikacji Androidowych, co jakiś czas próbuję sił w programowaniu na Nokię N9 z systemem MeeGo na pokładzie. Nie jest to rzecz regularna, ponieważ mam dostęp do tego urządzenia cyklicznie, ale zawsze to miłe urozmaicenie. A i przy okazji praktyka w wykorzystaniu platformy Qt, języka C++ i QML na pewno się przyda. Przyczyna jest prosta - korzystając z tego "frameworka" można tworzyć aplikacje od mobilnych, przez wbudowane aż po desktopowe. I to na wszystkie główne systemy operacyjne.
   O samym telefonie firmy Nokia nie będę się rozpisywał. Jednakże warto wspomnieć po krótce jego historię, ponieważ już w momencie premiery wiadomo było, że będzie to pierwszy i ostatni telefon Nokii z systemem MeeGo. Niestety wtedy już było wiadomo o mariażu fińskiego producenta telefonów z MałymMiękkim, który zapewne miał wpływ na podjętą decyzję finów ;-) Wydaje się, że telefon ten wypuszczono na rynek,tylko dlatego, że w tym momencie był już ukończonym produktem. Brak przyszłych aktualizacji niestety sprawił, że platforma ta, mimo że na prawdę porządnie i dobrze zrobiona, pozostała w cieniu i mało kto pisze na nią aplikacje.
   No i właśnie w tym momencie przejdę do meritum dzisiejszego posta. Czasem zdarza mi się jeździć rowerem - ot tak, dla zdrowia i przyjemności. I dla wprawy postanowiłem napisać prostą aplikację na moją N9, która zapisywałaby trasę mojego przejazdu w postaci pliku GPX. Plik GPX jest ustandaryzowanym formatem XMLa, który w założeniu ma ułatwiać wymianę danych między aplikacjami korzystającymi z danych pobieranych z odbiornika GPS. Oto przykładowy, prosty plik w formacie GPX (http://pygments.org/demo/76845/ ).

Przykladowy plik GPX wygenerowany przez aplikację

Na początku mamy typowe dla formatu xml deklaracje. Następnie (druga linia) znacznik gpx będący korzeniem naszego xmla. Pierwszym nodem jest metadata , w którym zamieszczamy przynajmniej granice geograficzne naszej trasy (minimalne i maksymalne wartości długości i szerokości geograficznej zmierzonej trasy), oraz czas zapisania dokumentu gpx (time).
Następnie mamy znacznik trk , który zawiera już dane z naszego odbiornika gps w telefonie. Cała trasa podzielona jest na segmenty (trkseg), które grupują kolejno następujące po sobie dane stanowiące logiczną całość. Np. dane z jednej trasy spaceru, w trakcie którego utracono na chwilę sygnał gps będą zapisane w dwóch segmentach. W reszcie przechowuje dane poszczególnych punktów pomiaru w znaczniku trkpt. W atrybutach zapisane są długość i szerokość geograficzna, a w znacznikach odpowiednio wysokość nad poziomem morza (ele) i dokładny czas dokonania pomiaru (time). Oczywiście niniejszy przyklad jest maksymalnie uproszczony, a sam standard gpx przewiduje dużo więcej możliwości. Zainteresowanych odsyłam do źródła (http://www.topografix.com/gpx/1/1/ ).
   Moja aplikacja testowa jest najprostsza, jak to tylko możliwe. W pliku MainPage.qml, tworzy i konfiguruje źródło danych GPS. W tym przypadku ustawiamy częstotliwość odczytów pozycji na jeden co 10 sekund (10000 milisekund), zaś sygnał o zmianie pozycji będzie uruchamiał funkcję updateGeoInfo, która współrzędne i czas ich pobrania wpisuje do etykiet wyświetlających te dane na interfejsie aplikacji. No i oczywiście przesyła te dane do metody writePosition klasy QGPXWriter.



   Zadaniem wyżej wymienionej klasy jest utworzenie dokumentu gpx, zapisanie do niego danych poszczególnych punktów pomiarowych (metoda writePosition ) oraz zapisanie utworzonego dokumentu do pliku na dysku telefonu.

Mimo swojej prostoty aplikacja działa bardzo dobrze i po każdym spacerze, czy jeździe na rowerze mogę pobrać z telefonu plik gpx z zapisem trasy i utworzyć na jego podstawie wpis w internetowych serwisach sportowych typu runkeeper, czy endomondo. Jak dla mnie - bomba, bo w końcu mogę Nokię N9 wykorzystywać to śledzenia mojej aktywności sportowej. No i przy okazji narodził się pomysł wykorzystania wiedzy, którą zdobyłem tworząc tą aplikację do stworzenia bardziej pełnego produktu.
Pełny kod aplikacji dostępny jest w serwisie bitbucket.
Miłej zabawy! :-)