先看效果演示

接下来手把手教你实现这样的效果。

minicap简介

minicap是一个可以远程获取android屏幕画面的开源库,它在低版本的Android系统上采用截屏的方式获取画面,在Android4.2以上系统上采用创建VirtualDisplay的方式来获取画面、性能大大提高。 minicap的核心功能都在minicap.so中实现,如果要进行二次开发直接引用即可。

1.mincap下载

1.1 clone代码

git clone https://github.com/openstf/minicap.git
cd minicap
git submodule init // 初始化jni/vendor/libjpeg-turbo子仓库配置
git submodule update // 更新jni/vendor/libjpeg-turbo子仓库代码

1.2 minicap仓库目录结构

minicap
|-example 简单的示例客户端,连接minicap服务端,转换为web显示
|-jni 源代码,minicap为纯c/c++
| |-minicap 简单的示例服务端,实现将捕获到的帧通过网络传输的功能
| |-minicap-shared 核心功能库,实现捕获画面、并通知listener的功能
| | |-aosp 实际实现
| | |-libs 已经编译好的so库
| | |-android-xx 对应API版本为xx的so库,实现方法有所不同
| | |-src 源代码
| | |-mock 空实现
| |-vendor 依赖的第三方库
| |
|-libs 编译后的输出目录

2.mincap编译

2.1 下载ndk-build

2.2 用ndk-build 编译mincap安装包

2.2.1 下载配置adb

adb(Android Debug Bridge),安卓平台调试桥,是连接Android手机与PC端的桥梁,通过adb可以管理、操作模拟器和设备,如安装软件、查看设备软硬件参数、系统升级、运行shell命令等。

1) 下载安装adb

2) 在环境变量配置中添加adb路径,按键Windows+R打开运行,输入sysdm.cpl,回车,弹出系统属性对话框  在高级==》环境变量==》系统变量==》path,添加adb可执行文件的文件夹路径。

2.2.2 连接设备

需要手机打开调试者模式,打开  设置==>开发人员选项==>USB调试,打开即可。开发人员选项在Android4.2以下,可以直接看到。 在Android 4.2及以上版本中默认是隐藏的。打开开发人员选项的方法是:打开 设置==>关于手机,连续点击版本号7次即可。

首次调试,手机会弹出是否允许某台电脑以USB方式调试该手机的问询对话框,勾选允许使用这台计算机进行调试。

               

然后用adb devices命令,查看已连接的设备。如果设备列表为空,可以尝试一下:1)重新开启USB调试权限 ; 2)撤销USB调试权限重新赋权;3) 重启手机

adb devices

2.2.3 查看手机CPU支持的ABI(CPU指令架构)

不同的Android手机使用不同的CPU,而不同的 CPU支持不同的指令集,CPU与指令集的每种组合都有专属的应用二进制接口,即 ABI(全称:ApplicationBinary Interface)

adb shell getprop ro.product.cpu.abi

2.2.4  获取手机设备的sdk

adb shell getprop ro.build.version.sdk

2.2.5 执行编译

ndk-build可以通过APP_PLATFORM参数设置目标平台,默认是android-14,这里指定的是android-26(8.0),实际并没有什么影响,因为只有minicap-shared的实现是平台相关的,但我们使用了编译好的库;通过APP_ABI可以指定指令平台,如果不指定默认将编译全部的armeabi-v7a、arm64-v8a、x86、x86_64平台。

执行完毕后,在libs/armeabi-v7a下会生成minicap、minicap.so、minicap-nopie三个文件,实际用到的只有minicap,这里生成的minicap.so是一个空实现。

ndk-build.cmd APP_PLATFORM=android-26 APP_ABI=arm64-v8a

3. 运行minicap项目示例

3.1 运行minicap项目中的example内的服务端

3.1.1 将编译好的两个文件push到手机设备上

so文件一定用minicap-master\jni\minicap-shared\aosp\libs\android-26\arm64-v8a\minicap.so,cpu架构要匹配.否则会导致与系统不兼容,运行会报错

adb push  libs/arm64-v8a/minicap data/local/tmp
adb push jni/minicap-shared/aosp/libs/android-26/arm64-v8a/minicap.so data/local/tmp

3.1.2 设置文件执行权限

adb shell chmod 777 data/local/tmp/minicap
adb shell chmod 777 data/local/tmp/minicap.so

3.1.3 获取android设备分辨率

adb shell wm size

3.1.4 启动服务端

# 测试服务器是否可用
adb shell LD_LIBRARY_PATH=data/local/tmp data/local/tmp/minicap -P 1080x1920@1080x1920/0 -t # 启动服务器
adb shell LD_LIBRARY_PATH=data/local/tmp data/local/tmp/minicap -P 1080x1920@1080x1920/0

3.1.5 使用adb工具进行端口映射,将服务端的端口映射到1717,客户端node读取服务器传送数据的端口是1717

adb forward tcp:1717 localabstract:minicap

3.2  运行minicap项目中的example内的客户端

3.2.1 安装依赖

yarn

3.2.2  启动客户端

node app.js

参考文档

手把手教你实现Android真机远程截屏的更多相关文章

  1. 在Mac系统上配置Android真机调试环境

    在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...

  2. android真机自动化测试

    appium执行用例时报错问题: 问题解析: 一般该种情况都是因为来连接了多个设备,验证办法:cmd->执行adb devices  看结果是否是多个devices ,如果是这个问题,停掉多余设 ...

  3. 【转】手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...

  4. Android真机测试,连接到本地服务器的方法

    1. 前言 作为一名Android开发者,不管怎么说,都会经历使用Android真机来测试连接本地服务器这样的事情.这里所说的“本地服务器”大多数时候指的是:搭载有某种服务器软件的PC,例如搭载有To ...

  5. 手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...

  6. Android 真机投影到PC端,真机投影工具;Vysor

    Vysor可以把Android真机投影到PC端,也就是电脑上:手机端和PC端课同步操作: Vysor是Chrome浏览器的插件,我们想要添加这个插件需要FQ: 从这里可以直接下载:Vysor

  7. Unity Frame Debugger连接Android真机调试

    当用Profiler分析到不是代码导致的性能问题,当前场景最大的性能瓶颈是渲染时,或者自己写的Shader要调试时,都可以用Frame Debugger进行调试. 按下列步骤设置打包,既可以用Prof ...

  8. Unity Profiler连接Android真机调试

    Profiler在Editor模式就可以观看性能消耗,但是毕竟电脑配置高,跟手机真机环境还是有区别.实际开发中的优化还是推荐用真机测试. 因为IOS一般比Android手机的配置高,在Android平 ...

  9. 使用ADB无线连接Android真机进行调试

    使用ADB无线连接Android真机进行调试   其实这已经是一个很古老的知识了,记录一下备忘. 准备工作 手机和电脑需要在同一个局域网内 电脑上已经安装好ADB工具,可以是Mac或者Windows ...

随机推荐

  1. mybatis中的#和$的区别 以及 防止sql注入

    声明:这是转载的. mybatis中的#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sq ...

  2. Beta-技术规格说明书

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-计划-功能规格说明书 一.架构与技术栈 1.整体架构 本项目的整体架构如上图所示.下面我们将对涉及 ...

  3. 航胥:北航教务助手——Alpha阶段发布声明

    本软件项目为北京航空航天大学2020年"软件工程"课程项目 v1.0.5版本下载地址:https://bhpan.buaa.edu.cn:443/#/link/D10B71B69E ...

  4. GitHub README文件生成目录导航

    效果 环境说明 [root@C61 ~]# cat /etc/redhat-release CentOS release 6.10 (Final) [root@C61 ~]# uname -a Lin ...

  5. GEOS使用记录

    由于需要计算GIS障碍物的缓冲区,所以研究了 一下GEOS库的使用,将使用的一些细节内容记录一下: 1.vs2010IDE无法编译较高版本的GEOS库,较高版本的库使用了更加高级的C++语法,如果想使 ...

  6. 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历多选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的多选按钮进行实战. 2.d ...

  7. [转]DDR相关的一些基础知识

    ODT ( On-DieTermination ,片内终结)ODT 也是 DDR2 相对于 DDR1 的关键技术突破,所谓的终结(端接),就是让信号被电路的终端吸 收掉,而不会在电路上形成反射, 造成 ...

  8. P2472 [SCOI2007]蜥蜴(最大流)

    P2472 [SCOI2007]蜥蜴 自己第一道独立做题且一遍AC的网络流题纪念... 看到这道题我就想到网络流建图的方式了... 首先根据每个高度,我们将每个点拆成两个点限流.之后根据跳的最大距离, ...

  9. 重学STM32---(九)之CAN通信(一)

    目录 1.CAN 是什么 2.CAN 特点 3.错误状态的种类 4.总线拓扑 5.CAN 协议 1.CAN 是什么   CAN 是 Controller Area Network的缩写(以下称为 CA ...

  10. java线程同步以及对象锁和类锁解析(多线程synchronized关键字)

    一.关于线程安全 1.是什么决定的线程安全问题? 线程安全问题基本是由全局变量及静态变量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的:若有多个线 ...