Интеграция адаптированных сервисов

Middleware Stalker позволяет без особого труда интегрировать в себя сервисы, адаптированные для работы на STB.

Интеграция заключается в создании отдельного модуля, добавления иконок для главного меню и добавления имени созданного модуля в список инициализируемых при старте. При этом сам сервис может находиться или в составе middleware, или на удаленном http сервере.

Требования для адаптируемых сервисов

поддержка минимум трех разрешений: 720х480 (NTSC), 720х576 (PAL), 1280х720 (720p)

корректная обработка выхода из сервиса (использование GET параметра referrer для возврата)

оптимизация интерфейса под управление пультом ДУ

Обработка выхода из сервиса

Одним из требований является возможность покинуть сервис и вернуться обратно в Stalker. URL для возврата находится в GET параметре referrer в urlencoded виде, т.е. его необходимо предварительно декодировать.

Получение GET параметров в JavaScript:

var $_GET = {}; function decode(s) { return decodeURIComponent(s.split("+").join(" ")); } document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () { $_GET[decode(arguments[1])] = decode(arguments[2]); });

Код для возврата в Stalker:

window.location = decodeURIComponent($_GET['referrer']);

Пример интеграции

Рассмотрим пример интеграции абстрактного сервиса example.tv. Допустим сам сервис доступен по url http://tv.example.com/index.html

Создание модуля

Создаем файл exampletv.js в папке /c/ с содержанием:

(function(){ // Первый аргумент - подпись под иконкой в главном меню // Третий аргумент - имя файла иконки main_menu.add('EXAMPLE.TV', [], 'mm_ico_exampletv.png', function(){ var params = ''; if (stb.user['web_proxy_host']){ params = '?proxy=http://'+stb.user['web_proxy_host']+':' +stb.user['web_proxy_port']; } stb.setFrontPanel('.'); if (!params){ params += '?'; }else{ params += '&'; } params += 'referrer='+encodeURIComponent(window.location); //window.location = '/' + stb.portal_path + '/external/olltv/index.html'+params; window.location = 'http://tv.example.com/index.html'+params; }, {layer_name : "exampletv"}); // Для корректной работы модуля необходимо указать уникальный layer_name loader.next(); })();

Добавление иконок в главное меню

Необходимо создать три файла иконок с именем mm_ico_exampletv.png, соответствующие трем используемым разрешениям.

Размеры иконок:

200x100px - NTSC

200x120px - PAL

360x160px - 720p

И поместить каждый файл в папку соответствующую разрешению:

NTSC - каталог /c/i_480/

PAL - каталог /c/i/

720p - каталог /c/i_720/

Для совместимости с механизмом загрузки модуля создаем еще три пустых css файла в /c/.

exampletv.css

exampletv_480.css

exampletv_720.css

Добавление модуля в список инициализируемых

В конфиг файле (custom.ini) в параметр all_modules добавляем имя нашего модуля на то место, где бы мы хотели его видеть, например, сразу после видеоклуба

all_modules[] = vclub all_modules[] = exampletv ;наш модуль all_modules[] = ex

После выполнение всех пунктов при следующей загрузки Stalker-а на приставке в главном меню должна появиться иконка добавленного сервиса.