Удивившись практически полному отсутствию информации по данной теме, решил написать этот пост.В двух словах jointSPACE — это OpenSource платформа, созданная для разработки пользовательских приложений для телевизоров Philips. Она являет собой открытый API для разработки приложений двух типов:
- Приложения, запускаемые на удаленной системе, рендеринг и управление которыми производится средствами интерфейса телевизора.
- Приложения для управления телевизором с удаленных систем
Существует SDK под Linux, iOS, MacOS, Android и Windows (как cygwin, так и родной под Visual Studio). Разработчиками и сообществом написано множество примеров для разных платформ. Особенно хочу отметить запуск игры Doom на телевизоре с управлением с пульта.

На телевизоре должна быть установлена последняя прошивка и включена функция jointSPACE.
Пока что, поддерживаются ТВ следующих моделей:
— 2k10 (xxPFLxxx5)
— 2k9 (xxPFLxxx4)
(полный список поддерживаемых моделей).
Включается быстрым набором с пульта комбинации «5646877223».
Пример использования
Что касается меня, появление технологии стало отличной новостью — я смог реализовать давнишнюю мечту: переводить телевизор и ПК в режим просмотра кино одним кликом.
Телевизор у меня подключен к компьютеру с Windows 7 посредством HDMI-кабеля, звук выводится по нему же. Чтобы начать просмотр фильма, приходилось: нажимать WinKey+P, выбирать вывод на телевизор, на телевизоре нажимать кнопку выбора источника, стрелками выбирать нужный HDMI-порт, жать OK.
Я решил написать небольшую программку на SDK под cygwin, позволяющую проделывать эти действия в один клик. Так как API не умеет вызывать нужную мне функцию, пришлось эмулировать нажатия клавиш.
#include <jslibrc_client.h> #include <windows.h> int $i; int main (int argc, char *argv[]) { jslibrc_Init( &argc, &argv ); // Жмем кнопку Source на пульте jslibrc_KeyDown(keySourceRc6, 0, 56); jslibrc_KeyUp(keySourceRc6, 0, 56); //Ждем 2 секунды чтобы телек "подумал" sleep(2); // N раз жмем кнопку "вверх", чтобы поднять курсор гарантированно вверх for($i=0; $i <= 20; $i++) { jslibrc_KeyDown(keySourceRc6, 0, 88); jslibrc_KeyUp(keySourceRc6, 0, 88); } // Два раза жмем вниз, чтобы выбрать HDMI 2 jslibrc_KeyDown(keySourceRc6, 0, 89); jslibrc_KeyUp(keySourceRc6, 0, 89); sleep(1); jslibrc_KeyDown(keySourceRc6, 0, 89); jslibrc_KeyUp(keySourceRc6, 0, 89); sleep(1); // Жмем ОК jslibrc_KeyDown(keySourceRc6, 0, 92); jslibrc_KeyUp(keySourceRc6, 0, 92); // Меняем дисплей, запуская виндовую программу (которая вызывается по WinKey+P) //WinExec("c:\\windows\\system32\\displayswitch.exe /internal",SW_SHOW); jslibrc_Exit(); return 1; }
Вот так, в несколько строчек, реализовалась моя мечта. Я не считаю себя программистом, поэтому код достаточно крив и не доделан, но суть, думаю, ясна.
Перспективы
Технология открывает большой простор для фантазии разработчиков. На экран ТВ можно выводить какую угодно интерактивную информацию и взаимодействовать с пользователем. Кто-то захочет следить за твиттером во время просмотра телепередач, а кому-то захочется видеть статус работы микроволновки или чайника. Поддерживается управление сразу множеством телевизоров в подсети.
Для тех, кому интересно:
— Сайт проекта (на SourceForge.net)
— Наиболее наглядное описание процесса разработки
— jointSPACE SDK tutorial for Cygwin (установка и настройка SDK + основы)
— jointSPACE API Reference Manual (полное описание API)
