Maybe 发表于 2018-5-8 10:15:58

Android PC投屏功能实现的示例代码

http://bbs.zecoki.com/data/attachment/common/cf/102311q362klb36li21t72.png

代码地址 :github.com/deepsadness…效果预览投屏效果预览
https://user-gold-cdn.xitu.io/2018/4/23/162f2880e79c4aac?imageslim
简单说明:

[*]使用Android MediaProjection Api来完成视频的截图
[*]通过WebSocket进行链接。将图片传递给网页
想法来源看到vysor,觉得特别好玩,于是就想着自己能不能试着做一个类似的功能出来。搜索了相关实现。发现网上已经有网友针对vysor做了分析。于是就照着思路,按图索骥,当作对MediaProjection Api的练习,来完成这个小项目
主要思路1. 获取屏幕的截屏Android在Api 21以上为我们已经提供了系统的Api可以进行操作。
主要是这几个类的相互配合
MediaProjection和VirtualSurface,还有截图的话,使用ImageReader,三个类配合使用。https://user-gold-cdn.xitu.io/2018/4/23/162f2880e79c3b47?imageView2/0/w/1280/h/960/format/webp/ignore-error/1
配套使用示意图.png这里需要注意的是,需要通过这个回调,每当屏幕发生变化,就会回调这个接口,可以得到最新的截图。
ImageReader::setOnImageAvailableListener
2. 搭建Socket连接,将图片的数据进行传递node 部分的代码在 github.com/deepsadness…因为我们的目标是在网页内打开,所以需要和网页进行通信。
可以简单的使用WebSocket进行双方通向
https://user-gold-cdn.xitu.io/2018/4/23/162f2880e7816678?imageView2/0/w/1280/h/960/format/webp/ignore-error/1
简单示意图Again.png通过Socket.iosocket.io/ 就可以简单的实现
3. 如何将图片显示出来html中的src就可以直接对传递byte[]的进行解析。
[*] socket.on('image', function (msg) {
[*]      var arrayBufferView = new Uint8Array(msg);
[*]      var blob = new Blob(, { type: "image/jpeg" });
[*]      var urlCreator = window.URL || window.webkitURL;
[*]      var imageUrl = urlCreator.createObjectURL(blob);
[*]      var img = document.getElementById("screen");
[*]      // var img = document.querySelector("#photo");      img.src = imageUrl;


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





来源:{http://bbs.zecoki.com/forum-70-1.html}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Android PC投屏功能实现的示例代码