Widgety – część pierwsza: Universal Widget API JBoss jBPM!?
Aug 21

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

Podziel się z innymi:
  • Wykop
  • Digg
  • del.icio.us
  • StumbleUpon
  • Slashdot

Leave a Reply

Security Code: