宅科技 - 科技,宅出新生活

搜索
热搜: 活动 交友 discuz
如果你还没有论坛的账号,赶快注册吧!
立即注册

合作站点账号登陆

快捷导航
查看: 12289|回复: 3

[知识点] Android PC投屏功能实现的示例代码

[复制链接] [提交至百度]

109

主题

115

帖子

6698

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6698
发表于 2018-5-8 10:15:58 | 显示全部楼层 |阅读模式
扫码领红包
本帖最后由 maybe 于 2018-5-8 10:19 编辑

效果预览投屏效果预览

简单说明:
  • 使用Android MediaProjection Api来完成视频的截图
  • 通过WebSocket进行链接。将图片传递给网页

想法来源
看到vysor,觉得特别好玩,于是就想着自己能不能试着做一个类似的功能出来。搜索了相关实现。发现网上已经有网友针对vysor做了分析。于是就照着思路,按图索骥,当作对MediaProjection Api的练习,来完成这个小项目

主要思路1. 获取屏幕的截屏
Android在Api 21以上为我们已经提供了系统的Api可以进行操作。
主要是这几个类的相互配合
MediaProjection和VirtualSurface,还有截图的话,使用ImageReader,三个类配合使用。

配套使用示意图.png
这里需要注意的是,需要通过这个回调,每当屏幕发生变化,就会回调这个接口,可以得到最新的截图。
ImageReader::setOnImageAvailableListener

2. 搭建Socket连接,将图片的数据进行传递
node 部分的代码在 github.com/deepsadness…
因为我们的目标是在网页内打开,所以需要和网页进行通信。
可以简单的使用WebSocket进行双方通向

简单示意图Again.png
通过Socket.iosocket.io/ 就可以简单的实现

3. 如何将图片显示出来
html中的src就可以直接对传递byte[]的进行解析。
  1. socket.on('image', function (msg) {
  2.       var arrayBufferView = new Uint8Array(msg);
  3.       var blob = new Blob([arrayBufferView], { type: "image/jpeg" });
  4.       var urlCreator = window.URL || window.webkitURL;
  5.       var imageUrl = urlCreator.createObjectURL(blob);
  6.       var img = document.getElementById("screen");
  7.       // var img = document.querySelector("#photo");
  8.       img.src = imageUrl;
复制代码


4. 下一步
下一步,就是使用 录制的Api,来做录屏直播了。








上一篇:投屏软件的原理是什么?它为什么比用 adb 快许多?
下一篇:Android PC投屏简单尝试
回复

使用道具 举报

3

主题

75

帖子

87

积分

提鞋小弟

Rank: 2

积分
87
发表于 2019-4-27 22:30:39 | 显示全部楼层
高科技!棒!以前有客户让我做个投屏软件,我没头绪!
回复 支持 反对

使用道具 举报

0

主题

43

帖子

87

积分

提鞋小弟

Rank: 2

积分
87
发表于 2019-7-12 19:49:18 | 显示全部楼层
谢分享,谢谢!感谢分享,
回复 支持 反对

使用道具 举报

0

主题

99

帖子

99

积分

提鞋小弟

Rank: 2

积分
99
发表于 2024-4-28 01:10:14 | 显示全部楼层
6666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

抖音账号
关注抖音
查看在线教程,私信咨询


手机版|小黑屋|网站地图|宅科技 ( 粤ICP备15107403号

GMT+8, 2024-10-18 16:55 , Processed in 0.140529 second(s), 27 queries .

Copyright © 2016 宅科技 | 智能终端极客社区

Powered by Discuz! X3.4 Licensed

快速回复 返回顶部 返回列表