artykuły

Pisanie aplikacji na telewizory SmartTV firmy LG

23:59
Thu, 16 January 2014
Do niedawna śmieszyły historie o programistach piszących programy na toster, czy  amatorskich filmowców, z których śmiano się, że nagrywali materiał kalkulatorem, bo był on tak kiepskiej jakości. Dzisiaj mamy zarówno tostery z Linuxem, jak i długopisy nagrywające obraz FullHD. Coraz więcej producentów telewizorów oferuje w swoim sprzęcie smart-funkcje. Ten artykuł przybliża proces powstawania takich aplikacji na bazie moich doświadczeń.

Dzisiejszy świat staje się coraz dziwniejszy. Jeszcze nie tak dawno, w świecie programistów śmieszyła sytuacja:

- Co robisz?
- Piszę program na toster.

Pisanie programów na kalkulatory i długopisy było kuriozalne. Przy filmach niskiej jakości śmieszyły również stwierdzenia typu:
- Czym to nagrywałeś?
- Kalkulatorem.

Toster z Linuxem W dzisiejszym świecie zaczyna się to zmieniać. Mamy bowiem tostery z Linuxem i długopisy nagrywające w HD. Od niedawna możemy również pisać programy na telewizory. W polskim Internecie nikt nie napisał jeszcze artykułu na ten temat. Czyniąc długą historię krótką – Lukas’ Home Page będzie pionierem. Opiszę pokrótce czego możemy się spodziewać jako programiści.


DeMotywacja (niestety)

Tak samo jak wydawanie linuxowych komend tosterowi aby zjeść grzankę jest mało wygodne, tak samo jak nagrywanie filmów długopisem jest mało wygodne, tak samo korzystanie z programów i gier na telewizorach i odtwarzaczach BluRay za pomocą pilota TV jest mało wygodne. LG i Samsung w swoich SmartTV koniecznie chcą zaoferować aplikacje i gry, bo wiąże się to ze sporymi zyskami z ich sprzedaży oraz wyświetlania w nich reklam. Te firmy czerpią swoją inspirację z Google – reklamowego giganta - jednak zdają się nie zauważać, że Google nieco luźniej podchodzi do kwestii weryfikacji aplikacji, słusznie zakładając, że lepsze aplikacje się wybiją, a gorsze zostaną pożarte przez tłum rozwścieczonych użytkowników.

No dobrze, ale zacznijmy od początku:

Jak tworzy się aplikacje na telewizory i odtwarzacze Blu-Ray?

W środowisku programistycznym LG IDE będącym zmodyfikowanym Eclipse’m (link do pobrania: http://developer.lge.com/resource/tv/RetrieveWebOSSdktoolsContent.dev ) aplikacje piszemy (uwaga!) w… HTML5 + JavaScript + CSS. Stąd ich wolne działanie. Na telewizorze SmartTV/odtwarzaczu Blu-Ray najprawdopodobniej działa jakaś forma Linux’a (chyba jest to Ubuntu), na której uruchomiona jest przeglądarka internetowa obsługująca HTML5 (oparta o WebKit), na której dopiero uruchomiona jest nasza Web-aplikacja.

Przy tworzeniu oprogramowania tą metodą mamy do dyspozycji bibliotekę funkcji LG „NetCast Platform”, która daje nam dostęp do różnych funkcji TV (można np. wyświetlić okienko regulacji jasności i kontrastu) i zbiór gotowych komponentów graficznych.

LG IDE pozwala na graficzne tworzenie interfejsu użytkownika poprzez przeciąganie gotowych kontrolek (takich jak przyciski, pola wyboru czy listwy przycisków od telegazety RGOB (czerwony, zielony, pomarańczowy, niebieski)). Dokładniej, mamy do dyspozycji następujące kontrolki:

  • LG AnimatedImage
  • LG Button
  • LG CheckBox
  • LG Focus
  • LG GroupButton
  • LG GroupCheckBox
  • LG GroupRadio
  • LG ImageList
  • LG ImageTile
  • LG Label
  • LG MessageBox
  • LG Picker
  • LG Progress
  • LG Radio
  • LG Rating
  • LG Scroller
  • LG Slider
  • LG Tab
  • LG TextInput
  • LG ToggleSwitch
  • LG TvHelp

Nie spodziewajcie się jednak, że edytor graficzny działa dobrze. Działa niezbyt dobrze. Na przykład, gdy napisaliśmy już jakiś kod. Wówczas często, dodanie kontrolki do interfejsu powoduje małą masakrę naszego kodu, ponieważ wstawienie kontrolki pociąga za sobą wstawienie jej definicji w kodzie – a w przypadku LG IDE, wstawienie w kodzie odbywa się często – powiedzmy to delikatnie – „nie w tym miejscu co trzeba”. Na początku możecie w ogóle nie wiedzieć dlaczego Wasza aplikacja przestała się uruchamiać, skoro przed chwilą wszystko było dobrze.

Problemy następują również w przypadku zarządzania kontrolkami – np. mają one na stałe zdefiniowane zachowanie w momencie naciśnięcia przycisków na pilocie. Wówczas, gdy mamy jeszcze jakieś „własne” kontrolki w aplikacji – np. pojemnik <ARTICLE>, przy chęci zmiany fokusu na nasz element, ulega zmianie fokus komponentu LG. Brak stosownej dokumentacji do tego elementu prawie przekreśla jakąkolwiek możliwość współpracy. W przypływie niechęci napisałem więc własny komponent listwy RGOB.

Styl programowania

Wspomniane wcześniej komponenty, które nie integrują się ładnie z aplikacją, ale bezczelnie włażą z butami zmieniając jej logikę nie są jedynym mankamentem tego środowiska. Kolejnymi przykładami mogą być: mieszanie struktury dokumentu z jego stylizacją tam gdzie jest to spokojnie do uniknięcia (b class?): <div class="imgTextCenter"> <img src="images/player_btn_icon/movie_btn_icon_option_n.png" alt="optionBtn" /> <b class="textCenter">Option</b> </div\> Wróćmy jeszcze do komponentu TVHelp (czyli paska z kolorowymi, telegazetowymi, przyciskami u dołu ekranu) - po jego dodaniu nie tylko przejmuje on kontrolę nad odczytywaniem wciskanych klawiszy we wspomniany wcześniej sposób, ale również zmienia wygląd całej aplikacji (style są nadpisywane).

Długi proces publikacji aplikacji

Oto jak proces przesyłu i publikacji aplikacji wygląda u poszczególnych dystrybutorów:


Jak widać, możemy z tego wyciągnąć kilka wniosków:

  1. Panowie z LG mają zwyczaj zamieszczać swoje odpowiedzi tekstowe w plikach ppt (PowerPoint), zazwyczaj jednoslajdowych :)
  2. O ile Google Play nie każe wypełniać skomplikowanych formularzy jakościowych licząc, że twórcy sami mają interes w tym aby aplikacja była dobra jakościowo (co się oczywiście sprawdza), o tyle Panowie z LG Apps są chcącymi wszystko kontrolować biurokratami. Do wypełnienia mamy już przy rejestracji spory formularz.
    Wycinek omawianego długiego formularza
    Potem, przy wysyłaniu aplikacji robi się jeszcze ciekawiej - nie dość, że musimy wypełnić potwornie długi, 4 stronicowy, szczegółowy formularz, to jeszcze w jego trakcie dostajemy paczkę ZIP z dokumentami które należy wypełnić.
    Lista kontrolna aplikacji według LG/App checklist by LGJeden z tych dokumentów (tzw. checklist - czyli lista kontrolna stworzona przez LG) ma 128 pozycji. Każdą z tych pozycji musimy sprawdzić w swoim programie i napisać obok "pass" lub "fail". Jeśli napiszemy jednak "fail" w którejkolwiek z tych pozycji, musimy oczywiście natychmiast rozpocząć proces "poprawy jakości" i sprawić by "fail" zmieniło się na "pass" - wtedy możemy nareszcie wysłać aplikację.
Cały proces dewelopingu wygląda tak:
Proces produkcyjny aplikacji na telewizory SmartTV firmy LG

Dodatkowym problemem jest to, że część formularza do przesyłania "Related documents" nie działa pod Operą, dlatego musiałem wypełniać jeszcze raz tą stronę formularza pod Chrome.

Gdy wypełnimy już listę kontrolna…

Gdy wypełnimy listę kontrolną w rzetelny sposób, myśląc, że faktycznie spełniamy każdy warunek, może czekać nas spore rozczarowanie. Procedura zatwierdzania aplikacji przez LG trwa (uwaga!) trzy tygodnie (gdyby nie moja stanowcza interwencja, potrwała by zapewne znacznie dłużej).
Daty rewizji mojej aplikacji
Po rewizji aplikacji przez LG prawdopodobnie otrzymamy status "Rejected" (odrzucona) w którymś z testów z jednozdaniową notką mówiącą co poszło nie tak, w stylu:

I regret to inform you that the "***** News" App has not been approved for QA. For details, please refer to the attached zip file.

i dokumentem tekstowym w formacie PPT (PowerPoint ;).
Niestety, może się również tak zdarzyć, że otrzymamy od LG wiadomość zwrotną w stylu:
"- Rejected: FCK4, FCK5, FCK7, FCK10, FCK15, FCK18, FCK22, FCK23, FCK24, FCK25, FCK26, FCK27, FCK28, FCK29, FCK30, FCK31, FCK32, FCK34, FCK35, FCK36, FCK37, FCK40, FCK41, FCK42, FCK43, FCK44, FCK45, FCK46, FCK47, FCK48, FCK49, FCK51, FCK57, FCK58, FCK59, FCK60, FCK61, FCK62, FCK63, FCK64, FCK65, FCK66, FCK67, FCK68, FCK69, FCK70, FCK72, FCK78, FCK79, FCK80, FCK81"

Przy czym nigdzie nie jest wyjaśnione czym są tajemnicze identyfikatory (nijak nie pasują do listy kontrolnej), nie znalazłem ich też nigdzie w Internecie, ani we wskazówkach dla Deweloperów, ani w dokumentacji dla programistów.

Proces przesyłu aplikacjiOdrzuceniem aplikacji nie trzeba się przejmować i należy, po stosownych poprawkach, ponownie zgłosić ją do LG, ponownie ją podpisywać i często (nie zawsze!) przechodzić ponownie przez cały formularz rejestracyjny. Ale to nic - wszak zatwierdzenie przez LG trwa tylko miesiąc…

Zakończenie

Jednym słowem, moi drodzy, nie dziwię się, że w sklepie LG Apps jest tak mało aplikacji na Smart TV i są one prawie kompletnie bezużyteczne. Mojego spotkania z LG nie życzę wrogom. Było ono pierwsze i ostatnie. Aż dziw bierze, że przy takiej bandzie biurokratów ta korporacja jest w stanie cokolwiek wyprodukować.

12345
Pisanie aplikacji na telewizory SmartTV firmy LG Autor opinii: Czytelnicy, data przesłania: 0

Podobne artykuly:

Skomentuj

Aby zamieścić komentarz, proszę włączyć JavaScript - niestety roboty spamujące dają mi niezmiernie popalić.






Komentarze czytelników

    • ArTur
    • Sat, 17 June 2017, 12:10
    • Witam
      A czy da się zainstalować aplikacje do LG z dysku twardego pomijając tym samym serwery LG ?
      Pozdrawiam
Dexter