# screen_cast
**Repository Path**: dinf/screen_cast
## Basic Information
- **Project Name**: screen_cast
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-23
- **Last Updated**: 2025-11-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 小橘投屏 - 跨平台投屏应用



一个功能强大的跨平台投屏应用,支持多种投屏协议,轻松将手机内容投屏到智能电视、电脑、车机等设备。
[功能特性](#功能特性) • [快速开始](#快速开始) • [使用说明](#使用说明) • [项目结构](#项目结构)
---
## 📱 项目简介
**小橘投屏**是一款基于 Flutter 开发的跨平台投屏应用,支持将手机上的视频、音频、图片和文档文件投屏到各种智能设备。应用采用现代化的 Material Design 3 设计,提供流畅的用户体验,支持深色模式,适配 Android 和 iOS 平台。
### 核心特点
- 🎯 **多协议支持** - 支持 DLNA、Miracast、Chromecast、AirPlay、USB、蓝牙等多种投屏协议
- 📺 **广泛兼容** - 支持智能电视、Windows 电脑、车机系统等多种设备
- 🎬 **媒体投屏** - 支持视频、音频、图片等多种媒体格式
- 📄 **文档传输** - 支持 PDF、Word、Excel、PPT 等文档文件传输
- 📹 **屏幕录制** - 内置屏幕录制功能,可录制屏幕内容
- 📊 **历史记录** - 完整的投屏、录制、传输历史记录
- 🎨 **现代 UI** - Material Design 3 设计,支持深色模式
- ⚡ **高性能** - 优化的网络传输和播放控制,设备发现超时控制
- 🔄 **智能重试** - 自动重试机制,提高投屏成功率
- ⭐ **设备管理** - 设备收藏、重命名、分组、排序等高级功能
---
## ✨ 功能特性
### 1. 投屏功能
#### 支持的投屏协议
- **DLNA 无线投屏** ✅
- 支持智能电视(Android TV、Tizen、webOS 等)
- 支持 Windows 电脑(通过 DLNA 协议)
- 自动设备发现和连接
- 支持播放控制(播放、暂停、停止、进度控制)
- **Miracast 屏幕镜像** ✅ (Android)
- 支持 Miracast 协议的设备
- 屏幕实时镜像
- 低延迟传输
- **Chromecast 投屏** ⚠️
- 支持 Google Chromecast 设备
- 跨平台支持(Android 和 iOS)
- 使用 WebSocket 和 Cast 协议通信
- **AirPlay 投屏** ⚠️ (iOS)
- 支持 Apple AirPlay 设备
- 支持 Apple TV 等设备
- 需要原生平台实现
- **USB 有线投屏** ⚠️
- 支持通过 USB 连接进行投屏
- 暂时禁用(等待兼容插件更新)
- **蓝牙投屏** ✅
- 支持蓝牙音频设备(A2DP 协议)
- 支持蓝牙音箱、耳机等设备
- 自动设备发现和连接
- 支持音频流传输
- 支持视频投屏(通过蓝牙发送媒体URL,设备通过WiFi获取)
- 支持图片投屏
#### 支持的设备类型
- ✅ 智能电视(Android TV、Tizen、webOS 等)
- ✅ Windows 电脑(通过 DLNA 协议)
- ✅ 车机系统
- ✅ Android Auto(已集成SDK,支持媒体投屏)
- ⚠️ CarPlay(框架代码,需要原生实现)
- ⚠️ CarLife(框架代码,需要原生实现)
- ⚠️ WIDI(Windows 无线显示,框架代码)
- ⚠️ ICCOA(智慧车联开放联盟,框架代码)
- ⚠️ HiCar(华为智慧车载,框架代码)
### 2. 媒体文件管理
#### 支持的媒体格式
**视频格式:**
- MP4, AVI, MKV, MOV, WMV, FLV, WebM
**音频格式:**
- MP3, WAV, AAC, FLAC, OGG, M4A
**图片格式:**
- JPG, JPEG, PNG, GIF, BMP, WebP
#### 功能特性
- 📁 本地文件选择和管理
- 🔍 文件搜索和筛选
- 📋 文件列表展示
- 🗑️ 文件删除功能
- 🔄 下拉刷新加载
### 3. 文档传输功能
#### 支持的文档格式
- **办公文档:** PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX
- **文本文件:** TXT, RTF
- **其他格式:** ODT, ODS, ODP, CSV
#### 功能特性
- 📤 文档文件选择(支持多选)
- 🌐 通过 HTTP 服务器传输文档
- 📊 传输历史记录
- ✅ 传输状态跟踪
### 4. 屏幕录制功能
#### 功能特性
- 🎥 屏幕录制(需要原生平台支持)
- ⏱️ 录制时长显示
- 💾 录制文件保存
- 📹 录制历史记录
- 🎬 录制状态监控
### 5. 历史记录
- **投屏历史** - 记录所有投屏操作和设备信息
- **录制历史** - 记录所有屏幕录制记录
- **传输历史** - 记录所有文件传输记录
### 6. 设备管理
- 🔍 自动设备发现(支持超时控制,避免长时间等待)
- 📱 设备列表管理(支持收藏、重命名、分组、排序)
- 🔌 设备连接/断开
- 📊 设备状态显示
- 🏷️ 设备信息展示
- ⭐ 设备收藏功能
- 🏷️ 自定义设备名称
- 📁 设备分组管理
- 📈 连接次数统计
- 🔄 多种排序方式(按名称、最后连接时间、连接次数、类型)
### 7. 播放控制
- ▶️ 播放/暂停
- ⏹️ 停止
- ⏩ 快进/快退(进度条拖拽)
- 🔊 音量控制(滑块调节)
- 📊 播放进度显示(实时更新)
- ⏮️ 上一首/下一首(队列播放)
- 🔄 自动播放下一首
- ⚙️ 投屏设置(清晰度、显示模式、横竖屏)
- 🔁 错误重试机制(最多3次自动重试)
### 8. 用户界面
- 🎨 Material Design 3 设计
- 🌙 深色模式支持(自动跟随系统)
- 📱 响应式布局
- ✨ 流畅的动画效果
- 🎯 直观的操作界面
- ♿ 无障碍支持
---
## 🛠️ 技术栈
### 核心框架
- **Flutter** - 跨平台 UI 框架
- **Dart** - 编程语言
### 主要依赖
- **状态管理:** Provider
- **UI 适配:** flutter_screenutil
- **网络请求:** http
- **网络发现:** multicast_dns
- **DLNA 播放:** media_cast_dlna(基于 JUPnP 的 DLNA/UPnP 实现)
- **WebSocket:** web_socket_channel
- **XML 解析:** xml
- **文件选择:** file_picker
- **路径管理:** path_provider
- **权限管理:** permission_handler
- **蓝牙支持:** flutter_blue_plus
- **本地存储:** shared_preferences
- **日志记录:** logger
- **文件打开:** open_file
### 协议和标准
- **DLNA** - 数字生活网络联盟协议
- **Miracast** - WiFi Display 标准(Android)
- **Chromecast** - Google Cast 协议
- **AirPlay** - Apple 无线流媒体协议(iOS)
- **蓝牙 A2DP** - 高级音频分发配置文件
- **WIDI** - Windows 无线显示技术
- **ICCOA** - 智慧车联开放联盟协议
- **HiCar** - 华为智慧车载协议
- **mDNS** - 多播 DNS 服务发现
- **WebSocket** - Chromecast 通信协议
- **HTTP** - 媒体文件服务器
---
## 🧩 组件化架构
项目采用组件化设计,将可复用的UI组件和工具类抽离,提高代码复用性和可维护性。
### 可复用组件
#### UI组件 (`lib/widgets/`)
- **StatusCard** - 状态卡片组件
- 显示投屏状态信息(连接中、已连接、播放中、已暂停等)
- 支持自定义状态颜色和图标
- 提供状态文本获取方法
- **ConnectingView** - 连接中视图组件
- 统一的连接进度显示界面
- 支持显示设备名称
- 支持取消连接操作
- **ErrorView** - 错误视图组件
- 统一的错误信息显示界面
- 支持重试功能(带重试次数显示)
- 支持关闭操作
- **DeviceSelectionDialog** - 设备选择对话框组件
- 统一的设备选择界面
- 支持显示设备连接状态
- 支持屏幕镜像选项(Miracast)
- 支持批量文件选择提示
#### 工具类 (`lib/utils/`)
- **IconHelper** - 图标和名称工具类
- `getDeviceIcon()` - 获取设备连接类型图标
- `getConnectionTypeName()` - 获取连接类型名称
- `getMediaIcon()` - 获取媒体类型图标
- `getDeviceTypeIcon()` - 获取设备类型图标
- 统一管理所有图标和名称映射,避免代码重复
- **SnackBarHelper** - SnackBar工具类
- `showSuccess()` - 显示成功提示
- `showError()` - 显示错误提示(支持详细信息)
- `showInfo()` - 显示信息提示
- `showWarning()` - 显示警告提示
- `showLoading()` - 显示加载提示
- 统一的提示样式和交互体验
### 组件使用示例
```dart
// 使用状态卡片
StatusCard(
status: castProvider.castStatus,
deviceName: castProvider.castingDevice?.name,
mediaName: castProvider.castingMedia?.name,
)
// 使用连接中视图
ConnectingView(
deviceName: castProvider.castingDevice?.name,
onCancel: () => castProvider.stopCast(),
)
// 使用错误视图
ErrorView(
title: '投屏失败',
message: castProvider.errorMessage,
canRetry: castProvider.canRetry,
retryCount: castProvider.retryCount,
maxRetryCount: CastProvider.maxRetryCount,
onRetry: () => castProvider.retryCast(),
onClose: () => castProvider.stopCast(),
)
// 使用设备选择对话框
DeviceSelectionDialog.show(
context,
title: '选择投屏设备',
subtitle: '已选择 3 个文件',
devices: deviceProvider.devices,
selectedDevice: deviceProvider.selectedDevice,
media: mediaProvider.selectedMedia,
selectedCount: 3,
showScreenMirrorOption: true,
onDeviceSelected: (device) {
// 处理设备选择
},
onScreenMirror: (device) {
// 处理屏幕镜像
},
)
// 使用图标工具类
IconHelper.getDeviceIcon(device.connectionType)
IconHelper.getConnectionTypeName(device.connectionType)
IconHelper.getMediaIcon(media.type)
// 使用SnackBar工具类
SnackBarHelper.showSuccess(context, message: '投屏成功');
SnackBarHelper.showError(
context,
message: '投屏失败',
detail: errorMessage,
);
```
---
## 📁 项目结构
```
screen_cast_app/
├── lib/
│ ├── main.dart # 应用入口
│ ├── models/ # 数据模型
│ │ ├── device_model.dart # 设备模型
│ │ ├── media_model.dart # 媒体模型
│ │ ├── cast_history_model.dart # 投屏历史模型
│ │ └── recording_history_model.dart # 录制历史模型
│ ├── providers/ # 状态管理
│ │ ├── device_provider.dart # 设备状态管理
│ │ ├── media_provider.dart # 媒体状态管理
│ │ ├── cast_provider.dart # 投屏状态管理
│ │ ├── history_provider.dart # 历史记录管理
│ │ ├── recording_provider.dart # 录制状态管理
│ │ └── settings_provider.dart # 设置管理
│ ├── services/ # 服务层
│ │ ├── media_cast_dlna_service.dart # 基于 media_cast_dlna (JUPnP) 的 DLNA 投屏服务
│ │ ├── miracast_service.dart # Miracast 屏幕镜像服务
│ │ ├── chromecast_service.dart # Chromecast 投屏服务
│ │ ├── airplay_service.dart # AirPlay 投屏服务
│ │ ├── usb_service.dart # USB 投屏服务
│ │ ├── bluetooth_service.dart # 蓝牙服务
│ │ ├── media_service.dart # 媒体文件服务
│ │ ├── file_transfer_service.dart # 文件传输服务
│ │ ├── screen_recorder_service.dart # 屏幕录制服务
│ │ ├── http_media_server.dart # HTTP 媒体服务器
│ │ └── car_platform_service.dart # 车机平台服务
│ ├── screens/ # 页面
│ │ ├── splash_screen.dart # 启动页
│ │ ├── home_screen.dart # 主页面(底部导航)
│ │ ├── home_page.dart # 首页
│ │ ├── connect_page.dart # 连接页
│ │ ├── device_list_screen.dart # 设备列表页
│ │ ├── media_list_screen.dart # 媒体列表页
│ │ ├── cast_screen.dart # 投屏页
│ │ ├── cast_detail_screen.dart # 投屏详情页
│ │ ├── cast_history_screen.dart # 投屏历史页
│ │ ├── recording_history_screen.dart # 录制历史页
│ │ ├── transfer_history_screen.dart # 传输历史页
│ │ ├── control_page.dart # 控制页
│ │ ├── profile_screen.dart # 个人中心页
│ │ ├── settings_screen.dart # 设置页
│ │ ├── privacy_policy_screen.dart # 隐私政策页
│ │ └── user_agreement_screen.dart # 用户协议页
│ ├── widgets/ # 组件
│ │ ├── device_card.dart # 设备卡片
│ │ ├── media_item.dart # 媒体项
│ │ ├── cast_controller.dart # 投屏控制器
│ │ ├── animated_card.dart # 动画卡片
│ │ ├── swipeable_item.dart # 滑动删除项
│ │ ├── long_press_menu.dart # 长按菜单
│ │ ├── loading_indicator.dart # 加载指示器
│ │ ├── status_card.dart # 状态卡片组件
│ │ ├── connecting_view.dart # 连接中视图组件
│ │ ├── error_view.dart # 错误视图组件
│ │ └── device_selection_dialog.dart # 设备选择对话框组件
│ └── utils/ # 工具类
│ ├── constants.dart # 常量定义
│ ├── app_theme.dart # 主题配置
│ ├── error_handler.dart # 错误处理
│ ├── http_client.dart # HTTP 客户端
│ ├── icon_helper.dart # 图标和名称工具类
│ └── snackbar_helper.dart # SnackBar工具类
├── android/ # Android 平台代码
├── ios/ # iOS 平台代码
├── assets/ # 资源文件
│ └── icons/ # 应用图标
├── web/ # Web 平台代码
└── pubspec.yaml # 项目配置
```
---
## 🚀 快速开始
### 环境要求
- **Flutter SDK** >= 3.0.0
- **Dart SDK** >= 3.0.0
- **Android Studio** / **Xcode**(用于平台特定开发)
- **Android 设备** 或 **iOS 设备**(用于测试)
### 安装步骤
1. **克隆项目**
```bash
git clone
cd screen_cast_app
```
2. **安装依赖**
```bash
flutter pub get
```
3. **运行应用**
```bash
# Android
flutter run
# iOS
flutter run -d ios
```
### 编译和构建
```bash
# Android Debug APK
flutter build apk --debug
# Android Release APK
flutter build apk --release
# Android Release App Bundle (用于 Google Play)
flutter build appbundle --release
# iOS (需要 macOS)
flutter build ios --release
```
---
## 📖 使用说明
### DLNA 投屏
1. **确保设备在同一网络**
- 手机和目标设备必须连接到同一个 WiFi 网络
2. **搜索设备**
- 打开应用,进入"连接"页面
- 点击"搜索设备"按钮
- 等待设备列表显示
3. **连接设备**
- 从设备列表中选择要投屏的设备
- 点击设备卡片进行连接
4. **选择媒体文件**
- 进入"设备"页面(显示媒体文件列表)
- 点击"添加"按钮选择媒体文件
- 支持视频、音频、图片格式
5. **开始投屏**
- 选择文件后,点击“投屏”按钮
- 媒体文件将在目标设备上播放
> 说明:DLNA 功能基于 `media_cast_dlna` 插件(JUPnP 实现)。应用负责发现 DLNA/UPnP 设备、建立连接并将媒体 URL 投送到目标设备进行播放。
**投屏到 Windows 电脑:**
- Windows 10/11 支持 DLNA 接收
- 在 Windows 上启用"媒体流"功能:
1. 打开"设置" > "网络和 Internet" > "网络和共享中心"
2. 点击"更改高级共享设置"
3. 启用"媒体流"功能
- 或者使用 Windows Media Player 作为 DLNA 接收器
- 应用会自动识别 Windows 设备并显示为"Windows 设备"
### Miracast 屏幕镜像(Android)
1. **确保设备支持 Miracast**
- 手机和目标设备都必须支持 Miracast 协议
2. **启用无线显示**
- 在 Android 设备上启用"无线显示"功能
- 确保已授予位置权限(WiFi P2P 需要)
3. **搜索和连接**
- 打开应用,选择"Miracast"连接方式
- 点击"搜索设备"
- 选择要镜像的设备并连接
4. **开始镜像**
- 连接成功后,点击"开始镜像"
- 手机屏幕将实时显示在目标设备上
### Chromecast 投屏
1. **确保设备在同一网络**
- 手机和 Chromecast 设备必须连接到同一个 WiFi 网络
2. **搜索设备**
- 打开应用,选择"Chromecast"连接方式
- 点击"搜索设备"
- 等待 Chromecast 设备显示
3. **连接和投屏**
- 选择 Chromecast 设备
- 选择媒体文件
- 开始投屏
### AirPlay 投屏(iOS)
1. **确保设备在同一网络**
- iPhone/iPad 和 AirPlay 设备必须连接到同一个 WiFi 网络
2. **搜索设备**
- 打开应用,选择"AirPlay"连接方式
- 点击"搜索设备"
- 选择 AirPlay 设备(如 Apple TV)
3. **投屏**
- 选择媒体文件
- 开始投屏
**注意:** AirPlay 功能需要使用平台通道调用 iOS 原生 API,当前实现提供了框架代码,需要完善原生实现。
### USB 投屏
1. **连接设备**
- 使用 USB 线连接手机和目标设备
- 在手机上授权 USB 权限(首次连接需要)
2. **搜索设备**
- 打开应用,进入"连接"页面
- 选择"USB"连接方式
- 点击"搜索设备"按钮
- 等待USB设备列表显示
3. **连接设备**
- 从设备列表中选择要连接的USB设备
- 点击设备卡片进行连接
- 首次连接需要授予USB权限
4. **投屏媒体**
- 选择媒体文件
- 点击"投屏"按钮
- 媒体文件将通过USB传输到目标设备
**注意:** USB投屏需要设备支持USB主机模式,并且需要相应的USB权限。
### 蓝牙投屏
1. **确保蓝牙已开启**
- 在手机上开启蓝牙功能
- 确保目标设备支持蓝牙并已开启
2. **搜索设备**
- 打开应用,进入"连接"页面
- 切换到"蓝牙"标签
- 点击"搜索设备"按钮
- 等待蓝牙设备列表显示
3. **连接设备**
- 从设备列表中选择要连接的蓝牙设备
- 点击设备卡片进行连接
- 首次连接可能需要配对确认
4. **投屏音频**
- 选择音频文件
- 点击"投屏"按钮
- 音频将通过蓝牙 A2DP 协议传输到目标设备
**注意:** 蓝牙投屏主要用于音频传输,支持蓝牙音箱、耳机等音频设备。视频投屏建议使用 DLNA、Miracast 等协议。
### 屏幕录制
1. **进入首页**
- 打开应用,在首页找到"屏幕录制"卡片
2. **开始录制**
- 点击"开始录制"按钮
- 授予必要的权限(屏幕录制权限)
3. **停止录制**
- 点击"停止录制"按钮
- 录制文件将自动保存
4. **查看录制历史**
- 进入"我的"页面
- 点击"录制历史"查看所有录制记录
### 文档传输
1. **选择文档**
- 进入"设备"页面
- 点击"添加"按钮
- 选择"文档"类型
- 选择要传输的文档文件(支持多选)
2. **传输文档**
- 选择文档后,选择目标设备
- 点击"传输"按钮
- 文档将通过 HTTP 服务器传输到目标设备
3. **查看传输历史**
- 进入"我的"页面
- 点击"传输历史"查看所有传输记录
---
## ⚠️ 重要注意事项
### 平台限制
1. **Miracast**
- 主要支持 Android 平台
- 需要使用平台通道调用 Android 原生 API(WifiDisplayManager)
- 当前实现提供了框架代码,需要完善原生实现
2. **AirPlay**
- 主要支持 iOS 平台
- 需要使用平台通道调用 iOS 原生 API
- 当前实现提供了框架代码,需要完善原生实现
3. **Chromecast**
- 跨平台支持(Android 和 iOS)
- 使用 WebSocket 和 Cast 协议进行通信
- 需要设备支持 Google Cast
4. **USB**
- 支持USB设备发现和连接
- 支持USB权限管理
- 支持通过USB传输媒体文件
- 支持USB投屏功能
5. **蓝牙**
- 支持蓝牙设备发现和连接
- 支持 A2DP 音频传输
- 主要用于音频投屏
6. **车机平台协议**
- WIDI、ICCOA、HiCar 等协议需要原生平台实现
- 当前提供了框架代码和接口定义
### 实现状态
- ✅ **DLNA** - 完整实现
- ✅ **蓝牙** - 完整实现(设备发现、连接、音频投屏)
- ✅ **Miracast** - 原生实现完成(WiFi P2P设备发现、连接、屏幕镜像)
- ✅ **USB** - 完整实现(设备发现、连接、权限管理、媒体传输)
- ✅ **Chromecast** - 完整实现(WebSocket通信、Android mDNS发现)
- ✅ **AirPlay** - iOS原生实现框架完成(设备发现、连接、媒体投屏)
- ✅ **WIDI** - 框架代码完成(DisplayManager集成)
- ✅ **ICCOA** - 框架代码完成(需要集成ICCOA SDK)
- ✅ **HiCar** - 框架代码完成(需要集成HiCar SDK)
- ✅ **Android Auto** - SDK集成完成(MediaBrowserService实现,支持媒体投屏)
- ✅ **CarPlay** - iOS框架代码完成(需要集成CarPlay SDK)
- ✅ **CarLife** - 框架代码完成(需要集成CarLife SDK)
### 网络要求
- **DLNA/Chromecast/AirPlay**:手机和目标设备必须在同一 WiFi 网络
- **Miracast**:支持 WiFi Direct,不需要路由器
- **USB**:通过 USB 线直接连接,不需要网络
- **蓝牙**:不需要网络,通过蓝牙直接连接
- **车机平台**:根据连接方式(USB/蓝牙/WiFi)而定
### 权限要求
- **存储权限**:用于选择和管理媒体文件
- **网络权限**:用于设备发现和文件传输
- **位置权限**:Android 上 WiFi P2P(Miracast)需要位置权限
- **蓝牙权限**:用于蓝牙设备发现和连接(Android 12+ 需要)
- **USB权限**:用于USB设备连接和文件传输
- **屏幕录制权限**:用于屏幕录制功能
### SDK集成说明
以下功能需要集成对应的SDK才能完整使用:
- **Android Auto**:需要集成 Google Android Auto SDK
- **CarPlay**:需要集成 Apple CarPlay SDK(iOS)
- **CarLife**:需要集成百度 CarLife SDK
- **ICCOA**:需要集成智慧车联开放联盟 SDK
- **HiCar**:需要集成华为 HiCar SDK
当前实现提供了完整的框架代码和接口,集成SDK后即可使用完整功能。
---
## 🔮 开发计划
### 已完成功能
- [x] DLNA 设备发现和连接
- [x] DLNA 媒体投屏
- [x] 蓝牙设备发现和连接
- [x] 蓝牙音频投屏(A2DP)
- [x] Miracast WiFi P2P设备发现和连接(Android原生实现)
- [x] Miracast 屏幕镜像功能
- [x] Chromecast WebSocket通信实现
- [x] Chromecast mDNS设备发现(Android原生实现)
- [x] AirPlay iOS原生实现框架
- [x] USB设备发现、连接和媒体传输
- [x] 车机平台框架代码(Android Auto、CarPlay、CarLife、WIDI、ICCOA、HiCar)
- [x] 媒体文件管理
- [x] 设备列表管理
- [x] 投屏历史记录
- [x] 录制历史记录
- [x] 传输历史记录
- [x] 用户界面优化
- [x] 深色模式支持
- [x] 动画效果
- [x] 无障碍支持
- [x] 车机平台服务框架(WIDI、ICCOA、HiCar、Android Auto、CarPlay、CarLife)
- [x] 播放控制界面优化(增强控制选项、进度条、音量控制等)
- [x] 设备管理功能增强(设备收藏、重命名、分组、排序等功能)
- [x] 性能优化(设备发现超时控制、避免重复搜索、内存优化)
- [x] 错误处理改进(增强错误提示、重试机制、错误恢复)
- [x] 组件化重构(抽离可复用组件,提高代码复用性)
### 进行中
- [x] Miracast 原生实现(Android)- ✅ 已完成WiFi P2P设备发现和连接
- [x] AirPlay 原生实现(iOS)- ✅ 已完成iOS原生实现框架
- [x] Chromecast 完整实现 - ✅ 已完成WebSocket通信和Android mDNS发现
- [x] USB 投屏 - ✅ 已完成USB设备发现、连接和媒体传输
### 计划中
- [x] Android Auto 原生实现 - ✅ 框架代码已完成(需要集成Android Auto SDK)
- [x] CarPlay 原生实现 - ✅ iOS框架代码已完成(需要集成CarPlay SDK)
- [x] CarLife 原生实现 - ✅ 框架代码已完成(需要集成CarLife SDK)
- [x] WIDI 原生实现 - ✅ 框架代码已完成(需要完善DisplayManager集成)
- [x] ICCOA 原生实现 - ✅ 框架代码已完成(需要集成ICCOA SDK)
- [x] HiCar 原生实现 - ✅ 框架代码已完成(需要集成HiCar SDK)
- [x] 播放控制界面优化 - ✅ 已完成(增强控制选项、进度条、音量控制等)
- [x] 设备管理功能增强 - ✅ 已完成(设备收藏、重命名、分组、排序等功能)
- [x] 性能优化 - ✅ 已完成(设备发现超时控制、避免重复搜索、内存优化)
- [x] 错误处理改进 - ✅ 已完成(增强错误提示、重试机制、错误恢复)
- [x] 蓝牙视频投屏支持 - ✅ 已完成(通过蓝牙发送媒体URL,设备通过WiFi获取视频)
- [x] 组件化重构 - ✅ 已完成(抽离可复用组件,提高代码复用性和可维护性)
---
## 📄 许可证
MIT License
---
## 👥 贡献
欢迎提交 Issue 和 Pull Request!
---
## 📞 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件
---
**小橘投屏** - 让投屏更简单 🎬
Made with ❤️ using Flutter