安卓开发投屏反控实现方式
在安卓开发中,可以通过MediaProjection API来实现屏幕投屏的功能,同时也可以通过Socket通信实现反控功能。下面将详细介绍实现步骤和注意事项。
1. 创建MediaProjectionManager对象
首先,我们需要创建一个MediaProjectionManager对象,用于管理屏幕投影。
MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
2. 获取屏幕投影的Intent并启动Activity获取投影权限
通过MediaProjectionManager.createScreenCaptureIntent()方法获取屏幕投影的Intent,并启动Activity获取投影权限。在Activity的onActivityResult()回调方法中,通过MediaProjectionManager.getMediaProjection()方法获取MediaProjection对象。
Intent intent = mediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(intent, REQUEST_MEDIA_PROJECTION);@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_MEDIA_PROJECTION && resultCode == Activity.RESULT_OK) {mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data);// ...}
}
3. 创建虚拟显示器进行屏幕投影
在Activity中,我们可以通过MediaProjection.createVirtualDisplay()方法创建一个虚拟显示器来进行屏幕投影。
ImageReader imageReader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);
VirtualDisplay virtualDisplay = mediaProjection.createVirtualDisplay("MyScreen", width, height, dpi,DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC,imageReader.getSurface(), null, handler);
4. 将虚拟显示器的输出流转换成Bitmap或者ByteBuffer对象
接下来,我们需要将虚拟显示器的输出流转换成Bitmap或者ByteBuffer对象,并使用Socket通信将数据发送给远程设备。
Image image = imageReader.acquireLatestImage();
if (image != null) {ByteBuffer buffer = image.getPlanes()[0].getBuffer();int pixelStride = image.getPlanes()[0].getPixelStride();int rowStride = image.getPlanes()[0].getRowStride();int rowPadding = rowStride - pixelStride * width;Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);bitmap.copyPixelsFromBuffer(buffer);// 将bitmap转为byte数组并发送到远程设备byte[] data = getBytesFromBitmap(bitmap);sendToRemoteDevice(data);image.close();
}
5. 接收发送数据的远程设备信息并渲染屏幕
在远程设备上,可以通过Socket通信接收发送的数据,并将数据解码成Bitmap对象。随后,将Bitmap对象渲染到屏幕上。同时,可以通过Socket通信将鼠标和键盘事件发送回到安卓设备,实现反控功能。
// 从Socket接收数据并解码成Bitmap
byte[] data = receiveFromAndroidDevice();
Bitmap bitmap = getBitmapFromData(data);// 在屏幕上渲染Bitmap
imageView.setImageBitmap
安卓开发投屏反控实现方式相关推荐
- Miracast投屏反控原理
Miracast投屏反控 一. Miracast介绍 Miracast是对支持Wi-Fi Display功能设备的认证名称,也就是通过Miracast认证的设备应该都支持Wi-Fi Display功能 ...
- 安卓开发 投屏安卓设备到电脑端 scrcpy
1.安装 https://www.baidu.com/link?url=4GhUcZZMdJ7VTHerpb-r-85uda5T0ZDKlG8GMFWIZFHEnb-EIAN_Ug90Dkyl3oGv ...
- Miracast投屏反控
Miracast介绍 Miracast是对支持Wi-Fi Display功能设备的认证名称,也就是通过Miracast认证的设备应该都支持Wi-Fi Display功能. 缩略词以及定义 Source ...
- 基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件
[开源]基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件 码云地址 https://gitee.com/Barryda/QtScrcpy github地址 https://github. ...
- php安卓苹果打开自动分开,苹果、安卓手机投屏不掉线的两种设置方式
苹果.安卓手机投屏不掉线的两种设置方式 有用户反馈:"通过你们[AWIND奇机]的无线投屏器,手机投屏的时候,过几分钟就掉线." 经过微信视频,我们发现是该用户的手机在5分钟之后就 ...
- 511遇见安卓手机投屏支持一键转无线群控
我们玩手游,投屏到电脑,提示游戏体验,还有一些APP不支持模拟器,我们可以投屏到电脑进行脚本群控操作 511遇见安卓手机投屏基本设置 软件说明 支持所有品牌的安卓手机. 支持最新的华为(Harmony ...
- pc投屏android软件,Scrcpy安卓电脑投屏软件下载
Scrcpy安卓投屏软件是一款非常棒的安卓电脑投屏软件工具.这款软件可以为用户提供有线.无线两种投屏方式,用户可以方便地利用 Scrcpy 来测试 APP 应用.玩游戏.高效完成一些需要在手机上进行的 ...
- 安卓手机投屏软件_直播教程 | 安卓手机投屏队伍语音解决方案1
安卓手机投屏队伍语音解决方案1 主播大大好啊! 我们之前的文章讲过安卓手机投屏到直播电脑的手游直播教程,使用台式机+投屏的方式,这样无论是游戏体验,还是直播的观看体验,都会好很多,这是也是被手游主播普 ...
- scrcpy设置快捷键_Scrcpy投屏控制器下载|Scrcpy(安卓手机投屏神器)附使用教程 v1.16官方版...
Scrcpy是一款集投屏.控制为一体的手机工具,当我们的安卓手机通过WIFI.或USB连接到电脑的时候可以使用Scrcpy进行投屏,还可以对手机进行控制!非常好用的安卓手机投屏神器,最大的特点是手机无 ...
最新文章
- 【学习笔记】Android 图像处理
- altium designer 绘制pcb时漏线检查
- C语言实现克拉茨Collatz序列(附完整源码)
- 松下伺服esi文件_松下贴片机操作教程
- Vmware中mac snow leopard蘋果雪豹系統驅動程式安裝方法
- php扩展管理配置信息,PHP扩展管理 - 城市之雾的个人空间 - OSCHINA - 中文开源技术交流社区...
- C# 序列化与反序列化json
- Linux日志管理五大命令详解
- resource android:attr/dialogCornerRadius not found
- JAVA来读取大文本文件
- .bash_profile .bashrc profile 文件的作用的执行顺序
- 从 Promise、Async/Await 、Generator等角度实现一个 sleep 函数
- BDF 字体文件格式
- Mac电脑如何添加打印机?
- 微信亲戚备注分组名称_微信隐藏小技巧,1分钟批量分组精准好友
- 校招/社招-算法岗简历及面试经验分享
- 分析码农骄傲自大的几点原因
- 陈景润定理对筛法理论的重要贡献
- UE5再次更新!扫描或手动建模面部模型可直接转为绑定好的Metahuman
- java fuoco车架_破风硬汉——JAVA FUOCO公路车 评测
热门文章
- ws协议与http协议的异同
- POWER BI 中DAX函数的应用(下篇)
- python代写学生作业_CS1026A留学生作业代做、代写Python实验作业、代做Python程序设计作业、代写Computer Organization作业...
- 网上购物,支付安全么?
- 把电脑设置为免费的WIFI热点
- 药包材国家标准ybb2020-电子版在线阅读
- 自定义WindowsXP时间同步服务器
- python和js优劣势_Python对比其他语言,在web开发中有什么优劣势?
- rabbitmq 心跳机制
- css块元素与行内元素特点,行内元素和块元素以及行内块元素的特点