CN108347452A - 远程获取屏幕截图的方法及装置 - Google Patents

远程获取屏幕截图的方法及装置 Download PDF

Info

Publication number
CN108347452A
CN108347452A CN201710049859.5A CN201710049859A CN108347452A CN 108347452 A CN108347452 A CN 108347452A CN 201710049859 A CN201710049859 A CN 201710049859A CN 108347452 A CN108347452 A CN 108347452A
Authority
CN
China
Prior art keywords
sectional drawing
screenshot capture
control host
adb
android
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710049859.5A
Other languages
English (en)
Inventor
孙增昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710049859.5A priority Critical patent/CN108347452A/zh
Publication of CN108347452A publication Critical patent/CN108347452A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种远程获取屏幕截图的方法,包括:接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机;在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值;接收所述控制主机根据所述返回值发送的截图参数;根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。此外,本发明实施例还公开了一种远程获取屏幕截图的装置。采用本发明,可提高获取屏幕截图的成功率。

Description

远程获取屏幕截图的方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种远程获取屏幕截图的方法及装置。
背景技术
近年来,随着互联网络技术和移动通信网络技术的飞速发展,智能手机、平板电脑等移动终端已经成为大众必不可少的随身物品。用户可以通过移动终端分享自己感兴趣的内容,例如,当用户通过手机浏览到自己感兴趣的内容时,可以控制手机获取当前屏幕显示界面对应的屏幕信息并分享。例如,将截屏获取的图片发送给其他用户进行分享,或者,通过截屏获取一段时间内的屏幕数据生成屏幕数据对应的录像。进一步的,截屏或者录屏的相关数据不仅可以用来分享给其他用户,还可以用于在远程调试移动终端时获取移动终端上的屏幕数据。
目前,主要的获取屏幕信息的方法包括以下3种:第一,通过安卓***的私有API,直接从安卓软件***层面获取屏幕数据;第二,通过读取移动终端中的FrameBuffer(帧缓冲)中的原始数据;第三,使用安卓***自带的截图工具screencap。但是,对于上述三种截图方式来讲,通过安卓***的私有API获取屏幕数据虽说获取数据的速度较快,但是,其依赖于安卓***的私有API,不同的版本会有不同的支持,也就是说,部分设备是不支持这种截图方式的,即会导致截图失败;而通过读取帧缓冲来获取屏幕数据的方式,读取到的是原始数据,需要做一些颜色空间转换后再处理,这就导致了有的rom在读取帧缓冲时需要root权限,若不具备相应的root权限则会导致读取到的数据为空,即获取屏幕数据失败;在通过安卓***自带的截图工具获取屏幕数据时,其对应的数据获取速度较其他方式获取屏幕数据要慢,且因为截图工具在***中的安装路径是不固定的,在使用时需要进行遍历或查找才能正常使用,并且,部分厂家不提供该种工具,也就是说,这种获取屏幕数据的方式也存在部分设备无法适配的问题。
综上,在现有的获取屏幕数据的方式中,没有一种截图方式能适配所有的设备或者***,从而导致在某些设备上会无法完成截图或者获取屏幕数据失败;也就是说,上述获取屏幕数据的方案中的任意一种均不能适用所有的机型,存在适用性不足的问题。
发明内容
基于此,为解决传统技术中的获取屏幕数据的方案中因为不能适用所有机型导致在部分设备上获取屏幕数据失败而存在的适用性不足的技术问题,特提出了一种远程获取屏幕截图的方法。
一种远程获取屏幕截图的方法,包括:
接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机;
在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值;
接收所述控制主机根据所述返回值发送的截图参数;
根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。
可选的,在其中一个实施例中,所述调用安卓私有截图接口为通过minicap框架间接调用安卓私有截图接口。
可选的,在其中一个实施例中,所述截图工具接口为screencap工具接口。
可选的,在其中一个实施例中,所述读取帧缓冲为读取FrameBuffer的/dev/graphics/fb0文件描述符数据。
可选的,在其中一个实施例中,所述接收控制主机的远程发送的屏幕录制指令之前还包括:
通过ADB工具与控制主机建立ADB连接;
所述方法还包括:
通过所述ADB连接接收所述控制主机发送的屏幕录制指令和截图参数;
通过所述ADB连接向所述控制主机发送屏幕截图。
可选的,在其中一个实施例中,所述通过ADB工具与控制主机建立ADB连接包括:
与所述控制主机建立USB连接,在所述USB连接的基础上通过ADB工具与控制主机建立ADB连接。
可选的,在其中一个实施例中,所述通过ADB工具与控制主机建立ADB连接包括:
与所述控制主机建立TCP/IP协议的网络连接,在所述TCP/IP协议的网络连接的基础上通过ADB工具与控制主机建立ADB连接。
此外,为解决传统技术中的获取屏幕数据的方案中因为不能适用所有机型导致在部分设备上获取屏幕数据失败而存在的适用性不足的技术问题,特提出了一种远程获取屏幕截图的装置。
一种远程获取屏幕截图的装置,包括:
安卓私有截图接口调用模块,用于接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机;
截图失败返回模块,用于在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值;
截图参数接收模块,用于接收所述控制主机根据所述返回值发送的截图参数;
屏幕截图重新获取模块,用于根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。
可选的,在其中一个实施例中,所述安卓私有截图接口调用模块还用于通过minicap框架间接调用安卓私有截图接口。
可选的,在其中一个实施例中,所述截图工具接口为screencap工具接口。
可选的,在其中一个实施例中,所述读取帧缓冲为读取FrameBuffer的/dev/graphics/fb0文件描述符数据。
可选的,在其中一个实施例中,所述装置还包括ADB连接建立模块,用于通过ADB工具与控制主机建立ADB连接;所述安卓私有截图接口调用模块还用于通过所述ADB连接接收所述控制主机发送的屏幕录制指令;所述截图参数接收模块还用于通过所述ADB连接接收所述控制主机根据所述返回值发送的截图参数;所述安卓私有截图接口调用模块还用于通过所述ADB连接向所述控制主机发送屏幕截图。
可选的,在其中一个实施例中,所述ADB连接建立模块还用于与所述控制主机建立USB连接,在所述USB连接的基础上通过ADB工具与控制主机建立ADB连接。
可选的,在其中一个实施例中,所述ADB连接建立模块还用于与所述控制主机建立TCP/IP协议的网络连接,在所述TCP/IP协议的网络连接的基础上通过ADB工具与控制主机建立ADB连接。
实施本发明实施例,将具有如下有益效果:
采用了上述远程获取屏幕截图的方法和装置之后,在移动终端接收到控制主机发送的屏幕录制指令之后,优先采用截屏速度最快的调用安卓私有截图接口来获取屏幕截图,在屏幕截图获取成功的情况下,将获取到的屏幕截图发送给控制主机;并且,在移动终端不支持安卓私有截图接口或者调用安卓私有截图接口失败的情况下,通过控制主机确定采用调用截图工具接口或者读取帧缓冲来重新获取屏幕截图。也就是说,对于常用的3种截图方式,优先采用截图速度最快的调用安卓私有截图接口的方式来获取屏幕截图,只有在该种截图方式失败的情况下转而采用另外两种截图方式来获取屏幕截图,直至屏幕截图获取成功。相对于传统技术中单独采用某一个指定的截图方式来获取屏幕截图的方案来讲,优先采用截屏速度最快的调用安卓私有截图接口来获取屏幕截图在尽量保证了屏幕截图数据获取的速度,并且,自动在一种截图方式失败或者崩溃的情况下切换其他截图方式的方案保证了屏幕截图数据获取的连续性和成功率,并且适用范围更广。也就是说,采用了上述远程获取屏幕截图的方法和装置之后,提高了屏幕截图数据获取的速度、成功率以及适用范围,提升了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为一个实施例中一种远程获取屏幕截图的***的结构示意图;
图2为另一个实施例中一种远程获取屏幕截图的***的示意图;
图3为一个实施例中一种远程获取屏幕截图的方法的流程示意图;
图4为一个实施例中现有的基于STF工具的minicap模块获取屏幕截图的结构示意图;
图5为一个实施例中基于STF工具的minicap模块的获取屏幕截图的结构示意图;
图6为另一个实施例中一种远程获取屏幕截图的方法的流程示意图;
图7为一个实施例中一种远程获取屏幕截图的装置的结构示意图;
图8为一个实施例中运行前述远程获取屏幕截图的方法的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为解决传统技术中的获取屏幕数据的方案中因为不能适用所有机型导致在部分设备上获取屏幕数据失败而存在的适用性不足的技术问题,在本实施例中,特提出了一种远程获取屏幕截图的机制,该机制的实现基于远程获取屏幕截图的***,如图1所示,上述远程获取屏幕截图的***包括控制主机10和移动终端20。
上述远程获取屏幕截图的机制包括了运行于移动终端20上的远程获取屏幕截图的方法以及运行于控制主机10上的相应的操作步骤。具体的,运行于移动终端20上的远程获取屏幕截图的方法的实现可依赖于计算机程序,该计算机程序可运行于基于冯诺依曼体系的计算机***之上,该计算机程序可以是屏幕截图获取的应用程序。该计算机***可以是运行上述计算机程序的例如智能手机、平板电脑等基于安卓***的移动终端设备。进一步的,运行于控制主机10上的相关操作的实现也是基于冯诺依曼体系的计算机***之上,该计算机程序可以是远程控制应用或者远程调试应用的应用程序;上述控制主机可以是个人电脑(Personal Computer,PC)或者服务器等设备,且在控制主机上安装了远程调试工具或其他可以通过控制主机来控制移动终端的应用程序。
需要说明的是,在本实施例中,上述移动终端20与控制主机10之间建立了远程控制连接;例如,该移动终端可以通过USB、WIFI等方式建立与控制主机之间的通信连接。例如,在图1所示的应用场景中,移动终端20与控制主机10之间可以通过USB(UniversalSerial Bus,通用串行总线)或者WIFI等网络连接方式建立二者之间的通信连接。在移动终端20与控制主机10之间的通信连接建立成功之后,控制主机10可以向移动终端20发送相应的控制指令或者其他数据,移动终端20也可以向控制主机10发送屏幕截图数据或者其他数据。
在对远程获取屏幕截图的方法的具体步骤和具体操作进行阐述之前,首先对控制主机10与移动终端20之间的连接的建立进行说明。
下面以移动终端20与控制主机10之间的连接为ADB连接为例进行说明,需要说明的是,在本实施例中,控制主机10与移动终端20之间的通信连接可以是ADB连接但是局对不限于ADB连接,只要可以实现通过控制主机10来控制移动终端20上的操作或者向移动终端20发送命令和数据即可,并且,可以在控制主机10上可以展示移动终端20的显示界面上展示的屏幕信息。
在本实施例中,控制主机10上展示的与移动终端20对应的显示界面中,显示的是与移动终端20同步的屏幕数据,也就是说,移动终端20在获取到了屏幕截图的相关数据之后,将该屏幕截图的相关数据发送给控制主机10,由控制主机10根据接收到的屏幕截图的相关数据在控制主机上进行展示,并且,还可以是以视频的方式进行展示或者生成与之相应的相关视频数据并保存。
例如,在如图2所示的应用场景中,移动终端20的显示界面上对应的屏幕信息通过屏幕截图到的方式获取并发送给控制主机10,并且在控制主机10上对应的展示区域101中进行展示。
具体的,移动终端通过ADB工具与控制主机建立ADB连接。
ADB,即Android Debug Bridge(安卓调试桥接),是Android SDK(Androidsoftware development kit,安卓***专属的软件开发工具包)中的一个工具,使用ADB可以直接操作管理安卓模拟器或者真实的安卓设备。移动终端与控制主机之间的ADB连接即建立移动终端中的ADB与控制主机上相应的调试工具之间的通讯连接,使得控制主机可以发送相应的ADB指令给移动终端。在移动终端与控制主机之间的ADB连接建立之后,控制主机即可向移动终端发送ADB指令对移动终端进行调试,并且,移动终端也可以通过上述ADB连接来向控制主机发送数据。
在一个具体的实施例中,所述通过ADB工具与控制主机建立ADB连接包括:与所述控制主机建立USB连接,在所述USB连接的基础上通过ADB工具与控制主机建立ADB连接。
需要说明的是,在实施例中,移动终端为基于安卓***的终端设备,即在移动终端中安装了SDK工具,即安装了ADB工具。并且,控制主机上也安装有相应的调试工具,通过控制主机上的调试工具建立与移动终端上的ADB工具之间的ADB连接。具体的,在通过USB数据线连接控制主机和移动终端之后,移动终端侧会通过USB接口检测到控制主机,控制主机通过USB接口也可以检测到相应的通过USB数据线链接的移动终端,即控制主机与移动终端之间建立了USB连接,在USB连接的基础上,进一步的建立控制主机与移动终端之间的ADB连接。
在另一个具体的实施例中,所述通过ADB工具与控制主机建立ADB连接包括:与所述控制主机建立的网络连接,在所述TCP/IP协议的网络连接的基础上通过ADB工具与控制主机建立ADB连接。
需要说明的是,在实施例中,移动终端为基于安卓***的终端设备,即在移动终端中安装了SDK工具,即安装了ADB工具。并且,控制主机上也安装有相应的调试工具,通过控制主机上的调试工具建立与移动终端上的ADB工具之间的ADB连接。具体的,移动终端与控制主机之间的网络连接的建立可以是控制主机上输入与移动终端对应的地址来建立的,也就是说,移动终端与控制主机之间建立的是基于TCP/IP协议(Transmission ControlProtocol/Internet Protocol,传输控制协议/因特网互联协议,又称为网络通讯协议)的网络连接。控制主机与移动终端之间可以通过上述TCP/IP协议的网络连接进行数据通信。在此网络连接的基础上,移动终端通过终端上的ADB工具建立与控制主机之间的ADB连接,以便控制主机对移动终端进行控制。
需要说明的是,在建立了控制主机与移动终端之间的例如ADB连接的通信连接之后,即可通过控制主机来远程或移动终端上的屏幕截图对应的数据。下面对远程获取屏幕截图的过程进行详细的阐述。
如图3所示,上述运行于移动终端20上的远程获取屏幕截图的方法包括如图3所示的步骤S102-S108:
步骤S102:接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机。
在本实施例中,用户可以通过控制主机远程控制移动终端,为了方便用户可以在控制主机上对移动终端进行操控,还需要获取移动终端上对应的屏幕信息并展示在控制主机上。
在本实施例中,控制主机可以向移动终端发送屏幕录制指令,以便移动终端获取相应的屏幕截图数据并返回给控制主机。需要说明的是,在本实施例中,控制数据向移动终端发起的屏幕录制指令可以是在控制主机与移动终端之间的通信连接建立之后即触发的,也就是说,在控制主机与移动终端之间的通信连接建立陈宫之后,用户即可通过控制主机对移动终端进行操控,而此时就需要移动终端上的屏幕信息,从而触发生成屏幕录制指令并发送给移动终端。
在另一个实施例中,屏幕录制指令还可以是用户输入的,也就是说,在移动终端与控制主机之间建立了通信连接之后,若用户需要通过控制主机对移动终端进行操作或者调试,即向移动终端发送屏幕录制指令,以便移动终端获取相应的屏幕信息并返回给控制终端。
需要说明的是,在本实施例中,屏幕录制指令的触发还可以是由其他事件触发的,而不限于上述给出的实例。
在移动终端接收到控制主机远程发送的屏幕录制指令之后,根据接收到的屏幕录制指令开始相应的屏幕截图获取操作。
具体的,在本实施例中,优先使用安卓私有截图接口获取屏幕截图,即调用安卓***的私有API(Application Programming Interface,应用程序编程接口)来获取屏幕截图,也就是说,直接调用安卓***中预先定义的截图接口的接口函数来获取屏幕截图。
在一个具体的实施例中,所述调用安卓私有截图接口为通过minicap框架间接调用安卓私有截图接口。
具体的,minicap为移动终端上安装的STF工具(即Smartphone Test Farm)中的一个模块,负责从移动终端设备中获取屏幕信息,可以用来代替安卓***中安装的截图工具(如screencap工具)。并且,使用安卓***中原生的screencap工具获取屏幕截图的速度是非常缓慢的,而使用STF工具中的minicap模块获取屏幕截图的速度是非常快的;也就是说,在获取屏幕截图的过程中用minicap框架来代替安卓***中远程的screencap工具可以加快屏幕截图获取的速度。
具体的,minicap模块调用安卓***的私有API来获取屏幕数据,得到数据后通过针对安卓设备的图像压缩库libjpeg-turbo得到jpeg格式的图像数据,即屏幕截图对应的jpeg格式的图像数据。
需要说明的是,在安装了STF工具之后,在通过调用minicap调用安卓***的私有API来获取屏幕数据时,不需要移动终端的root权限,而在安卓***的私有API的调用过程中,低版本使用ScreenshotClient、高版本使用virtual display来完成对安卓***的私有API的调用。
需要说明的是,在本实施例中,上述通过minicap模块来获取屏幕数据的过程是通过移动终端侧的后台进程完成的。
在现有技术中,通过STF工具的minicap模块来获取屏幕截图的结构图可如图4所示,移动终端侧的后台进程中通过可执行文件和针对各个SDK版本或平台的共享库文件,获取图像数据之后,结合服务器端程序将图像数据传输出去,从而使得控制主机侧可以接收到移动终端发送的屏幕截图。也就是说,移动终端侧只能单纯的从手机后台进程单向的读取数据,而不能向手机后台进程发送数据或者发送控制指令。
在本实施例中,为了使控制主机可以向移动终端的后台进程发送指令以达到控制移动终端的目的,移动终端侧的后台进程与服务器的后台进程之间是双向的数据传输通道,以便移动终端可以将屏幕截图发送给控制主机,而控制主机也可以发送控制指令给移动终端。具体可如图5所示,在图5所示的结构示意图中,控制主机侧的后台进程可以与移动终端侧的后台之间双向的进行数据通讯。
步骤S104:在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值。
在本实施例中,因为调用安卓私有截图接口来获取屏幕截图依赖于安卓***的私有API,而在部分rom中禁止了上述私有API,从而导致了部分设备不支持调用安卓私有截图接口来获取屏幕截图,也就是说,这不支持调用安卓私有截图接口的终端设备上,步骤S102中调用安卓私有截图接口来获取屏幕截图的操作会因为错误而导致屏幕截图获取失败。需要说明的是,在本实施例中,还可能存在其他导致调用安卓私有截图接口获取屏幕截图失败的情况,在本实施例中不作限制。
在本步骤中,若移动终端的安卓私有截图接口因为被禁止或者其他原因导致安卓私有截图接口不存在,或者在调用安卓私有接口失败,或者在调用安卓私有接口获取屏幕截图失败的情况下,就不再继续调用移动终端的安卓***的私有截图接口继续完成获取屏幕截图的操作,而是直接生成截图失败的返回值并返回给控制主机,由控制主机来决定下一步的操作。
步骤S106:接收所述控制主机根据所述返回值发送的截图参数。
控制主机在接收到移动终端因为调用安卓私有截屏接口获取屏幕截图返回的截图失败的返回值时,确定接下来获取屏幕截图的操作方式,例如,采用何种方式来进行截图,是继续调用安卓私有截图接口还是换用其他方式来获取屏幕截图。
具体的,在本实施例中,控制主机在接收到移动终端因为调用安卓私有截屏接口获取屏幕截图返回的截图失败的返回值之后,确定重新获取屏幕截图的截图参数,且截图参数包括截图方式和相关参数。具体的,截图方式即为采用何种截图方式进行截图,在本实施例中,截图方式包括了调用截图工具接口和读取帧缓冲;相关参数包括了截图频率(即获取屏幕截图帧图像的时间间隔)、截图区域(是整个屏幕显示区域还是指定的区域)等,需要说明的是,在本实施例中,相关参数并不限于上述给出的截图频率、截图区域,还可以包括其他未列举出来的与截图过程中相关的具体参数。
调用截图工具接口来获取屏幕截图指的是调用安卓***中安装的截图工具(可以是***自带的,也可以是用户安装的),例如,安卓***的screencap工具。也就是说,调用安卓***自带的screencap工具来获取移动终端的显示界面上的屏幕截图。
读取帧缓冲获取屏幕截图即为通过读取移动终端中的FrameBuffer(帧缓冲)中的原始数据,即读取FrameBuffer的/dev/graphics/fb0文件描述符数据然后对获取到的原始数据做一些颜色空间转换后再处理,最后生成屏幕截图对应的图片格式的图像数据。
需要说明的是,在本实施例中,调用截图工具接口来获取屏幕截图的方式,因为需要调用相应的截图工具screencap来完成相应的操作,并且,该截图工具安装的位置不一定,需要进行遍历或者查找才能确定相应的其具体的位置,这就导致了采用该种方式获取屏幕截图的是最慢的,并且并不是所有的机型上都提供了该截图工具。也就是说,调用截图工具接口获取屏幕截图并不能适用所有的机型,并且,其获取屏幕截图的速度较其他方式慢。
在另一个实施例中,读取帧缓冲来获取屏幕截图的方式因为读取到的是原始数据,需要做一些颜色空间转换后再处理,这就导致了有的rom在读取帧缓冲时需要root权限,否则会倒是读取到的数据为空,即获取屏幕数据失败。也就是说,通过读取帧缓冲来获取屏幕截图的方式因为需要root权限而不是所有的rom都具备root权限,这就导致了部分设备在通过读取帧缓冲获取屏幕截图时会截图失败。
综上所述,无论是调用安卓***私有API还是调用截图工具接口或读取帧缓冲获取屏幕截图中任意一种方式都不可能适配所有的设备,因此,在本实施例中,为了适应所有的情况,在本实施例中,优先采用调用安卓***私有API获取屏幕截图的方式来获取屏幕截图,因为该种方式下获取屏幕截图的速度是最快的,即步骤S102。而在步骤S102中采用调用安卓***私有API获取屏幕截图的方式来获取屏幕截图的过程中,检测到移动终端中安卓私有截图接口不存在或者在调用安卓私有截图接口失败时,则采用另外两种方式来获取屏幕截图。
具体的,控制主机在步骤S106中发送给移动终端的截图参数中就包括了截图方式,即确定了采用调用截图工具接口的方式还是读取帧缓冲的方式来获取屏幕截图。
步骤S108:根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。
移动终端在接收到控制主机发送的截图参数之后,获取所有的截图参数,并对接收到的截图参数进行解析,即确定接下来的截图方式,以及获取屏幕截图时的具体的相关参数,例如,截图频率等。
根据截图参数中包括的截图方式和相关参数,采用根据截图参数确定的目标截图方式(调用截图工具接口或读取帧缓冲)获取屏幕截图,并将获取到的屏幕截图发送给控制主机。
需要说明的是,在获取屏幕截图时,还获取与该屏幕截图对应的时间戳,并一并发送给控制主机,由控制主机根据时间戳和屏幕截图在控制主机上进行展示,或者,生成相应的视频数据。
需要说明的是,若在步骤S108中,根据截图参数调用截图工具接口或读取帧缓冲获取屏幕截图的过程中,若截图工具接口不存在或者不具备root权限,均会导致相应的屏幕截图获取失败,在此种情况下,移动终端会生成截图失败的返回值给控制主机由控制主机确定下一步的操作。
具体实施中,在图5所示的结构图中,在移动终端侧的后台进程中与STF工具的minicap模块对应的可执行文件中,在原minicap的技术上添加与截图工具接口和读取帧缓存相关支持,也就是说,控制主机侧的后台进程的指令动态实时的切换截图方式和相关参数,移动终端与控制主机侧的双向数据传输通道不仅用于向控制主机传输屏幕截图的相关数据,还用来传输控制主机侧发送的相关指令。
具体的,可如图6所示,在图6所示的流程示意图中,在移动终端接收到控制主机发送的屏幕录制指令之后,即默认优先通过minicap来调用安卓***私有API来获取屏幕截图,若移动终端不支持minicap调用安卓***私有API的截图方式,则生成截图失败的返回值给控制主机,由控制主机确定下一步的截图方式。在图6所示的应用场景中,在通过minicap调用安卓***私有API获取屏幕截图失败的情况下,调用截图工具接口(即screencap)来获评屏幕截图,并且,若获取屏幕截图失败,则选择常识通过读取帧缓冲的方式来获取屏幕截图。也就是说,按照一定的优先顺序,依次尝试不同的截图方式,总有一种能完成屏幕截图,或者,在上述3种截图方式均不支持的情况下,直接上报失败给控制主机和移动终端。
也就是说,在本实施例中,因为调用安卓***私有API来获取屏幕截图是上述三种截图方式中速度最快的,因为,为了保证屏幕截图获取的高效率,在本实施例中优先采用该种截图方式,并且,在该种截图方式获取屏幕截图失败的情况下,换用其他截图方式来获取屏幕截图,直至获取屏幕截图成功或者3种截图方式均失败才结束。即在尽量保证屏幕截图获取的速度的前提下,也保证了屏幕获取的成功率。一般来讲,某一个终端设备可能不支持上述3种截图方式中的一种甚至两种,但是会支持最后一种截图方式;也就是说,采用了上述获取屏幕截图的方法之后,只要终端设备支持上述3种截图方式中的至少一个截图方式即可完成屏幕截图的获取,提高了屏幕截图获取的成功率。
需要说明的是,在本实施例中,屏幕截图的获取的相关操作和步骤并不限于通过控制主机远程获取屏幕截图的方案中,还可以是任意的获取屏幕截图的应用场景,例如,分享图片或者录屏等,均可以采用上述屏幕截图的获取方式来提高屏幕截图获取的成功率。
进一步的,根据前述控制主机与移动终端之间通信连接的建立的相关说明,控制主机在向移动终端发送屏幕录制指令、以及向移动终端发送截图参数时,都是通过二者之间的通信连接发送的,例如,是通过二者之间的ADB连接发送的,即移动终端也是通过二者之间的ADB连接接收控制主机发送的屏幕录制指令和截图参数的。
进一步的,在本实施例中,移动终端在向控制主机发送屏幕截图时,也是通过移动终端与控制主机之间的通信连接(ADB连接)发送的,即控制主机是听过与移动终端之间的通信连接(ADB连接)接收移动终端发送的屏幕截图的。
此外,为解决传统技术中的获取屏幕数据的方案中因为不能适用所有机型导致在部分设备上获取屏幕数据失败而存在的适用性不足的技术问题,在一个实施例中,还提出了一种远程获取屏幕截图的装置,该装置基于上述图1所示的远程获取屏幕截图的***中的移动终端20。具体的,上述远程获取屏幕截图的装置如图7所示,包括安卓私有截图接口调用模块102、截图失败返回模块104、截图参数接收模块106、屏幕截图重新获取模块108,其中:
安卓私有截图接口调用模块102,用于接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机;
截图失败返回模块104,用于在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值;
截图参数接收模块106,用于接收所述控制主机根据所述返回值发送的截图参数;
屏幕截图重新获取模块108,用于根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。
可选的,在一个实施例中,安卓私有截图接口调用模块102还用于通过minicap框架间接调用安卓私有截图接口。
可选的,在一个实施例中,所述截图工具接口为screencap工具接口。
可选的,在一个实施例中,所述读取帧缓冲为读取FrameBuffer的/dev/graphics/fb0文件描述符数据。
可选的,在一个实施例中,如图7所示,上述装置还包括ADB连接建立模块110,用于通过ADB工具与控制主机建立ADB连接;
所述安卓私有截图接口调用模块102还用于通过所述ADB连接接收所述控制主机发送的屏幕录制指令;
所述截图参数接收模块106还用于通过所述ADB连接接收所述控制主机根据所述返回值发送的截图参数;
所述安卓私有截图接口调用模块102还用于通过所述ADB连接向所述控制主机发送屏幕截图。
可选的,在一个实施例中,ADB连接建立模块110还用于与所述控制主机建立USB连接,在所述USB连接的基础上通过ADB工具与控制主机建立ADB连接。
可选的,在一个实施例中,所述ADB连接建立模块110还用于与所述控制主机建立TCP/IP协议的网络连接,在所述TCP/IP协议的网络连接的基础上通过ADB工具与控制主机建立ADB连接。
实施本发明实施例,将具有如下有益效果:
采用了上述远程获取屏幕截图的方法和装置之后,在移动终端接收到控制主机发送的屏幕录制指令之后,优先采用截屏速度最快的调用安卓私有截图接口来获取屏幕截图,在屏幕截图获取成功的情况下,将获取到的屏幕截图发送给控制主机;并且,在移动终端不支持安卓私有截图接口或者调用安卓私有截图接口失败的情况下,通过控制主机确定采用调用截图工具接口或者读取帧缓冲来重新获取屏幕截图。也就是说,对于常用的3种截图方式,优先采用截图速度最快的调用安卓私有截图接口的方式来获取屏幕截图,只有在该种截图方式失败的情况下转而采用另外两种截图方式来获取屏幕截图,直至屏幕截图获取成功。相对于传统技术中单独采用某一个指定的截图方式来获取屏幕截图的方案来讲,优先采用截屏速度最快的调用安卓私有截图接口来获取屏幕截图在尽量保证了屏幕截图数据获取的速度,并且,自动在一种截图方式失败或者崩溃的情况下切换其他截图方式的方案保证了屏幕截图数据获取的连续性和成功率,并且适用范围更广。也就是说,采用了上述远程获取屏幕截图的方法和装置之后,提高了屏幕截图数据获取的速度、成功率以及适用范围,提升了用户体验。
在一个实施例中,如图8所示,图8展示了一种运行上述远程获取屏幕截图的方法的基于冯诺依曼体系的计算机***的终端,即移动终端20。该计算机***可以是智能手机、平板电脑、掌上电脑、笔记本电脑或个人电脑等终端设备。具体的,可包括通过***总线连接的外部输入接口1001、处理器1002、存储器1003和输出接口1004。其中,外部输入接口1001可选的可至少包括网络接口10012,并且通过该网络接口与控制主机10相连。存储器1003可包括外存储器10032(例如硬盘、光盘或软盘等)和内存储器10034。输出接口1004可至少包括显示屏10042等设备。
在本实施例中,本方法的运行基于计算机程序,该计算机程序的程序文件存储于前述基于冯诺依曼体系的计算机***的外存储器10032中,在运行时被加载到内存储器10034中,然后被编译为机器码之后传递至处理器1002中执行,从而使得基于冯诺依曼体系的计算机***中形成逻辑上的安卓私有截图接口调用模块102、截图失败返回模块104、截图参数接收模块106、屏幕截图重新获取模块108、ADB连接建立模块110。且在上述远程获取屏幕截图的方法执行过程中,输入的参数均通过外部输入接口1001接收,并传递至存储器1003中缓存,然后输入到处理器1002中进行处理,处理的结果数据或缓存于存储器1003中进行后续地处理,或被传递至输出接口1004进行输出。
具体的,处理器1002用于执行如下步骤:
接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机;
在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值;
接收所述控制主机根据所述返回值发送的截图参数;
根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。
可选的,在一个实施例中,处理器1002还用于执行通过minicap框架间接调用安卓私有截图接口。
可选的,在一个实施例中,处理器1002还用于执行调用screencap工具接口获取屏幕截图。
可选的,在一个实施例中,处理器1002还用于执行读取FrameBuffer的/dev/graphics/fb0文件描述符数据获取屏幕截图。
可选的,在一个实施例中,处理器1002还用于执行通过ADB工具与控制主机建立ADB连接;通过所述ADB连接接收所述控制主机发送的屏幕录制指令和截图参数;通过所述ADB连接向所述控制主机发送屏幕截图。
可选的,在一个实施例中,处理器1002还用于执行与所述控制主机建立USB连接,在所述USB连接的基础上通过ADB工具与控制主机建立ADB连接。
可选的,在一个实施例中,处理器1002还用于执行与所述控制主机建立TCP/IP协议的网络连接,在所述TCP/IP协议的网络连接的基础上通过ADB工具与控制主机建立ADB连接。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (14)

1.一种远程获取屏幕截图的方法,其特征在于,包括:
接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机;
在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值;
接收所述控制主机根据所述返回值发送的截图参数;
根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。
2.根据权利要求1所述的远程获取屏幕截图的方法,其特征在于,所述调用安卓私有截图接口为通过minicap框架间接调用安卓私有截图接口。
3.根据权利要求1所述的远程获取屏幕截图的方法,其特征在于,所述截图工具接口为screencap工具接口。
4.根据权利要求1所述的远程获取屏幕截图的方法,其特征在于,所述读取帧缓冲为读取FrameBuffer的/dev/graphics/fb0文件描述符数据。
5.根据权利要求1至4任一所述的远程获取屏幕截图的方法,其特征在于,所述接收控制主机的远程发送的屏幕录制指令之前还包括:
通过ADB工具与控制主机建立ADB连接;
所述方法还包括:
通过所述ADB连接接收所述控制主机发送的屏幕录制指令和截图参数;
通过所述ADB连接向所述控制主机发送屏幕截图。
6.根据权利要求5所述的远程获取屏幕截图的方法,其特征在于,所述通过ADB工具与控制主机建立ADB连接包括:
与所述控制主机建立USB连接,在所述USB连接的基础上通过ADB工具与控制主机建立ADB连接。
7.根据权利要求6所述的远程获取屏幕截图的方法,其特征在于,所述通过ADB工具与控制主机建立ADB连接包括:
与所述控制主机建立TCP/IP协议的网络连接,在所述TCP/IP协议的网络连接的基础上通过ADB工具与控制主机建立ADB连接。
8.一种远程获取屏幕截图的装置,其特征在于,包括:
安卓私有截图接口调用模块,用于接收控制主机的远程发送的屏幕录制指令,调用安卓私有截图接口获取屏幕截图,将所述获取的屏幕截图发送给控制主机;
截图失败返回模块,用于在所述安卓私有截图接口不存在或调用安卓私有截图接口失败时,向所述控制主机返回截图失败的返回值;
截图参数接收模块,用于接收所述控制主机根据所述返回值发送的截图参数;
屏幕截图重新获取模块,用于根据所述截图参数调用截图工具接口或读取帧缓冲获取屏幕截图,将获取的屏幕截图发送给控制主机。
9.根据权利要求8所述的远程获取屏幕截图的装置,其特征在于,所述安卓私有截图接口调用模块还用于通过minicap框架间接调用安卓私有截图接口。
10.根据权利要求8所述的远程获取屏幕截图的装置,其特征在于,所述截图工具接口为screencap工具接口。
11.根据权利要求8所述的远程获取屏幕截图的装置,其特征在于,所述读取帧缓冲为读取FrameBuffer的/dev/graphics/fb0文件描述符数据。
12.根据权利要求8至11任一所述的远程获取屏幕截图的装置,其特征在于,所述装置还包括ADB连接建立模块,用于通过ADB工具与控制主机建立ADB连接;
所述安卓私有截图接口调用模块还用于通过所述ADB连接接收所述控制主机发送的屏幕录制指令;
所述截图参数接收模块还用于通过所述ADB连接接收所述控制主机根据所述返回值发送的截图参数;
所述安卓私有截图接口调用模块还用于通过所述ADB连接向所述控制主机发送屏幕截图。
13.根据权利要求12所述的远程获取屏幕截图的装置,其特征在于,所述ADB连接建立模块还用于与所述控制主机建立USB连接,在所述USB连接的基础上通过ADB工具与控制主机建立ADB连接。
14.根据权利要求13所述的远程获取屏幕截图的装置,其特征在于,所述ADB连接建立模块还用于与所述控制主机建立TCP/IP协议的网络连接,在所述TCP/IP协议的网络连接的基础上通过ADB工具与控制主机建立ADB连接。
CN201710049859.5A 2017-01-23 2017-01-23 远程获取屏幕截图的方法及装置 Pending CN108347452A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710049859.5A CN108347452A (zh) 2017-01-23 2017-01-23 远程获取屏幕截图的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710049859.5A CN108347452A (zh) 2017-01-23 2017-01-23 远程获取屏幕截图的方法及装置

Publications (1)

Publication Number Publication Date
CN108347452A true CN108347452A (zh) 2018-07-31

Family

ID=62974443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710049859.5A Pending CN108347452A (zh) 2017-01-23 2017-01-23 远程获取屏幕截图的方法及装置

Country Status (1)

Country Link
CN (1) CN108347452A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109660661A (zh) * 2018-12-03 2019-04-19 北京云测信息技术有限公司 一种适用于安卓9.0***的远程真机截图方法
CN109766163A (zh) * 2019-01-17 2019-05-17 网易(杭州)网络有限公司 同步显示方法及装置、存储介质和电子装置
CN109996121A (zh) * 2019-04-12 2019-07-09 晶晨半导体(上海)股份有限公司 一种远程操控视频播放终端的方法
CN111158925A (zh) * 2019-12-05 2020-05-15 中移(杭州)信息技术有限公司 远程终端调试方法、终端、服务器及存储介质
CN113810675A (zh) * 2020-06-12 2021-12-17 北京小米移动软件有限公司 图像处理方法、装置、设备及存储介质
CN113805993A (zh) * 2021-09-03 2021-12-17 四川新网银行股份有限公司 一种快速连续截图的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2482476A1 (en) * 2003-10-24 2005-04-24 Microsoft Corporation Electronic sticky notes
CN102708540A (zh) * 2012-04-21 2012-10-03 上海量明科技发展有限公司 一种针对截屏区域进行缩放的方法及客户端
CN105227597A (zh) * 2014-06-10 2016-01-06 阿里巴巴集团控股有限公司 一种获取终端设备屏幕画面的方法、装置及***
CN105279006A (zh) * 2014-07-09 2016-01-27 腾讯科技(深圳)有限公司 基于Android***的屏幕截图方法及终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2482476A1 (en) * 2003-10-24 2005-04-24 Microsoft Corporation Electronic sticky notes
CN102708540A (zh) * 2012-04-21 2012-10-03 上海量明科技发展有限公司 一种针对截屏区域进行缩放的方法及客户端
CN105227597A (zh) * 2014-06-10 2016-01-06 阿里巴巴集团控股有限公司 一种获取终端设备屏幕画面的方法、装置及***
CN105279006A (zh) * 2014-07-09 2016-01-27 腾讯科技(深圳)有限公司 基于Android***的屏幕截图方法及终端

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109660661A (zh) * 2018-12-03 2019-04-19 北京云测信息技术有限公司 一种适用于安卓9.0***的远程真机截图方法
CN109766163A (zh) * 2019-01-17 2019-05-17 网易(杭州)网络有限公司 同步显示方法及装置、存储介质和电子装置
WO2020147246A1 (zh) * 2019-01-17 2020-07-23 网易(杭州)网络有限公司 同步显示方法及装置、存储介质和电子装置
US11340859B2 (en) 2019-01-17 2022-05-24 Netease (Hangzhou) Network Co., Ltd. Synchronous display method, storage medium and electronic device
CN109996121A (zh) * 2019-04-12 2019-07-09 晶晨半导体(上海)股份有限公司 一种远程操控视频播放终端的方法
CN111158925A (zh) * 2019-12-05 2020-05-15 中移(杭州)信息技术有限公司 远程终端调试方法、终端、服务器及存储介质
CN111158925B (zh) * 2019-12-05 2024-02-23 中移(杭州)信息技术有限公司 远程终端调试方法、终端、服务器及存储介质
CN113810675A (zh) * 2020-06-12 2021-12-17 北京小米移动软件有限公司 图像处理方法、装置、设备及存储介质
CN113810675B (zh) * 2020-06-12 2024-03-12 北京小米移动软件有限公司 图像处理方法、装置、设备及存储介质
CN113805993A (zh) * 2021-09-03 2021-12-17 四川新网银行股份有限公司 一种快速连续截图的方法
CN113805993B (zh) * 2021-09-03 2023-06-06 四川新网银行股份有限公司 一种快速连续截图的方法

Similar Documents

Publication Publication Date Title
CN108347452A (zh) 远程获取屏幕截图的方法及装置
CN111433743B (zh) 一种app远程控制方法及相关设备
CN112367543B (zh) 显示设备、移动终端、投屏方法及投屏***
WO2013060245A1 (zh) 用于移动终端的应用屏幕截图方法和装置
WO2020147246A1 (zh) 同步显示方法及装置、存储介质和电子装置
WO2018077041A1 (zh) 应用运行的方法及装置
CN102750067A (zh) 一种基于手持设备的大屏幕交互方法
CN103559150A (zh) 主机外置摄像头的实现方法和装置及移动终端
CN110795097B (zh) 一种页面处理方法、装置、计算机设备以及存储介质
US20090006977A1 (en) Method and System of Computer Remote Control that Optimized for Low Bandwidth Network and Low Level Personal Communication Terminal Device
CN110032512A (zh) 一种小程序的调试方法、相关设备及终端
EP1659754A1 (en) System and method for remotely controlling a debugging unit
CN105404455A (zh) 利用终端对移动终端实现截屏的方法及装置
KR20060009830A (ko) 인스턴트 메시징 툴 상에 가상 이미지를 표시하는 방법
CN114339332B (zh) 一种移动终端、显示设备及跨网投屏方法
CN114286165A (zh) 一种显示设备、移动终端及投屏数据传输方法
WO2022105409A1 (zh) 故障诊断方法、终端设备及显示设备
CN105872832A (zh) 视频通话方法和***以及显示装置
CN104301687A (zh) 应用于虚拟桌面环境的摄像头视频处理方法和相应设备
CN109840058A (zh) 云游戏数据采集方法及***
CN105516638A (zh) 一种视频通话方法、装置和***
CN113784200A (zh) 通信终端、显示设备及投屏连接方法
CN112269668A (zh) 一种应用资源共享及显示设备
CN114553844A (zh) 一种视频时屏幕共享的方法
CN107995524A (zh) 一种连接网络视频服务器的客户端***及其设计、数据处理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180731