- Android sdk smart tv
- About
- Введение в разработку приложений для Android TV
- Создание проекта в Android Studio
- Создание Activity
- Объявление Activity в файле манифеста приложения
- Создание фрагмента
- Запуск приложения
- Настройка стиля приложения
- Заполнение BrowseFragment
- Класс Presenter
- Заполнение HeadersFragment и RowsFragment
Android sdk smart tv
Awesome Smart TV
A curated list of awesome resources for building Smart TV apps
Smart TV is a growing platform of TVs having access to the internet and allowing to browse web-sites and install applications. It has own ecosystem with main players like Samsung, LG, Android TV and Apple TV. In this list you will find official and third-party resources for developing Smart TV apps and communicating with TV from remote devices.
Below are the most popular platforms for Smart TV. The full list is here.
- Samsung TV Developers site — News, documentation and SDK downloads.
- Tizen TV Developers site — Full API documentation and guides for developing Tizen TV apps.
- Tizen Studio — IDE for TV apps development including Tizen TV Emulator.
- Smart View SDK — Official Android, IOS and JavaScript SDK for communication between remote device and Samsung Smart TV.
- Samsung TV Developers Forum — Ask questions and share tips when developing apps with Samsung SDKs.
- Samsung Smart TV Bug Bounty — If you find bug in Samsung TV, submit it here and get a reward $1000+.
- vscode-extension-tizentv — A Visual Studio Code extension that provides a lightweight IDE for Tizen application developers.
- Wits — A tool for reloading tv app’s JavaScript/CSS without reinstalling the app every time you make a change.
Third-party remote control libraries
- samsungctl — Library and command line tool for remote controlling Samsung televisions via a TCP/IP connection. It currently supports both pre-2016 TVs as well most of the modern Tizen-OS TVs with Ethernet or Wi-Fi connectivity (Python).
- samsung-tv-remote — Node.js module to remotely control Samsung Smart TV starting from 2016 (JavaScript).
- homebridge-samsungtv2016 — A plugin for Homebridge that allows you to control your 2016 Samsung TV with HomeKit and Siri (JavaScript).
- homebridge-samsung-tizen — A plugin for Homebridge that allows you to control your Samsung Tizen TV with HomeKit and Siri (JavaScript).
- samsung-remote-models-2014-and-newer — Encrypted communication with the internal web service of Samsung TV models 2014+.
- SmartCrypto — SmartView2 encrypted handshake API implementation in C/Python.
- samsung-messagebox — Python script to show notifications on Samsung TVs.
- samsung-tv-control — Library for remote control Samsung TV in your Node.js
- Identification of Samsung TV models 2008-2017 — How to get screen size, matrix type, year of development, series and other parameters from Samsung TV model name.
- Tizen Studio development references — Documents focused on web apps for Smart TVs e Professional Monitors, based in personal researches.
- webOS TV Developers Site — WebOS TV apps development principles, tutorials, API documentation and packaging tools.
- webOS TV IDE + SDK — IDE for apps development including a Command Line Interface and emulator.
- Connect SDK — Open source framework developed by LG that connects your mobile apps with multiple media device platforms. Currently supports 8 platforms. But seems abandoned.
- webOS TV Developers Forum — Ask questions, share information and learn about Smart TV app development with other developers.
Third-party remote control libraries
- lgtv2 — Node.js module for remote control of LG webOS TV via WebSocket messages (JavaScript).
- node-red-contrib-lgtv — Module for Node-RED allowing remote control of LG webOS Smart TVs (JavaScript).
- node-webos — Node.js module to discover and control webOS TVs (JavaScript).
- lgtv2mqtt — Interface between LG WebOS Smart TVs and MQTT (JavaScript).
- ares-webos-sdk — webOS CLI as separate NPM module (JavaScript).
- pylgtv — Library to control webOS based LG Tv devices (Python).
- LGWebOSRemote — Command line tool for webOS remote control of LG TVs (Python).
- homebridge-webos-tv — A plugin for Homebridge which allows you to control your webOS TV.
- PyWebOSTV — A generic & entensible WebOS 3.0 Client Library (Python2, Python3).
- go-webos — A small Go library for interaction with webOS TVs (golang).
- LG Magic Motion Remote — Point, Click, and Control — Operate TV like a computer mouse.
- openlgtv.org.ru — A non-commercial project for legal reverse engineering and research on LG Television firmware. Seems a bit outdated but contains a lot of information.
- Identification of LG TV models 2011-2017 — How to get screen size, matrix type, year of development, series and ohter parameters from LG TV model name.
- Android TV Developers site — Documentation, tutorials and best practises for building Android TV apps.
- How to develop Android TV App? — An article about developing apps for Android TV.
- tvOS Developers Site — SDK, documentation and tutorials for developing tvOS apps.
- TVML — Apple TV Markup Language for creating tvOS apps.
- Google Cast SDK — Official Google Cast SDK documentation and tutorials.
- TVs with Chromecast built-in — List of vendors supporting built-in Chromecast and advantages over traditional TV remote controller.
- react-tv — React development for TV: renderer for low memory applications and Packager for WebOS, Tizen, Orsay.
- TOAST — Samsung open-source framework for multi-platform TV apps developemnt.
- Enyo — LG framework for development apps for all major platforms, from phones and tablets to PCs and TVs.
- Smartbox — Smart TV universal library for Samsung, LG, Philips, SmartTV Aliance, STB Mag app development.
- Mautilus Smart TV SDK — A platform-agnostic framework for developing TV Apps. Supports Samsung, LG, Philips, Sony, Panasonic and VESTEL Smart TVs.
- BBC TAL — An open source library for building applications for Smart TV developed by BBC engineers.
- PureQML TV — A declarative front-end framework for web-based SmartTV/STB platforms. Has experimental support of Android TV.
- ZombieBox — An open source Smart TV framework. Strongly typed JavaScript, component based, built-in D-PAD navigation management, abstract video API with DRM for all platforms. Supports many platforms like Tizen, webOS, Android TV, etc.
Remote control protocols
- DLNA — Industry-wide standard for sharing data over a home network. Depending on the DLNA-compatible devices you own, you might be able to stream films from your laptop to your TV, play an MP3 stored on your phone over your hi-fi system, or print a photo from your tablet on your home printer.
- DIAL — Developed by Netflix and Google, this protocol alows client devices (like smartphone, tablet, or computer) to discover apps on server devices (like a smart TV or streaming box) and launch content on them.
- Wi-Fi Direct — Standard enabling devices to easily connect with each other without requiring a wireless access point.
- Miracast — Standard for wireless connections from devices (such as laptops, tablets, or smartphones) to displays (such as TVs, monitors or projectors). Works over Wi-Fi Direct.
- lrud — Left, Right, Up, Down. A spatial navigation library for devices with input via directional controls.
- js-spatial-navigation — A javascript-based implementation of Spatial Navigation.
- react-js-spatial-navigation — A wrapper of js-spatial-navigation to react components.
- react-key-navigation — Spatial Navigation components for React. Similar to the «Focus Management» of the BBC TAL.
- react-spatial-navigation — HOC-based Spatial Navigation (key navigation) solution for React.
- Suitest — Test automation solution for Smart TVs, gaming consoles, streaming sticks etc.
- stb-tester — Automated User Interface Testing for Set-Top Boxes & Smart TVs (python).
- LIRC — A package that allows you to decode and send infra-red signals of many (but not all) commonly used remote controls.
- awesome-smarttv — Another list of Smart TV resources. Discovered after this one was already done 🙄 .
- docker-tizen-webos-sdk — Docker image with Samsung Tizen CLI and LG webOS CLI. Allows to develop, build, launch and debug Smart TV apps without installing Tizen Studio and webOS SDK.
Feel free to share your experience and contribute useful extension resources by creating new issue or pull request. Please read the contribution guidelines first. Thanks!
About
⚡ A curated list of awesome resources for building Smart TV apps
Источник
Введение в разработку приложений для Android TV
Данная статься познакомит вас с разработкой простого приложения для Android TV. В первую очередь она ориентированна на тех, кто уже имел какой-либо опыт в разработке приложений для Android, поэтому я не буду здесь объяснять что такое Activity, Fragments и т.д.
В интернете есть много русскоязычной информации по разработке приложений для Android и не мало статей по написанию HelloWord для него же. Заинтересовавшись разработкой приложений для Android TV, я сразу же начал изучать эту тему на англоязычных сайтах. К моему удивлению материала оказалось не так уж и много, и я решил посмотреть что же есть на русском. На русском ничего найти не удалось (возможно плохо искал). В общем я намерен исправить эту ситуацию.
Так как интерфейс приложений для телефонов и Android TV имеет существенные различия, то мы должны создать интерфейс приложения, подходящий для взаимодействия на TV. Например, нам следует создавать приложения с которыми можно взаимодействовать, используя только клавиши — ↑ ↓ → ←. В реализации такого интерфейса нам может помочь библиотека LeanbackSupport, позволяющая вполне легко создавать UI, который будет удобен при работе с приложениями на Android TV.
Создание проекта в Android Studio
Запустив Android Studio, необходимо создать новый проект. При создании выбрать платформу TV и указать минимальную версию SDK. Android Studio предложит нам создать «Android TV Activity», однако на данный момент следует выбрать «Add No Activity», т.к. если вы выберите создание Activity, то AS создаст много классов и файлов, в которых изначально сложнее разобраться.
Создание Activity
Для начала необходимо создать новый XML файл под именем activity_main.xml, который будет содержать разметку для нашей Activity. Код разметки мы изменим позже.
Теперь следует создать класс унаследованный от Activity. Для этого нужно создать новый класс с именем MainActivity и унаследовать его от класса Activty. Предопределить метод onCreate(Bundle SIS) и установить в нем содержимое для Activity из созданного файла разметки.
Объявление Activity в файле манифеста приложения
Если вы попытаетесь запустить приложение на данном этапе, то оно естественно не запустится, так как в файле AndroidManifest.xml у нас не объявлено ни одной Activity.
В файл манифеста нужно добавить следующий код.
Теперь разберем некоторые моменты. Часть кода приведенная ниже отключает тач.
В этой части вы указываете, что приложение должно запускаться только на Android TV. Если вы разрабатываете приложение не только для TV, то вам следует установить значение false.
При объявлении Activity мы указываем в intent-filter, что Activity должна запускаться на Android TV.
Создание фрагмента
Сейчас нужно создать класс Java с именем MainFragment и унаследовать от класса BrowseFragment из библиотеки LeanbackSupport. BrowseFragment позволяет создавать стандартный интерфейс приложений для Android TV.
Теперь мы можем привязать созданный фрагмент к нашей Activity, для этого в файл разметки Activity (в моем случае это activity_main.xml) следует поместить следующий код разметки.
Запуск приложения
Чтобы запустить приложение, нужно создать эмулятор Android TV. Его можно создать в Android Virtual Device Manager.
После создания эмулятора можно запустить на нем наше приложение. На данный момент оно имеет следующий вид.
Здесь вы видите пустой BrowseFragment. Вы можете увидеть RowsFragment в левой части приложения (фрагмент отвечает за отображение списка заголовков) и HeaderFragment в правой части экрана (отвечает за отображение контента заголовков).
Далее мы заполним HeaderFragment, RowsFragment и рассмотрим их подробнее. Перед этим установим основные цвета UI и заголовок для приложения.
Настройка стиля приложения
Здесь я добавил метод setupUI() в MainFragment.java и вызвал его в предопределенном методе onActivityCreated.
Если вы запустите приложение на данном этапе, то вы должны увидеть вот такой UI.
Заполнение BrowseFragment
Давайте сначала разберемся на примере готового приложения Android TV содержание BrowseFragment. Каждый заголовок в левой части фрагмента (HeaderItem) имеет ряд с контентом в правой части. Комбинацию «заголовок (HeaderItem) + контент в правой части приложения», содержит класс ListRow. Содержание BrowseFragment представляет собой список из ListRow. Заголовок и список с контентом в правой части имеет отношение один к одному.
Рассмотрим ListRow детальнее. За список с контентом отвечает ArrayObjectAdapter. В данном случае CardInfo это элемент контента. CardInfo может быть любым объектом. Как создать и отобразить CardInfo мы рассмотри позже.
Сейчас мы можем сделать следующие выводы:
ArrayObjectAdapter — отвечает за список из ListRow
ListRow = HeaderItem (заголовок) + ArrayObjectAdapter (список контента в правой части)
Класс Presenter
Заполнение элементов контента определяется при помощи класса Presenter из библотеки LeanbackSupport. Он определяет отображение элемента контента. Presenter является абстрактным классом, поэтому мы должны создать новый класс и унаследовать его от Presenter. Когда вы создадите новый класс, вы должны предопределить как минимум 3 метода:
Presenter содержит внутренний класс ViewHolder, который позволяет ссылаться к View (элемент контента). Мы можем получить доступ к View через ViewHolder при конкретных событиях, например в методах класса Presenter onBind() или onUnbind()
Заполнение HeadersFragment и RowsFragment
Давайте перейдем к делу. Здесь мы создаем класс GridItemPresenter унаследованный от класса Presenter. В этом приложении Object (элемент контента) отображает строку, а ViewHolder содержит в себе TextView для отображения этой строки. View создается в методе onCreateViewHolder(), а ее заполнение производится в методе onBindViewHolder().
В класс MainFragment добавляем метод loadRows() и вызываем его в предопределенном методе onActivityCreated()
Теперь вы можете запустить приложение и увидеть экран представленный ниже.
На этом пока что все. В этой статье я попытался объяснить некоторые из основных принципов создания приложения для Android TV.
За основу данной статьи были взяты этот и этот мануалы.
Источник