Работал ли с Android TV

Ответ

Да, работал. Основные особенности:

  • UI/UX: Учитываю ограничения TV (10-foot UI), фокус на навигации с D-pad/пульта.
  • Leanback Library: Использовал Leanback для стандартных TV-компонентов (BrowseFragment, DetailsFragment).
  • Фокус и навигация: Обрабатываю KeyEvent (например, KEYCODE_DPAD_CENTER) и управляю фокусом через requestFocus().

Пример обработки нажатия:

override fun onKeyEvent(event: KeyEvent): Boolean {
    return when (event.keyCode) {
        KeyEvent.KEYCODE_DPAD_CENTER -> {
            // Действие при нажатии OK
            true
        }
        else -> super.onKeyEvent(event)
    }
}

Также учитываю рекомендации Google (HDMI-CEC, рекомендации по размерам элементов).

Ответ 18+ 🔞

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

Первое и главное — интерфейс. Это ж не телефон, где можно менюшки в три этажа лепить. Это 10-foot UI, понимаешь? Диванный режим. Пользователь сидит в трёх метрах, пультом тыкает. Всё должно быть овердохуища большое, читаемое, и навигация — строго вверх-вниз-влево-вправо. Никаких свайпов, только D-pad. Иначе народ просто ебанько сядет, пытаясь курсор на кнопку навести.

Ну и, естественно, без Leanback Library — никуда. Это ж святое. Там всё готовое: BrowseFragment для списков контента, DetailsFragment для описания фильма. Не надо велосипед изобретать, бери и пользуйся. Хотя иногда их стандартные виджеты такие... манда с ушами, хочется переделать, но в целом — живём.

Самое интересное — это управление фокусом. Вот тут терпения ноль, ебать. Представь: у тебя сетка постеров. Пользователь нажимает "вправо", а фокус хуй знает куда улетел — на какую-нибудь невидимую кнопку сбоку. Кошмар! Поэтому везде requestFocus() и обработка KeyEvent. Вот смотри, простой пример, но без него — пиzда рулю:

override fun onKeyEvent(event: KeyEvent): Boolean {
    return when (event.keyCode) {
        KeyEvent.KEYCODE_DPAD_CENTER -> {
            // Действие при нажатии OK
            true
        }
        else -> super.onKeyEvent(event)
    }
}

Казалось бы, ерунда. Но если это не прописать, то нажатие "ОК" на пульте просто игнорируется, и пользователь будет орать на весь дом, что приложение глючит, сука.

Ну и по мелочи: рекомендации Google соблюдаем как священное писание. Размеры текстов, отступы, поддержка HDMI-CEC (чтобы с одного пульта всё управлялось). В общем, задача такая: сделать так, чтобы тётя Люба с дивана могла всё найти и включить, не вызывая внука-айтишника. Если она начинает бздеть, что не понимает, как фильм запустить — значит, ты где-то спизднул в логике. Всё должно быть до безобразия просто. Телевизор — он для отдыха, а не для квестов.