Skip to content
WahwayhalePublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📺 Android TV 遥控器

一个基于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 设备或模拟器

安装步骤

  1. 克隆项目
cd AndroidTVRemote
  1. 用Android Studio打开项目

    • 打开 Android Studio
    • 选择 "Open an existing project"
    • 选择 AndroidTVRemote 目录
  2. 连接Android TV设备

    • 开启电视的开发者选项
    • 启用USB调试或网络调试
    • 通过ADB连接电视
  3. 构建并运行

./gradlew assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk

使用方法

  1. 启动应用

    • 在电视上打开"电视遥控器"应用
    • 屏幕将显示局域网IP地址和二维码
  2. 手机连接

    • 确保手机和电视在同一WiFi网络
    • 手机浏览器访问显示的IP地址
    • 或扫描电视上的二维码
  3. 配置API

    • 点击右上角"设置"按钮
    • 填入大模型API的Base URL和API Key
    • 点击"获取模型"选择模型
    • 保存配置
  4. 开始对话

    • 在输入框输入文字
    • 或点击麦克风按钮语音输入
    • 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                            # 项目说明

🛠️ 技术栈

Android端

  • Kotlin: 主要开发语言
  • NanoHTTPD: 轻量级HTTP服务器
  • NanoWSD: WebSocket支持
  • OkHttp: HTTP客户端
  • ZXing: 二维码生成
  • DataStore: 数据持久化
  • Coroutines: 异步编程

H5前端

  • 原生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 海信真机全流程走查

🔧 配置说明

API配置

  • Base URL: 大模型API的基础地址

    • OpenAI: https://api.openai.com/v1
    • 通义千问: https://dashscope.aliyuncs.com/api/v1
    • Kimi: https://api.moonshot.cn/v1
  • API Key: API密钥

    • 从对应平台获取
  • 模型: 选择使用的模型

    • 点击"获取模型"自动拉取列表

网络配置

  • 端口: 默认8080
  • 协议: HTTP + WebSocket
  • 网络: 需在同一局域网

🐛 故障排除

连接问题

  1. 无法访问电视IP

    • 检查手机和电视是否在同一WiFi
    • 检查电视防火墙设置
    • 尝试重启电视应用
  2. WebSocket连接失败

    • 刷新手机页面
    • 检查电视端日志
    • 确认端口8080未被占用

语音识别问题

  1. 麦克风按钮不显示

    • 浏览器不支持Web Speech API
    • 使用Chrome或Safari浏览器
  2. 识别不准确

    • 确保环境安静
    • 说话清晰
    • 检查网络连接

API配置问题

  1. 获取模型失败

    • 检查Base URL是否正确
    • 确认API Key有效
    • 查看电视端日志
  2. 发送消息无响应

    • 检查API配置
    • 确认模型已选择
    • 查看错误提示

📄 许可证

本项目采用 MIT 许可证。

🤝 贡献

欢迎提交Issue和Pull Request!

📧 联系方式

如有问题,请提交Issue或联系开发者。


享受你的电视遥控器! 📺🎮🎤

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages