Widgety – część druga: WidSets
Universal Widget API, o którym opowiadałem poprzednio, jest dość wszechstronny i faktycznie działa na wielu platformach, jednak jego zawarta w nazwie uniwersalność ma pewne ograniczenia. Najpoważniejszym z nich jest brak kompatybilności z urządzeniami mobilnymi – działają tylko pod iPhone’em, a Opera Mobile dla “normalnych” telefonów jeszcze z nimi nie współpracuje.
Dla chcących pisać widgety na bardziej pospolite telefony komórkowe jest nadzieja w postaci platformy WidSets, uruchomionej i wdrożonej przez koncern Nokia, jednak nie tylko na telefony tej firmy przeznaczona.
Użytkowanie
Platforma WidSets współpracuje z ponad trzema setkami modeli telefonów komórkowych i opiera się o aplikację, którą w telefonie należy sobie zainstalować. Aplikacja ta łączy się z naszym kontem, założonym w internetowym serwisie WidSets, pobiera dane o wybranych przez nas widgetach i wyświetla je na ekranie naszego telefonu.
Oczywiście, najpierw trzeba sobie w serwisie założyć owo konto. Zanim to jednak zrobimy, serwis WidSets udostępnia nam bardzo ciekawie pomyślaną demonstrację swoich możliwości – na specjalnej stronie mamy dostępną całą bibliotekę widgetów do wyboru, oraz emulator telefonu komórkowego, na którym możemy podpatrzeć, jak aplikacja będzie wyglądać i działać.
Gdy już zdecydujemy się na rejestrację, będziemy przez jej proces poprowadzeni jak za rączkę – serwis najpierw pyta o typowe dane rejestracyjne, a następnie pomaga nam pobrać i zainstalować aplikację w telefonie. Trzeba przyznać, że to także jest świetnie rozwiązane – dostępne są trzy drogi, do wyboru w zależności od stopnia zaawansowania użytkownika, w różnym stopniu absorbujące jego uwagę:
- Dummies podają numer telefonu, na który przychodzi sms z linkiem, pod którym znajduje się aplikacja do zainstalowania,
- Techies przepisują podany na stronie URL do przeglądarki w komórce,
- a Geeks pobierają plik JAD, który ręcznie przenoszą i odpalają w telefonie, instalując tym samym aplikację.
Ja wybrałem to środkowe rozwiązanie, co pozwoliło nie czuć mi się ani jak oporny (dummy), ani jak geek.
Po zainstalowaniu w telefonie, aplikacja łączy się z kontem w serwisie i można przejść do konfiguracji, która polega głównie na wybraniu z biblioteki interesujących nas widgetów. Biblioteka jest dość obszerna i zawiera mnóstwo programów przydatnych bardziej (wiadomości, pogoda, organizatory czasu, skrzynki e-mailowe…) lub mniej (gry i inne czasoumilacze). Bardzo fajne jest to, że swoje widgety można wybierać nie tylko za pośrednictwem telefonu, ale też w komputerze, logując się w serwisie – nawet, gdy nasz telefon nie jest z nim połączony, my możemy zobaczyć i skonfigurować nasz pulpit (dashboard), a nawet – odpalić emulator komórki, w którym możemy przetestować jego działanie.
Testowałem działanie WidSetsów na mojej Nokii E50 i wszystko działa bardzo dobrze. Dodatkowe ułatwienie, podejrzewam, mogą mieć posiadacze telefonów z wbudowanym WiFi (np. Nokia E51), którzy nie muszą się łączyć z internetem za pośrednictwem swojej sieci komórkowej.
Tworzenie
Jak większość serwisów widgetowych (NetVibes, Opera, Apple…), także WidSets udostępniają możliwość tworzenia własnych widgetów. Przede wszystkim w serwisie dostępna jest opcja szybkiego generowania widgeta. Ma on, oczywiście, ograniczone możliwości – można w nim stworzyć właściwie tylko czytnik kanałów RSS lub podobnych i najwyżej wybrać skórkę, która nam będzie odpowiadać – ale niektórym to w zupełności wystarcza (coś podobnego, ale dla widgetów “desktopowych”, oferuje serwis wstaw.to).
Dla użytkowników bardziej wymagających i tych z zacięciem programistycznym, WidSets oferują cały Software Developer’s Kit do tworzenia bardziej zaawansowanych programów. Taki wdget składa się z dwóch plików: XML-owego deskryptora (plik widget.xml) oraz z kodu aplikacji (plik *.he). Dodatkowo mogą się na niego składać pliki zasobów, np. obrazki w formacje jpg lub png.
Plik widget.xml zawiera informacje o naszym widgecie: w sekcji <info> znajdują się informacje o widgecie, np:
<info> <name>Flag Selector</name> <version>1.0</version> <author>Developer</author> <shortdescription>Displaying some flags</shortdescription> </info>
Następnie w sekcji <parameters> opisane są opcje i parametry widgeta – analogicznie do taga <widget:preferences> w UWA:
<parameters>
<parameter type="string"
name="widgetname"
description="Name of widget"
help="This is the name of the widget"
editable="false"
sendtomobile="true"
visible="true">
<value>
Flag Selector
</value>
</parameter>
</parameters>
Następnie, w sekcji <resources> wymienione są dodatkowe źródła danych, np. style, z których aplikacja będzie korzystać (składniowo podobne do CSS), np:
<stylesheet>
bkg {
background: vgradient white silver;
}
frame {
background: solid silver;
}
flag {
align: hcenter vcenter;
border: 2 2 2 2;
border-type: rectangle red;
}
nametext {
align: hcenter vcenter;
color-1: green;
font-1: medium bold;
background: vgradient silver white;
}
greetingtext {
align: hcenter vcenter;
color-1: blue;
font-1: medium bold;
background: vgradient white green;
}
about {
align: hcenter vcenter;
color-1: blue;
font-1: large bold;
background: solid orange;
}
</stylesheet>
albo pliki zasobów, np. graficznych:
<img scale=”true” src="finland.png"/> <img scale=”true” src="uk.png"/> <img scale=”true” src="eu.png"/> <img src="bkg.png"/>
Wreszcie – podany tam jest plik (tylko jeden) z kodem źródłowym widgeta:
<code src=”flagselector.he”/>
W ostatniej sekcji deskryptora, <layout>, wymienione i opisane są widoki widgeta, których zasadami wyświetlania zajmuje się skrypt aplikacji. Elementy graficzne podobne są do komponentów Swingowych:
<layout minimizedheight="60px">
<view id="miniView">
<img src="minimized.png"/>
</view>
<view class="bkg" id="mainView">
<script id="flag" top="10%" right="80%" bottom="60%" left="20%"/>
<script id="name" top="65%" right="100%" bottom="80%" left="0%"/>
<script id="greeting" top="80%" right="100%" bottom="100%" left="0%"/>
</view>
</layout>
Gdy już deskryptor mamy napisany, pora zasiąść do kodu właściwego. Piszę się go w języku skryptowym WSL, czyli WidSets Scripting Language. Jest on podobny w składni do Javy, choć mocno ograniczony. Cały kod widgeta opiera się na klasie, w której musimy zdefiniować metody startWidget() oraz openWidget() – od nich rozpoczyna działanie nasza aplikacja. Przepływ programu polega na odpowiednim odnoszeniu się do zdefiniowanych w deskryptorze, w sekcji <layout>, widoków i elementów. Mamy też możliwość sięgania po zdefiniowane tam zasoby i parametry, a także możemy definiować akcje klawiszy telefonu komórkowego.
Bardzo istotnym elementem API są usługi pobierania treści – nasz widget może być czymś więcej, niż lokalną aplikacją, działającą na lokalnych danych (jak gra bądź kalkulator). Możliwe jest sięganie do danych z różnych usług webowych. Dostępne są cztery rodzaje usług:
- Syndication do pobierania treści z kanałów RSS, Atom czy RDF,
- Webfeed do pobierania niestandardowych treści,
- Image do pobierania grafiki, oraz
- HTTP do wykonywania żądań HTTP GET i HTTP POST.
Dzięki temu, oraz dodatkowym usługom (np. autentykacji) można stworzyć widgeta, który będzie sięgał do różnych źródeł internetowych, pobierał i kompilował interesujące nas dane, a następnie wyświetlał w przystępnej formie na ekranie naszego telefonu.
Użytkowanie tego, co się stworzyło
Gdy już skrypt i deskryptor mamy napisane, możemy przejść do kompilacji, testowania, a wreszcie – umieszczenia na swoim pulpicie. Kompilator jest dołączony do SDK w postaci programu devkit, uruchamianego z linii komend. Na początek musimy zalogować się na swoje konto w serwisie WidSets:
devkit login [LOGIN] [HASŁO]
a następnie wydajemy jedną komendę:
devkit run [ŚCIEŻKA_DO_WIDGETA]
a program naszego widgeta skompiluje, spakuje do ZIPa, wyśle do serwisu i uruchomi emulator komórki, w którym możemy widgeta przetestwować od razu. Ponieważ widget jest od razu wrzucany na nasz WidSetsowy pulpit, możemy go także od razu przetestować w prawdziwym telefonie.
Kompilator devkit posiada jeszcze mnóstwo dodatkowych opcji, ale nie będę się w nie tutaj zagłębiał. Dość powiedzieć, że daje on całkiem pokaźne możliwości.
Po pozytywnym przetestowaniu nasz widget możemy dodać do biblioteki publicznej, aby inni też mogli go sobie pobrać i z niego korzystać, ale nie jest to oczywiście konieczne.
Podsumowanie
WidSets jest naprawdę ciekawą technologią, pozwalającą na tworzenie małych, prostych a użytecznych aplikacji, do których można mieć dostęp wszędzie za pośrednictwem telefonu komórkowego. Mogą mieć zarówno charakter lokalny (czyli przetwarzać dane, wprowadzane bezpośrednio do telefonu albo korzystać z jego zasobów – istnieje np. możliwość pobierania danych z aparatu fotograficznego w telefonie), jak i zdalny, gdy aplikacja sięga po zasoby lub informacje z Internetu, by je obrobić i wyświetlić.
Źródła
- WidSets Wiki
- Pierwsza aplikacja (stąd brałem fragmenty kodu do przykładów w artykule)
- WSL w skrócie
- Opis WidSets SDK
- WidSets API – dokumentacja a’la Javadoc
- WidSets SDK - pobieranie








Recent Comments