- 添加 TV 专用的 Leanback 主题和配置 - 支持遥控器 D-Pad 导航 - 添加 AssetReader JS 接口 - 强制横屏显示 - 处理遥控器按键(返回、菜单、信息)
102 lines
2.5 KiB
Markdown
102 lines
2.5 KiB
Markdown
# 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 # 一键构建脚本
|
|
└── ...
|
|
```
|
|
|
|
## 构建步骤
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```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**
|
|
```bash
|
|
adb connect <TV_IP>:5555
|
|
adb install app-debug.apk
|
|
```
|
|
|
|
2. **查看日志**
|
|
```bash
|
|
adb logcat -s IPTV:D
|
|
```
|
|
|
|
3. **远程调试**
|
|
```bash
|
|
adb shell am start -a android.intent.action.VIEW -d "http://<dev_server>:5173"
|
|
```
|