Ż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
Następnie mamy znacznik trk
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! :-)



Brak komentarzy:
Prześlij komentarz