一个基于WebSocket的Android TV遥控器应用,通过手机浏览器控制电视,支持语音输入和AI对话。
- Web服务器: 电视端运行微型HTTP服务器,托管H5控制页面
- WebSocket通信: 实时双向通信,支持流式消息
- 语音识别: 手机端语音转文字输入
- AI对话: 代理大模型API,支持流式响应
- 二维码扫描: 手机扫码快速连接
- 🎤 语音输入(支持中文)
- ⚙️ API配置管理
- 📊 模型列表获取
- 💬 实时对话界面
- 🔄 自动重连机制
- 🌐 内置Web服务器
- 📡 WebSocket服务
- 🔌 局域网IP显示
- 📱 二维码生成
- 🎮 遥控器适配
- 🔋 防休眠机制
- Android Studio Hedgehog | 2023.1.1 或更高版本
- Android SDK 34
- JDK 17
- Android TV 设备或模拟器
- 克隆项目
cd AndroidTVRemote-
用Android Studio打开项目
- 打开 Android Studio
- 选择 "Open an existing project"
- 选择
AndroidTVRemote目录
-
连接Android TV设备
- 开启电视的开发者选项
- 启用USB调试或网络调试
- 通过ADB连接电视
-
构建并运行
./gradlew assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk-
启动应用
- 在电视上打开"电视遥控器"应用
- 屏幕将显示局域网IP地址和二维码
-
手机连接
- 确保手机和电视在同一WiFi网络
- 手机浏览器访问显示的IP地址
- 或扫描电视上的二维码
-
配置API
- 点击右上角"设置"按钮
- 填入大模型API的Base URL和API Key
- 点击"获取模型"选择模型
- 保存配置
-
开始对话
- 在输入框输入文字
- 或点击麦克风按钮语音输入
- AI回复将实时显示在电视和手机上
AndroidTVRemote/
├── app/
│ ├── src/main/
│ │ ├── java/com/tvremote/app/
│ │ │ ├── MainActivity.kt # 主Activity
│ │ │ ├── WebServerManager.kt # Web服务器管理
│ │ │ └── NetworkUtils.kt # 网络工具类
│ │ ├── assets/
│ │ │ └── index.html # H5控制页面
│ │ ├── res/
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml # 主布局
│ │ │ ├── values/
│ │ │ │ └── strings.xml # 字符串资源
│ │ │ └── drawable/
│ │ │ └── app_banner.xml # TV Banner
│ │ └── AndroidManifest.xml # 应用清单
│ └── build.gradle # 应用构建配置
├── build.gradle # 项目构建配置
├── settings.gradle # 项目设置
└── README.md # 项目说明
- Kotlin: 主要开发语言
- NanoHTTPD: 轻量级HTTP服务器
- NanoWSD: WebSocket支持
- OkHttp: HTTP客户端
- ZXing: 二维码生成
- DataStore: 数据持久化
- Coroutines: 异步编程
- 原生JavaScript: 无框架依赖
- WebSocket: 实时通信
- Web Speech API: 语音识别
- CSS3: 响应式设计
- T1.1 集成微型Web服务器
- T1.2 托管H5静态资源
- T1.3 建立WebSocket通道
- T1.4 获取并展示局域网IP
- T2.1 H5基础骨架与WS通信
- T2.2 API配置面板开发
- T2.4 文本输入与对话面板
- T2.5 集成语音转文字
- T4.1 对话列表UI实现
- T4.3 遥控器焦点适配
- T4.4 生成访问二维码
- T5.1 防休眠WakeLock机制
- T2.3 模型列表获取与选择
- T3.1 本地数据持久化
- T3.2 大模型HTTP代理转发
- T3.3 SSE流式数据解析
- T3.4 流式消息广播
- T4.2 流式渲染与自动滚动
- T5.2 长文本防OOM优化
- T5.3 异常处理与状态提示
- T5.4 海信真机全流程走查
-
Base URL: 大模型API的基础地址
- OpenAI:
https://api.openai.com/v1 - 通义千问:
https://dashscope.aliyuncs.com/api/v1 - Kimi:
https://api.moonshot.cn/v1
- OpenAI:
-
API Key: API密钥
- 从对应平台获取
-
模型: 选择使用的模型
- 点击"获取模型"自动拉取列表
- 端口: 默认8080
- 协议: HTTP + WebSocket
- 网络: 需在同一局域网
-
无法访问电视IP
- 检查手机和电视是否在同一WiFi
- 检查电视防火墙设置
- 尝试重启电视应用
-
WebSocket连接失败
- 刷新手机页面
- 检查电视端日志
- 确认端口8080未被占用
-
麦克风按钮不显示
- 浏览器不支持Web Speech API
- 使用Chrome或Safari浏览器
-
识别不准确
- 确保环境安静
- 说话清晰
- 检查网络连接
-
获取模型失败
- 检查Base URL是否正确
- 确认API Key有效
- 查看电视端日志
-
发送消息无响应
- 检查API配置
- 确认模型已选择
- 查看错误提示
本项目采用 MIT 许可证。
欢迎提交Issue和Pull Request!
如有问题,请提交Issue或联系开发者。
享受你的电视遥控器! 📺🎮🎤