iptv-app/android-tv/README.md
李岩岩 2a565fb8da feat(android-tv): 创建 Android TV WebView 壳应用
- 添加 TV 专用的 Leanback 主题和配置
- 支持遥控器 D-Pad 导航
- 添加 AssetReader JS 接口
- 强制横屏显示
- 处理遥控器按键(返回、菜单、信息)
2026-02-05 12:41:41 +08:00

2.5 KiB

Android TV WebView 壳

为 Android TV 设备(包括智能电视、电视盒子等)提供的 WebView 套壳应用。

特性

  • Leanback 支持 - 专为 TV 优化的主题和启动器
  • D-Pad 导航 - 遥控器方向键支持,自动注入 JS 导航
  • 全屏沉浸 - 无状态栏/导航栏,纯全屏体验
  • 横屏锁定 - 强制横屏显示
  • 按键处理 - 支持返回、菜单、信息键等遥控器按键

目录结构

android-tv/
├── app/src/main/
│   ├── java/com/iptv/tv/
│   │   └── MainActivity.java    # TV 主活动(含 D-Pad 支持)
│   ├── res/
│   │   ├── layout/activity_main.xml
│   │   ├── values/
│   │   │   ├── strings.xml
│   │   │   ├── styles.xml      # Leanback 主题
│   │   │   └── colors.xml
│   │   └── drawable/
│   │       └── ic_banner.xml   # TV 启动器横幅
│   ├── assets/
│   │   └── www/                # 打包的 Web 资源
│   └── AndroidManifest.xml     # TV 特定配置
├── build.sh                    # 一键构建脚本
└── ...

构建步骤

# 1. 构建 Web UI
cd ../ui
npm install
npm run build

# 2. 构建 Android TV APK
cd ../android-tv
./build.sh

APK 输出: app/build/outputs/apk/debug/app-debug.apk

TV 特定配置

AndroidManifest.xml

<!-- TV 必需特性 -->
<uses-feature android:name="android.software.leanback" android:required="true" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

<!-- TV 启动器 -->
<intent-filter>
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>

D-Pad 导航支持

应用自动注入 JavaScript 代码,使 Web 应用支持遥控器方向键导航:

  • 方向键 - 在可聚焦元素间移动
  • 确认键 - 点击当前聚焦元素
  • 返回键 - 页面后退/退出应用
  • 菜单键 - 刷新页面
  • 信息键 - 显示版本信息

遥控器按键映射

按键 功能
上/下/左/右 导航焦点
确认/OK 点击
返回 页面后退
菜单 刷新页面
信息/INFO 显示版本

开发与调试

  1. ADB 连接 TV

    adb connect <TV_IP>:5555
    adb install app-debug.apk
    
  2. 查看日志

    adb logcat -s IPTV:D
    
  3. 远程调试

    adb shell am start -a android.intent.action.VIEW -d "http://<dev_server>:5173"