MyTV
EN

Медленный ТВ снова быстрый, а правила дома задают родители

MyTV — открытый лаунчер для Android TV. Он отключает службы, которыми вы не пользуетесь, а его санитар сам освобождает память, поэтому ТВ не тормозит. Для семьи добавлены детское расписание с PIN-кодом, управление с телефона и таймер сна. Аккаунт не нужен.

Скачать и установить Открыть код Бесплатно. Лицензия MIT.

Почему ТВ становится быстрее

Медленный ТВ редко тормозит только из-за процессора. На нашем TCL память была почти всегда занята: файл подкачки в 600 МБ был забит, а при пяти тяжёлых приложениях системный очиститель памяти съедал 95% ядра. MyTV бьёт именно в это.

  1. Ненужные службы отключены

    Инструменты установки отключают телеметрию производителя, рекламные службы, ленты контента и предустановленные приложения командой pm disable-user. Ничего не удаляется, одна команда возвращает всё обратно. В репозитории есть списки больше чем для 250 моделей ТВ; на нашем TCL это 15 пакетов.

    Процент ускорения от этого шага на нашем ТВ мы не измеряли, поэтому цифру не даём.
  2. Лаунчер, который в простое почти ничего не делает

    Он рисует только тогда, когда что-то меняется. В нашем замере на одном ТВ TCL (версия 2.7) он занимал 42 МБ и в простое использовал от 0 до 0,6% ядра. Два других лаунчера, которые мы пробовали, занимали 64 и 140 МБ и использовали около 13% и от 30 до 58% ядра.

    Один ТВ, несколько прогонов. Текущую версию замерим заново.
  3. Санитар, который сам наводит порядок

    Он ничего не опрашивает по таймеру. Память проверяется, когда главный экран три минуты стоит без нажатий, когда гаснет экран и когда Android просит приложения вернуть память. Если подкачка почти исчерпана или мало оперативной памяти, он закрывает фоновые процессы приложений, но не то, что на экране, не играющее в фоне, не лаунчер и не ваше VPN-приложение, и не чаще раза в 20 минут. Если VPN отвалился, через четыре тихие минуты он снова открывает VPN-приложение.

    Ещё проверяем на одном ТВ. Одна настройка его отключает.

Что получает семья

Скорость — главная причина. Ниже семейные возможности поверх неё.

  1. Детский режим

    Расписание, когда можно смотреть ТВ, PIN-код (хранится как хеш с солью), журнал событий, таблица экранного времени за последние 30 дней и бонусные минуты, которые родитель выдаёт на самом ТВ по PIN-коду. Если служба-помощник выключена, журнал это покажет.

  2. Управление с телефона дома

    ТВ показывает код привязки. Родитель вводит его на телефоне и получает небольшую страницу, которую отдаёт сам ТВ на порту 8787, только внутри домашней сети. Заблокировать, разблокировать, показать сообщение поверх видео, выключить ТВ. У каждого телефона свой токен, его можно отозвать.

    Боты и ваши скрипты пользуются тем же описанным HTTP-API.
  3. Таймер сна поверх видео

    Кнопки «вверх» и «вниз» меняют минуты, видео при этом идёт: выкл, 15, 30, 60 или 90. За минуту до конца появляется предупреждение, любая клавиша пульта добавляет 15 минут, в конце ТВ уходит в режим ожидания. На пульте TCL таймер открывается двойным нажатием кнопки с шестерёнкой.

    Для режима ожидания нужен Android 9 или новее.
  4. «Смотреть далее» на первой странице

    Главный экран открывается полкой с фильмами и сериями, которые вы не досмотрели, а приложения на одно нажатие ниже. Разрешение читать телевизионные списки запрашивается только когда вы включаете полку.

  5. Выключение ТВ с телефона

    Выключить сразу или через заданное время, до 24 часов, и отменить отложенное. Действуют то же предупреждение и те же +15 минут.

  6. У заблокированного ТВ есть выход

    Если PIN-код забыт, файл-метка, отправленный по adb, снимает блокировку и стирает код, заданный на ТВ. Больше ничего блокировку не снимает.

Установка с компьютера

Без аккаунта и без root. Нужен компьютер в той же сети Wi-Fi, что и ТВ, и около десяти минут.

  1. 1. Включите отладку на ТВ

    Настройки, Параметры устройства, О системе: нажмите OK на пункте «Сборка» семь раз. Назад, затем «Для разработчиков»: включите «Отладка по USB». Если есть переключатель «Отладка по сети», включите и его. Запишите IP-адрес ТВ в Настройки, Сеть.

  2. 2. Подключитесь с компьютера

    Установите platform-tools от Google (в них есть adb) на Windows, macOS или Linux. В терминале, в папке со скачанным файлом:

    adb connect 192.168.1.50:5555

    Укажите адрес вашего ТВ. Когда ТВ спросит, разрешите подключение на экране.

  3. 3. Поставьте MyTV на ТВ

    Одна команда копирует приложение на ТВ:

    adb install -r MyTV.apk
    Если на ТВ уже стоит другая сборка с тем же идентификатором приложения (com.gathin.tvhome), сначала удалите её: Android не заменит приложение, подписанное другим ключом.
  4. 4. Сделайте его главным и отключите лишнее

    Пошаговый путь делает резервную копию, применяет список отключаемых служб для вашей модели ТВ, назначает MyTV главным экраном и откатывает всё, если главным экраном он не стал. Он описан в README в разделе «Doing it by hand» (по-английски).

    Открыть README. Установщик в один клик для Windows, macOS и Linux запланирован.

На экране

Скриншоты с настоящего ТВ TCL, интерфейс лаунчера на английском.

Главный экран лаунчера MyTV на английском: приветствие, часы и ряд приложений для стриминга.
Главный экран: приветствие, часы и док семейного ТВ.
Меню кнопки с шестерёнкой: Launcher settings, Native settings, Children's mode, Check and set up, Watch next, Sleep timer.
Меню кнопки с шестерёнкой: настройки лаунчера, детский режим, «Смотреть далее», таймер сна.
Настройки лаунчера со строкой Language и строкой Phone and cloud.
Настройки лаунчера: язык только для лаунчера и «Телефон и облако».
Диалог выбора языка: English, العربية, Asturianu, বাংলা, Català, Čeština, Dansk, Deutsch.
Список языков читается из файла languages.json в этом репозитории.
Экран Phone and cloud: что узнаёт сервер, переключатель Cloud control выключен.
«Телефон и облако»: что узнаёт сервер, переключатель выключен, пока родитель его не включит.
Экран Support the project с двумя QR-кодами: для всего мира и для России.
Поддержка проекта: два кода, которые читает телефон. Сам лаунчер ничего не отправляет.

Что проверено, а что нет

Лучше сказать прямо, чем дать вам узнать об этом вечером, когда ТВ смотрит вся семья.

Проверено на настоящем ТВ

  • Блокировка и разблокировка детского режима из скрипта, таблицы использования.
  • Таймер сна: предупреждение, +15 минут, режим ожидания, пробуждение с пульта.
  • Выключение из скрипта с задержкой и отменой.
  • Страница для телефона и привязка в домашней сети.
  • Блок погоды и полка «Смотреть далее».

Ещё проверяем на одном ТВ

  • Детское расписание на настоящем ТВ и кнопка выключения на странице телефона.
  • Голосовое выключение ТВ через HDMI-CEC.
  • Санитар: очистка фоновых приложений при нехватке памяти и перезапуск VPN-приложения, когда главный экран простаивает.
  • Список языков, который загружается из этого репозитория, и новые значения по умолчанию у скрипта установки.
  • Переводы, кроме английского, русского и иврита, пока показывают английский текст.

Что уходит с ТВ

Очень немного, и каждую строку кода, которая это делает, можно прочитать.

  1. Разрешение на сеть

    По умолчанию в интернет ходят две вещи. Необязательный блок погоды раз в 30 минут обращается к Open-Meteo, пока показан главный экран. Диалог выбора языка при открытии читает один небольшой список языков из репозитория проекта на GitHub и сохраняет его. Обычный http разрешён только для домашней сети: всё остальное отклоняется до соединения.

  2. Служба доступности

    Она видит, какое приложение вышло на передний план, а при заблокированном ТВ ещё и нажатия на пульте. Содержимое экрана, текст и пароли она не читает.

  3. PIN-код и телефоны

    PIN-код хранится как хеш с солью. Токены телефонов передаются в заголовке, а не в адресе, и ТВ хранит только их хеши. Данные детского режима остаются на ТВ и стираются на нём же.

  4. Облачное управление, только если вы включите

    Чтобы управлять ТВ с телефона не из дома, можно включить «Облачное управление» и привязать телеграм-бота кодом с экрана ТВ. ТВ только выходит в сеть сам: ничего не подключается к нему, порты не открываются. Сервер узнаёт название ТВ, какие приложения были на переднем плане и когда горел экран, последние события журнала и ваши сообщения, но не родительский код, не имя Wi-Fi и не то, что вы смотрите. Данные старше 30 дней удаляются, а выключение переключателя сразу удаляет данные этого ТВ. Пока родитель не включит, оно выключено.

Чтобы проект продолжался

MyTV бесплатный и останется рабочим без оплаты. Если он сэкономил вам вечер, пожертвование оплатит время на тестовом ТВ и сервер для бота. Те же два QR-кода лаунчер показывает в разделе «О программе».