Копаясь в памяти своего неискушённого идеальным миром АД!!! богатейший опыт.
Однако, хотелось бы получить этот опыт сразу, не наступая на недокументированные грабли, разложенные по всей технологии, и специальные детские грабли разложенные каждым вендором отдельно. Но как говорится «c'est la vie» и нам пришлось пробиваться сквозь тернии к звёздам!
В итоге мы получили кроссплатформенную расширяемую библиотеку для всех SmartTv.
И имя этой библиотеке — SmartBox. Opensource, а потому постоянно в процессе разработки и документирования.
Координаты и демки Smartbox
- Репозиторий — github.com/immosmart/smartbox, можете подружиться с авторами.
- Полное демо — immosmart.github.io/smartbox/demo/demoApp/ (можно запускать в любом SmartTV, для браузера зарезервированы кнопки ESC=return, A,B,C,D = функциональные кнопки).
- Демо hello word, клавиатуры, навигации, «фантомная» навигация
- Документация скоро будет даже на английском, чаще смотрите в develop ветку.
- Видео запуска на разных устройствах Samsung 2011, 2012, Philips, LG.
Предпосылки к созданию библиотеки
Несмотря на то, что почти всё SmartTv стоит на браузерных движках (Gecko, Webkit), есть у каждого отдельного вендора свои баги нюансы и баги недокументированные возможности. Собственно отсюда всё зло:
- Невозможность писать один раз. Несмотря на созданные вендорами телевизоров альянсы и даже SDK, как ни старайся, а несколько приложений делать. Да и плюс к этому, есть вендоры, которым этот альянс за глаза не нужен, например, Samsung. Итого: если появится еще одна платформа или вы захотите расширить приложение на существующую, вам придётся не сладко.
- Невозможность писать один раз для одного вендора. Да, как ни удивительно, но есть и такое. Различие вёрстки, различные движки браузеров, различие API объектов. Голова кругом! (например 2011 и 2012 и 2013 TV Samsung)
- Нежелание использовать чужое. Здесь это как раз оправданный баг сознания. Под чужим я понимаю специализированные разные элементы управления интерфейсом: клавиатуры, селекты, инпуты, формы и т.д. У каждого вендора они, к сожалению, разные. Попробовав однажды — откажешься навсегда! А откажешься из-за банальной непереносимости на другие платформы.
- Необходимость использовать чужое. Есть целый комплекс низкоуровневых для TV API, который нет возможности, а порой и желания переносить на TV-братьев по разуму. К таким мы относим: видеоплееры, системы защиты контента, DRM и т.д.
- Сырость технологии в целом. Действительно, редкий фронтэнд программист сядет и с лёту сделает приложение для SmartTV, а тем более для нескольких разом. К тому же, как я уже говорил, детские грабли, разложенные каждым вендором отдельно, создают некоторые болевые ощущения в области их удара после обнаружения. Более глубокое осознание проблемы заключается в диком желании писать код абстрагируясь от конечного устройства. Это полезно как на первом этапе знакомства с технологией, так и после досконального изучения всего сущего в Smart Tv.
- Альтруизм. Избавляем мир от граблей! Особенно детских.
Возможности библиотеки SmartBox
Нудно и упорно разрабатывая свои приложения для Смартов, мы вынуждены были изучать всю документацию вплоть до обращения в саппорт за пояснениями. Всё это систематизировалось и накапливалось в нашем таск трекере и wiki.
Также мы изучили исходники наших конкурентов братьев по оружию — i*i, yo*a, TV*avr, Z**mbyBox и иных видео сервисов. (Откуда и каким способом они были получены я не знаю, даже не спрашивайте). Из этих исходников мы просто выяснили, что все мы идём одной дорогой к счастливому будущему SmartTv.
В итоге сели и всё переделали написав библиотеку, которая упростила нам жизнь в разы. И, надеемся, что упростит и начинающим «смартистам».
Из возможностей:
- Писать абстрактный код основываясь на API библиотеки, а не каждого TV или приставки (и это реально работает).
- Расширять приложения на различные платформы без перепиливания самого приложения.
Поддерживаемые платформы:
Пока мы используем термин triple penetration, т.е. имеем проникновение в 3 платформы:
- Samsung,
- Lg,
- Philips.
Для внедрения своей платформы, можно воспользоваться документацией о том, как это сделать. Для этого, как вы поняли, придётся расширить библиотеку файлом платформы с реализацией общих методов.
Из плагинов на сегодняшний день:
- Методы отдельных платформ,
- Консоль Лог,
- Навигация (Логика и возможности описаны очень подробно в документации),
- Поля ввода,
- Виртуальная расширяемая на любой язык или набор символов клавиатура,
- Голосовое управление (актуально для Samsung),
- Управление жестами,
- Легенда,
- Плеер,
- Абстракция LocalStorage — хранение данных на конечных устройствах.
TODO на ближайшее будущее
- Написать более высокоуровневый framework.
- Внедрять поддержку других Вендеров помимо лидеров (Sony, Panasonic, DuneHD, др).
- Фичи и баги.
Всем спасибо и хорошего окончания недели!
PS:
- Возможные баги в браузере не являются аномалией. Песня о другом.
- Надеюсь Сашка не засудит меня как мистера Дурова.
- Вероятно не на все тонкости смогу ответить. Потому инвайты можно слать заслуженным разработчикам:
- Чинин Денис (chininden[at]gmail.com) — девелопер,
- Полецкий Артём (artempoletsky[at]gmail.com) — девелопер,
- Попович Илья (Loshadushka[at]gmail.com) — тестер-языковед-переводчик,
- Шамгунов Ильдар (il.shamgunov[at]gmail.com) — режиссёр и оператор,
- Логинов Павел (PLoginoff) — критик и главный редактор.
Автор: ZmeeeD