# MiniController **Repository Path**: redsoldier/MiniController ## Basic Information - **Project Name**: MiniController - **Description**: 安卓投屏,控制程序 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2023-07-15 - **Last Updated**: 2023-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MiniController #### 介绍 安卓投屏,控制程序; 含:服务端(android),客户端(android,swing) #### 架构图    #### 技术点/难点 + 局域网UDP广播 + 实现客户端"发现"服务端的功能([特殊说明](#特殊说明)) + socket通信 + JDK的socket通信和android的BluetoothSocket通信 + 基本的通信功能:拆粘包,编解码,登陆认证等(参考架构图),强制用户下线 + 安卓录屏和图像传输 + 基于MediaProjection的录屏Api的使用 + 基于ImageReader的逐帧图像的获取 + 图像处理:处理转屏问题,图像旋转和缩放;实现用户可控参数:传输帧率,图像尺寸,图像质量 + 简单的逐帧图像传输,非视频流传输!!([视频流方案资料](https://gitee.com/maoTVReporter/MiniController/blob/master/android/_doc/视频流资料.txt)) + 其他功能 + 鼠标光标悬浮窗 + 设备控制(模拟触摸,按键)功能([特殊说明](#特殊说明)) + 多客户端和多模式通信,图像和控制延迟,图像质量问题 + 只要图像参数不是"非常高",就可以避免图像延迟的问题;触摸操作偶尔会微弱延迟?未深究 + WIFI/热点局域网时,可以达到"图像较清晰+帧率不低+不延迟" + 蓝牙时,降低图像质量+不降帧率,也可以达到"流程播放" + 支持多客户端同时连接(只测试了最多3个),支持LAN和蓝牙同时连接,具体流畅性要看设备 #### 特殊说明 + 关于项目 + 本项目重构自n年前个人自用的app,是基于前公司自研硬件而开发的,目前只作学习参考,已停止维护! + 开发本项目时,已n年未接触安卓开发,偏向于淡化对安卓组件和机制的依赖(Activity,Service,线程等),所以项目结构比较奇葩 + 关于系统app,android版本适配,权限等问题 + 很多功能需要基于[系统app]才能/就能正常使用!! + 安卓服务端 + 整个开发阶段都是使用android10 + 后期测试时使用android11,已适配/修复了部分api + (吐槽:安卓开发非常恶心的情况,系统更新后大量Api报错或隐式失效,所以无心继续维护!! 隐式失效是真蛋疼,如全屏和发送UDP广播:不报错,bug发现成本高,容易导致机型适配问题) + 安卓客户端 + 开发时基本使用android5.1,在android10,11上没发现明显异常,没做特殊适配 + 连接成功后的全屏功能,应该存在部分机型无法全屏(隐藏顶部栏和底部虚拟按键) + 发送UDP广播 + [魅族17 android10]能正常使用,android11时广播发送失败(提示权限不足)!!接收功能正常 + 模拟触摸和按键事件 + 非系统app时,只能激活本app内的模拟事件; + 悬浮窗 + 早期android版本(大概4.0),可以在非系统app时,实现[顶层显示(覆盖任务栏,虚拟按键)] #### 截图