poniedziałek, 22 marca 2010

Ewolucja WebRuntime i FlashLite

Nokia i Adobe planują wypuszczenie Flash Lite4 w ramach aktualizacji oprogramowania firmware. Ta aktualizacja jest podyktowana dalszym rozwojem silnika WebRuntime do lepszej współpracy z FlashLite. Okazało się że tworzenie aplikacji opartych na FlashLite wymaga właściwego mechanizmu dystrybucji. Obecnie żeby dystrybuować aplikację FlashLite trzeba przygotować plik SWF, albo załadować plik SWF ze strony internetowej, albo załadować plik SWF do paczki widgetu, albo w różny sposób robić instalki SIS. Biorąc pod uwagę istnienie mechanizmu pozwalającego ładowanie pliku SWF FlashLite do aplikacji Symbian w języku C++ to możliwości do wykorzystania. Obecnie zespół Qt pracuje nad integracją QtWebkit 2.0 z FlashLite 4 dla Symbiana^4. Silnik QtWebkit2.0 został tak skonstruowany, żeby prace nad nim nie wchodziły w kolizje z innymi projektami w Qt. Spowodowane to jest tez tym, że rozwój silnika Webkit staje się coraz szybszy co powoduje trochę inne cykle rozwojowe w przypadku zarządzania projektami IT.

Gary Chan przedstawił prezentację rozwoju silników WebRuntime:



Zdziwienie wywołało u mnie na slajdzie 11 informacja o dostępności w Platform Services 2.0 obsługi Audio. Owszem jest Media Management API ale z sterowaniem dźwięku chyba nie ma nic wspólnego. Na slajdzie 14 pisze że Ovi Maps API zapewni dostęp do danych map Nokii z poziomu komórki. Problem w tym że programiści nie mają dostępu jeszcze do internetowego interfejsu Nokia Maps z poziomu widgetów WRT. Natomiast juz są dema wigetów WRT czy aplikacji QtWebKit wykorzystujące API Google Maps czy OpenMaps API. Na slajdzie 15 pisze że wprowadzi się nowe API Show on Map. Nie wiem do końca na czym to ma polegać wychodzi na to że może takie aplikacje maja działać w ten sposób że zostają pokazane statystyki geolokalizacyjne dla tych którzy sprzedają aplikacje przez Ovi. Na slajdzie 16 wspomniano że obecnie należy programować w ActionScript2 dla FlashLite3 a także że Symbian^3 będzie zawierał Flashlite 4 a potem wprowadzi się wersję Flash Playera 10.1. Nie wiemy tylko czy Flash Lite 4 będzie dostępny dla starszych wersji Symbiana. Nowoscia w FlashLite 4 ma być możliwosć obsługi WebTV SDK z Adobe co pokazano na slajdzie 17. Przypuszczam że WebTV SDK to może operać się na Open Source Media Framework Natomiast w prezentacji nie wspomniano o projekcie Slider. Z punktu widzenia użytkownika lepiej zrobić interfejs aplikacji używając technologii FlashLite niż HTML/JS z WebRubtime, chociaż dzisiaj łatwiej o programistę JavaScript niż FlashLite.

środa, 17 marca 2010

Symbian Silverlight beta

Microsoft z współpracy z Nokią wypuścił wersję beta Silverlight 2 na Symbiana^1.. Betę opublikowano na stronach Nokia Beta Labs, To co mnie zainteresowało najbardziej to fakt, że wypuszczono wersję Silverlight w wersji tylko dla modeli dotykowych. Samo zainstalowanie wtyczki nic nie pomogło w sytuacji gdy nie ma linków do przykładów. W końcu ktoś podał linka do dema dla Binga
Po przeszukaniu informacji okazało się że to zespół z Indii stworzył tą aplikację. Tym zespołem kieruje Manav Gaur (@mgaur). Postanowiłem więc przyjrzeć się możliwościom tej wersji. Ściągnąłem więc wersję Silverlight for Symbian - Beta Developer Tools. Po zainstalowaniu zauważyłem że są przykłady: Digg, HelloWorld i SilverPlayer. Przegrałem je na kartę i spróbowałem uruchomić (nie udało się). Pomyślałęm że problem jest że te wersje nie są dobrze skompilowane. Postanowiłem zainstalować Visual Web Developer 2008 Express with SP1 (instalacja była trochę problematyczna) wraz z Microsoft® Silverlight™ 2 Tools for Visual Studio 2008 SP1 Po zainstalowaniu zrobiłem swoja wersję HelloWorld i wrzuciłem ją do komórki. Też nie dało się uruchomić w tej sytuacji zrozumiałem, że można tylko te pliki xap pobierać z internetu. Po pobieżnym zapoznaniu się z dokumentacją doszedłem do wniosku że na razie chyba sensowne rozwiązanie to używanie wersji na emulatorze dla S60 5th Edition SDK v1.0.. W tej sytuacji wszedłem do folderu Redist\Emulator zrobiłem plik c.bat z polecaniem cmd i uruchomiłem go, pojawiło się okno konsoli linii poleceń wiec wpisałem tam

InstS60Emu.cmd E:\S60\devices\S60_5th_Edition_SDK_v1.0

Po skopiowaniu 27 plików uruchomiłem emulator. W razie czego zmieniłem wybór emulatora poleceniem

devices -setdefault @S60_5th_Edition_SDK_v1.0:com.nokia.S60

a emulator uruchamiam poleceniem

epoc

Następnie uruchamiam w przeglądarce emulatora demo z Bingiem i zadziałało.
Pozostało sprawdzenie czy zadziałają przykłady z folderu Samples. Przypomniałem sobie nagle, że na lokalnym Apachu trzeba dodać MINE Types dla technologii Microsoftu wiec w pliku mine,types (albo można też w pliku httpd.conf) serwera Apache2.2 dodałem następujące wpisy:

application/manifest manifest
application/xaml+xml xaml
application/x-msdownload dll
application/x-ms-application application
application/x-ms-xbap xbap
application/octet-stream deploy
application/vnd.ms-xpsdocument xps
application/x-silverlight-app xap

Następnie zrestartowałem serwer Apache2.2. Przegrałem pliki przykładów do foldera htdocs/sl. Tak wiec miałem dostęp pod adresem http://127.0.0.1/sl/index.htm.
Uruchomiłem znowu emulator poleceniem epoc z linii poleceń. Długo się uruchamia sam emulator. Po otwarciu przykładu z SilverPlayer przgladarka w emulatorze zaiwszała się z błędem KERN-EXEC 3 Natomiast w przykładzie z Digga wyglądało na to że nie działa wpisywanie tekstu w pole tekstowe.

Czy Silverlight zagości w komórkach z Symbianem? Według mojego rozeznania nie za bardzo. Na poziomie użytkownika przypomina to konieczność ściągania i instalowania wtyczki (4 MB). Z punktu widzenia reklamodawców to technologia o bardzo małym zasięgu i dla niewielkiej liczby użytkowników. Z punktu widzenia zespołu programistycznego wymusza to fragmentaryzację i utrzymywanie wersji w Silverlight 2.0 (dla przeglądarek na Linuksie na Mono i dla urządzeń mobilnych) i Silverlight 3.0 (dla przeglądarek na Windowsie i Macu) i pracować nad migracją do Silverlight 4. W praktyce programiści i designerzy oraz developerzy prawdopodobnie zignorują wersję na urządzenia mobilne. Najgorzej wyjdzie jeszcze dla technologii Silverlight na Symbiana będzie rywalizacja z technologią Adobe czyli FlashLite czy Flash 10.1. Problem w tym że Ci którzy robią elementy Flash na stronach WWW nie biorą pod uwagę tego że trzeba dodać wersje Flash Lite dla użytkowników inteligentnych komórek. Jeżeli jest bardzo niskie zainteresowanie technologią FlashLite to jeszcze gorzej wypadnie dla Silverlighta. Następnym elementem, który wskazuje bardzo słabe zainteresowanie programistów .NET platformą Symbian jest upadek firmy RedFive a wcześniej AppForge. To co może dać szansę dla Silverlighta na Symbiana to:

  • dostarczenie wersji standalone do uruchamiania plików xap lokalnie
  • zrobienie wersji dla S60 3rd FP2
  • umożliwienie tworzenie paczek sis z aplikacjami Silverlight
  • umożliwienie uruchamianie aplikacji Silverlight (plików xap) z poziomu widgetów WebRuntime
  • dołączenie Silverlighta do aktualizacji FOTA (podobne do dystrybucji runtime Pythona 2.0)
  • dołączenie Platform Services 2.0 do runtime Silverlight
  • pokazać przykłady współpracy z QtWebkit
  • zrobienie frameworka UI dedykowanego dla Symbian i Windows Phone 7
  • i przede wszystkim dużo kursów i przykładów dla Symbiana oraz promowanie społeczności przez Microsoft i jak Nokię

wtorek, 16 marca 2010

APIBridge i Nokia Platform Service 2.0

Platform Services to API w Symbianie, dzięki któremu różnym technologiom na Symbiana (Web Runtime, FlashLite, Java Mobile i jak Python) zapewnia się identryczne API do pewnych funkcjonalności a w przyszłości rozszerzanie je.

Koncepcję API Platform Services powstała jak tworzono WebRuntime dla S60 3rd FP1 (bazując na Symbianie 9.2) Wtedy do obsługi aplikacji tworzonych jako widgety dodano API System Service Information pozwalające na zbieranie następujących informacji: stan baterii, stan połączenia z siecią, uruchamianie wibracji, stan wyświetlacza, stan pamięci RAM, oraz informacje o wersji językowej systemu. Pierwsze API nazwano WRT 1.0

API Platform Services 1.0 pojawiło się w 2008 wraz z wprowadzeniem S60 5th edition, jako rozszerzenie dla aplikacji internetowych dla WebRuntime i jak dla FlashLite. Celem było umożliwienie programistom szybkie wykorzystanie programowania w JavaScript czy ActionScriptu 2.0 do pewnych funkcjonalności komórki. Wtedy oficjalnie przyjęto że API dla WebRuntime w S60 5th nazwano WRT 1.1 Natomiast też wprowadzono API Platform Services 1.0 dla FlashLite 3 tylko dla S60 5th. One zawierały bardzo duży zestaw możliwości dla twórców aplikacji Symbiana w JavaScript czy ActionScript 2.0.
Oto zestaw API Platform Services 1.0 zawierał takie możliwości jak:
AppManager API pozwala na zebranie informacji jakie programy ma zainstalowane użytkownik i uruchamianie ich oraz plików powiązanych z aplikacjami
Calendar API- pozwala na dostęp i modyfikacje oraz zarządzanie danymi w kalendarzu.
Contacts API - można pobrać dane z kontaktów, modyfikować je i w razie czego eksportować do pliku vCard
Landmarks API - służy do zbierania informacji o punktach orientacyjnych i ich kategoriach a także tworzenie ich i czy eksportowanie w formacie XML
Location API - zbiera informacje o położeniu użytkownika z takich urządzeń GPS, AGPS czy z odbiorników Bluetooth GPS
Logging API - ma się dostęp do logów użytkownika kiedy i do kogo dzwonił
Media Management API - zapewnia dostęp do plików mediów w publicznych katalogach w komórce w tym do zdjęć użytkownika czy filmików użytkownika.
Messaging API - pozwala na wysłanie SMSa, MMSa czy emaila jako MMSa, pozwala też na przeczytanie treści w SMSach i MMSach, wyświetlenie monitu że otrzymało się wiadomość, zmianę statusu wiadomości a także kasowanie wiadomości programistyczne.
Sensors API - otrzymujesz dostęp do danych z czujników akceleracji, nacisku (tapping), orientacji, obrotu, kompasu (czujnik magnetyczny), przechylania (tilt)
System Information API dla WRT 1.1 ma sporo nowych opcji do odczytu: głównie informacje techniczne o komórce: firmware, nazwa, model, imei, identyfikator komórki, a także informacje związane z siecią: nazwę operatora, numer stacji bazowej, obszar gdzie użytkownik się znajduje.

Potencjalne możliwosci wykorzystania tego API są spore i wystarczające do tworzenia całkiem ciekawych funkcjonalności.

Potem Nokia aktualizowała w niektórych modelach silnik przeglądarki internetowej WebKit a także pojawiła się nowa wersja FlashLite 3.1 to dla niektórych modeli API WebRuntime zaczęło nazywać się WRT 7.0 i WRT 7.1.

Z jednej strony coraz większa presja na tworzenie aplikacji w HTML5, żeby dorównać możliwościom. Nokia wraz ze swoimi partnerami najpierw jako projekt wewnętrzny stworzono API do WebRuntime pozwalający na dodawanie nowych wtyczek i możliwości czyli APIBridge. Z tego co mi wiadomo najpierw wykorzystał Facebook do stworzenia aplikacji na N97. Ponieważ ta aplikacja stałą się popularna to Nokia postanowiła upublicznić komponent APIBridge. Najpierw w wersji alpha w listopadzie 2009, a potem już poprawione wersje w lutym 2010 dla APIBridge Web Runtime API i jak dla FlashLite czy J2ME

W praktyce okazało się że sporo jest komórek z S60 3rd które właściwie nie mają Platform Services, wiec wyszła potrzeba dostarczenia tym komórkom takiej samej funkcjonalności jakie mają te nowsze komórki. Wykorzystując możliwość tworzenia aplikacji serwerowej opartej na pluginach ECOM stworzono framework który pozwala na rozszerzanie możliwości dla WebRuntime, FlashLite czy nawet JaveMobile i Pythona. API tego frameworka API Bridge można wykorzystać zarówno każdej wersji WRT czy w FlashLite 2 czy FlashLite 3.
Możliwości APIBridge są takie: wysyłanie plików, nagrywanie filmów, robienie zdjęć, nagrywanie dźwięku, odczyt plików, skalowanie obrazków, tworzenie miniatur, dostęp do usług Logging API, dostęp do usług Location API, dostęp do plików multimedialnych i wysyłanie tonów DTMF podczas dzwonienia. To wszystko jest dostępne dla programistów ActionScriptu i jak JavaScriptu czy Javy

Równocześnie Nokia dokonała refaktoringu API Platform Service dostarczając możliwość obsługi kamery z poziomu JavaScriptu. API Platform Service 2.0 zostało wypuszczone jako wersja alpha do testowania w marcu 2009, natomiast rok potem w marcu 2010 zostało wysłane do aktualizacji w firmaware N97 i N97 Mini. Główna różnica pomiędzy API Platform Service 2.0 a API Platform Service 1.0 poza zmienionymi nazw metod polega na tym że większość kodu w API Platform Service 2.0 może wykonywać się w sposób asynchroniczny i usunięto ze względów bezpieczeństwa AppManager API.

Czy te możliwości przyjmą się wśród programistów na komórki? Trudno powiedzieć. Ludzie chcą bardziej bajerancki UI dla aplikacji, co jest możliwe do zrealizowania w FlashLite 3, a z drugiej strony spora fragmentaryzacja technologii wymusza dokonywanie pewnych kompromisów w zakresie projektowania i ingerencji w dane użytkownika. Ktoś złośliwy mógłby napisać gierkę a w tle dokonywałoby zbierania danych o użytkowniku, a potem AJAXem wysłałby dane o komórce użytkownika też wraz z danymi o położeniu użytkownika. W teorii można by wgrać listę wszystkich sklepów i ich dane kontaktowe do książki adresowej użytkownika a także wgrać listę punktów obserwacyjnych o tych sklepach do bazy w komórce. Takie aplikacje są dobre dla ludzi którzy potrzebują szybkiego kontaktu wewnątrz organizacji i na służbowych komórkach. Monitoring pracowników gdzie aplikacja w tle wysyła na serwer komunikaty o położeniu pracownika i jego aktywności jest wręcz konieczna w przypadku gdzie trzeba zarządzać ludźmi w czasie rzeczywistym. Pisząc o jego aktywności polega to na zbieraniu informacji o jego kontaktach. Wykorzystanie kamery w komórce pozwoli na robienie na szybko zdjęć i wysyłanie tego mailem czy MMS ma duże znaczenie w dostarczaniu komunikatów z imprez czy efektywności podejmowanych działań. Właściwie bardzo silna możliwość identyfikacji użytkownika komórki sprawia że łatwiej jest dokonać jego pomiaru aktywności poprzez wykorzystanie tej aplikacji jako widgetu w internecie niż w przypadku aplikacji internetowych z przeglądarki internetowej. Widgety Symbiana mogą stać się bardzo skutecznym w marketingu mobilnym - ale też przekleństwem dla użytkowników komórek.