Это старая версия документа!
Содержание
TVIP JavaScript API #3
Версия API #3
Доступна на прошивках linux-qt от 4.0.11.
Некоторые новые методы также доступны в режиме API #2 в прошивках от 3.9.x.
Медиаценты TVIP отображают Web-контент с использованием движка WebKit.
JavaScript API в медиацентрах TVIP базируется на следующих основных объектах:
- window.TvipStb - содержит базовые методы для взаимодействия с аппаратной частью;
- window.TvipPlayer - содержит методы для управления медиаплеером;
- window.TvipRecorder - содержит методы для управления записью эфира;
- window.TvipEvent - содержит callback-методы;
Объекты не требуют явного создания или какой-либо инициализации и доступны из любой Web-странцы, открытой в STB-браузере.
С кодами клавиш пульта вы можете ознакомиться тут.
Основные изменения:
- Поддержка работы с менеджером монтирования (добавление SMB и NFS шар).
- Режим сна теперь управляется через JS API в режиме портала «для всей системы».
- Возможность переназначения всех системных команд пульта в режиме портала «для всей системы».
- Поддержка событий HDMI-CEC.
- Поддержка событий перехода Веб-приложения в фоновый режим.
Описание методов объектов JS API
TvipStb
bool addMountPoint(int id, bool temp, int type, String name, Object options);
Добавляет или заменяет точку монтирования с указанным id идентификатором. Если temp равно false, точка монтирования будет сохранена после перезагрузки устройства, если true - точка будет удалена при перезагрузке или перезапуске приложения. Возможные типы точек монтирования (type): 1 - SMB, 2 - NFS. Имя точки в системе монтирования (например, в сплывающих сообщениях): name. Параметр options задает специфические опции в виде обьекта:
SMB:
{
"address": <address>,
"folder": <folder>,
"username": <username>,
"password": <password>
}
Здесь, <address> - IP-адрес, доменное или NetBIOS-имя сервера, <folder> - имя расшаренного ресурса на сервере, <username> и <password> - опциональные данные для авторизации на сервере.
NFS:
{
"address": <address>,
"folder": <folder>
}
Здесь, <address> - IP-адрес или доменное имя сервера, <folder> - полный путь к расшаренному каталогу на сервере.
void enableCas(String name, Object options)
Включить поддержку CAS/DRM для медиа потоков, запускаемых в данном портале. Типа CAS/DRM задается параметром name. Например, «tvip» «viewright_web», «viewright_iptv», «ares». Опции задаются как key-value в объекте options.
void enableSpatialNavigation(bool enable)
Включить или выключить навигацию по отдельным элементам (кнопкам, ссылкам) веб-страницы.
int getApiVersion();
Возвращает номер версии API.
String getCurrentLanguageCode();
Возвращает идентификатор текущего активного языка интерфейса ('en', 'ru').
String getCurrentTimezone();
Возвращает текущий часовой пояс (например, Europe/Moscow).
String getDeviceId();
Возвращает идентификатор модели устройства. Например, s410.
String getDisplayMode();
Возвращает текущий режим дисплея («1080i», «1080p», «720p», «576i», и т.д.).
List getDirectoryDirs(String directory);
Возвращает список имен каталогов в системном каталоге directory.
[ "Dir1", "Dir2", "Dir3" ]
List getDirectoryFiles(String directory);
Возвращает список объектов с данными о файлах (без каталогов) в системном каталоге directory.
[
{
"name": "file1",
"size": 1234567
},
{
"name" : "file2",
"size" : 44444
}
]
name - имя файла в каталоге, size - размер файла в байтах.
String getEnvValue(String name);
Получить переменную из постоянного хранилища браузера. Если name не найден, вернется пустая строка.
String getMainMacAddress();
Возвращает строку, содержащую основной MAC-адрес приставки. Обычно это MAC-адрес Ethernet.
List getSmbWorkgroups();
Производит поиск рабочих групп в сети и возвращает их список. Например:
['WORKGOUP', 'MYGROUP']
List getSmbServers(String group);
Производит поиск серверов в указанной параметром group рабочей группе и возвращает список NetBIOS имен серверов. Например:
['MYPC', 'USER2']
List getSmbServerShares(String server);
Производит поиск доступных сетевых ресурсов на сервере по NetBIOS-адресу или IP-адресу, указанному параметром server и возвращает список имен ресурсов. Например:
['shared folder', 'Загрузки']
bool getStandBy();
Возвращает true, если устройство было переведено в режим сна командой setStandBy. Иначе возвращает false. Только для режима «Для всей системы».
List getStorageValues();
Возвращает список объектов смонтированных накопителей (локальных и сетевых).
[
{
"label": <label>,
"path" : <ospath>,
"fstype" : <file_system>,
"writable": <writable>,
"status": <status>,
"size": <size>,
"free" <free>
},
]
Поля объекта: label - имя (метка) смонтированного ресурса для отображения пользователю; path - каталог, в который смонтирован ресурс; fstype - тип файловой системы (варианты: vfat, ntfs, ext2, ext3, nfs, cifs; writable - разрешена ли запись в файловую систему («1» - да, «0» - нет); status - статус точки монтирования («0» - требуется монтирование, «1» - в процессе монтирования, «2» - смонтировано успешно, «3» - ошибка монтирования, «4» - в процессе размонтирования, «5» - размонтировано, «6» - ошибка размонтирования), size - размер файловой системы, free - доступное место.
String getUdpProxyAddress();
Возвращает адрес UDP proxy сервера, указанный в настройках.
String getSecurityCode();
Возвращает код родительского контроля, установленный в настройках. Если режим Безопасности выключен, то всегда возвращается пустое значение.
bool hasDirectory(String osPath);
Возвращает true, если в системной файловой системе существует каталог с именем osPath, иначе false.
bool hasFile(String osPath);
Возвращает true, если в системной файловой системе существует файл (не каталог) с именем osPath, иначе false.
void removeFile(String path);
Удаляет файл по пути path в пределах разрешенных директорий.
void launchPreferences();
Запустить системные настройки Tvip.
launchBrowser(String url, String backUrl);
Запустить Веб-браузер и открыть страницу по адресу url. Перейти по адресу backUrl в случае выхода из браузера обратно в портал.
void logDebug(String message);
Выводит отладочное сообщение в системную консоль (Linux) или logcat (Android).
void rebootSystem();
Полностью перезагрузить систему.
void removeMountPoint(int id);
Удалить точку монтирования из менеджера точек монтирования. id - уникальный идентификатор точки монтирования.
void setColorKey(int color);
Установка цвета UI, который будет считаться прозрачным. color - цвет в формате RGB.
void setCustomHeader(String header, String value);
Устанавливает HTTP-заголовок для будущих HTTP-запросов браузера. header - имя заголовка, value - значение заголовка. Если value пустая строка, то удаляется ранее установленный заголовок.
void setEnvValue(String name, String value);
Сохранить переменную в постоянном хранилище браузера. Все переменные доступны всем страницам браузера.
void setDirectoryListFilters(String filters);
Задать фильтры имен файлов для getDirectoryFiles и getDirectoryDirs. Фильтры разделяются символом |. Можно использовать символы ? и *****. Например: *.avi|*.mp3
void setPassKeyKeyboard(bool enabled);
Если enabled=true, событие нажатия кнопки «Включение клавиатуры» на пульте (Cursor key) будет передаваться в JavaScript, вместо стандартного обработчика отображения виртуальной клавиатуры.
void setPassKeyMenu(bool enabled);
Если enabled=true, событие нажатия кнопки «Menu» на пульте будет передаваться в JavaScript, вместо вызова стандартного меню Tvip.
void setPassKeySysInfo(bool enabled);
Если enabled=true, событие нажатия кнопки «S.INFO» на пульте будет передаваться в JavaScript, вместо вызова стандартной системной информации Tvip.
void setPassKeySettings(bool enabled);
Если enabled=true, событие нажатия кнопки «Настройки» на пульте будет передаваться в JavaScript, вместо вызова стандартных настроек Tvip.
void setStandBy(bool enabled);
Переводит приставку в режим сна (enabled=true) или возвращает из режима сна (enabled=false). Только для режима «Для всей системы».
void setWebProxy(String proxy, Array exclude)
Устанавливает адрес Web-прокси сервера для использования с данным порталом. Все последующие запросы портала будут идти через прокси. Параметры: proxy - адрес прокси сервера, exclude - массив с серверами, которые не должны идти через прокси (либо IP-подсеть, либо домен).
void showVirtualKeyboard(bool show);
Отобразить (show=true) или скрыть (show=false) виртуальную клавиатуру.
void reset();
Сбросить настройки: прозрачного цвета; HTTP-заголовков; фильтра файлов.
TvipPlayer
void reset();
Сбросить воспроизведение. При переходе между страницами, если не требуется продолжение проигрывания, нужно вызывать этот метод.
void playUrl (String url, String mode);
Начать проигрывание видео по заданному URL или непосредственному пути в файловой системе.
Параметр mode может принимать значения:
vod - данный URL содержит VOD-файл (с конечной длиной);
live - данный URL содержит live ТВ-поток (можно использовать DVR и MPEGTS шифрование), либо адаптивный HLS;
live_ts - тоже, что live, но при постановке на паузу включается локальный Timeshift.
Примеры:
playUrl ("udp://239.1.1.1", "live"); // начать проигрывание multicast-потока;
playUrl ("http://domain.tv/movies/movie.mkv", ""); // начать проигрывание видео-файла по http;
playUrl ("http://domain.tv/hls/playlist.m3u8", "live"); // начать проигрывание HLS-видео;
void setVideoWindow(int x, int y, int w, int h, boolean onTop);
Устанавливает размер окна видео. Координаты устанавливаются относительно текущего режима видео выхода.
Если w = 0 и h = 0, используется полноэкранный режим.
Если onTop = true, видео окно рисуется поверх UI.
void stop();
Остановить воспроизведение, если оно было запущено.
void pause();
Поставить воспроизведение на паузу.
void unpause();
Продолжить воспроизведение, если оно было поставлено на паузу.
void seek(int position);
Установить позицию воспроизведения на position в миллисекундах. Необходимо учитывать, что начало воспроизведения - это minPosition - см. ниже.
void attachExternelSubtitle(String url, String encoding)
Добавить к текущему проигрываемому файлу субтитры из внешнего файла по адресу url. Команда вызывается после playUrl. Опциональный параметр encoding устанавливает кодировку текста файла субтитров.
String getCurrentUrl();
Возвращает URL текущего или последнего проигранного потока.
String getCurrentUrlMode();
Возвращает режим (второй параметр playUrl) текущего или последнего проигранного потока.
int getCurrentPositionMsec();
Возвращает текущую позицию воспроизведения.
int getMinPositionMsec();
Возвращает минимальную позицию воспроизведения (т.е. начало контента).
int getMaxPositionMsec();
Возвращает максимальную позицию воспроизведения (т.е. конца контента).
void setVolume();
Устанавливает громкость звука в интервале от 0 до 100. Только для режима «Для всей системы».
int getVolume();
Возвращает текущую громкость звука в интервале от 0 до 100. Только для режима «Для всей системы».
void setMute(bool mute);
Отключает (mute=true) или включает (mute=false) звук. Только для режима «Для всей системы».
bool getMute();
Возвращает true, если звук выключен, иначе false. Только для режима «Для всей системы».
String getContainerType();
Возвращает тип контейнера последнего проигрываемого контента (например, mpegts, avi, matroska).
int getStreamsCount();
Возвращает количество медиапотоков в последнем проигрываемом контенте (аудио, видео, субтитров, итд).
Object getStreamInfo(int index);
Возвращает объект с информацией о медиапотоке с номером index.
{
"type": <videotype>,
"id": <id>,
"codec": <codec>,
"lang" : <lang>
}
Здесь: videotype - тип медиапотока:«v» - видео, «a» - аудио, «s» - субтитры; id - внутренний идентификатор (PID); codec - название кодека потока; lang - для аудиопотоков 3 буквенный код языка.
int getCurrentVideoStreamIndex();
Возвращает номер потока с видео-дорожкой, проигрываемой в данный момент.
int getCurrentAudioStreamIndex();
Возвращает номер потока с аудио дорожкой, проигрываемой в данный момент.
int getCurrentSubtitleStreamIndex();
Возвращает номер потока с дорожкой субтитров, проигрываемой в данный момент.
void setCurrentAudioStreamIndex(int index);
Устанавливает номер активной аудио дорожки (index).
void setCurrentSubtitleStreamIndex(int index);
Устанавливает номер активной дорожки субтитров (index).
void setAspectRatio (String ratio)
Устанавливает режим aspect ratio. На данный момент поддерживаются значения: «box» - Оригинал, «full» - На весь экран, «zoom» - Увеличенный.
TvipRecorder
String addRecord(String name, String url, String path, String start, String end);
Добавляет новое задание на запись эфира.
Здесь: name - произвольное имя записи, url - URL потока (поддерживаются потоки в формате MPEGTS через UDP, RTP и HTTP, path - локальный путь для записи, start и end - время начала и окончания записи в UNIX TIMESTAMP либо в формате «YYYYMMDDTHHmmss».
Возвращает уникальный идентификатор созданного задания.
bool cancelRecord(String id, bool removeFile);
Удаляет задание на запись с уникальным идентификатором id. Если removeFile=true, удаляется также записанный на диск поток. Возвращает true в случае успешного удаления.
void updateStartEndTime(String id, String start, String end);
Меняет время начала и/или окончания записи с уникальным идентификатором id. Если требуется поменять только одно из значений, то второе - пустая строка. Формат start и end см. в описании addRecord.
List getRecordIds();
Возвращает список уникальных идентификаторов заданий, которые добавлены в настоящий момент.
Object getRecord(id);
Возвращает объект с параметрами записи с уникальным идентификатором id.
{
"id": <id>,
"name": <name>,
"startTime": <start>,
"endTime" : <end>,
"url" : <url>,
"status" : <status>
}
Здесь: <id>, <name>, <start>, <end> - соответствуют параметром метода addRecord; <status> - статус записи: «waiting» - ожидает запись, «recording» - запись в процессе, «finished» - запись завершена, «error» - произошла ошибка.
TvipEvent
TvipEvent содержит Callback функции, которые можно переназначить для получения событий.
onPlayerStateChange(int oldState, int newState);
Вызывается при изменении статуса воспроизведения медиаплеера. oldState - предыдущий статус плеера, newState - новый статус плеера.
Возможные значения статусов плеера:
- 1 - начало подключения к новому URL;
- 2 - получение метаданных;
- 3 - метаданные получены;
- 4 - подготовка декодеров;
- 5 - воспроизведение;
- 6 - достигнут конец контента;
- 7 - остановка воспроизведения;
- 8 - воспроизведение остановлено;
- 9 - воспроизведение поставлено на паузу;
- 10 - происходит seek на новую позицию;
- 11 - произошла ошибка;
onSystemEvent(String codename, Object args);
Вызывается при возникновении системных событий.
Варианты codename:
- «mounted» - подключено внешнее устройство хранения данных (args[«label»] - метка устройства).
- «unmounted» - отключено внешнее устройство хранения данных (args[«label»] - метка устройства).
- «onpause» - окно веб-приложения переведено в фоновый режим (например, открыт экран Home или Настройки).
- «onresume» - окно веб-приложения снова активно (вызывается при возврате в приложение).
- «cec_sleep» - подключенный по HDMI телевизор был выключен.
- «cec_wake» - подключенный по HDMI телевизор был включен.
