System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及截屏,特别是涉及一种基于安卓操作系统的长截屏实现方法及系统、存储介质。
技术介绍
1、android原生版本12之前都没有自带的长截屏功能,但目前的移动设备应用中界面内容丰富,往往一个屏幕是无法显示完整的,都是需要滚动屏幕查看的,在用户想要截屏给其他人展示类似界面的所有内容时,长截屏功能就显得非常重要,所以android版本12之前都需要各个手机厂商自己实现长截屏的功能。
2、现有常见不侵入原生系统的长截屏实现方法多分为三个步骤,第一步是模拟滚动屏幕并截取单屏截图,重复此过程;第二步是裁剪截图中重复的部分;最后一步是将所有截图拼接起来得到长截屏。此拼接多张截图实现长截屏功能的方案常常会存在长截图有重复或缺失的情况,常规想要较为精准的去重就得完整对比整张图片,而全图片的比对就会带来速度慢的问题。因此,需要提供一种能够在不侵入android原生系统代码的情况下精准找到截图过程中的重复部分的技术问题的方法。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够在不侵入android原生系统代码的情况下精准找到截图过程中的重复部分,且解决现有技术中速度慢技术问题的基于安卓操作系统的长截屏实现方法及系统、存储介质。
2、本专利技术技术方案如下:
3、一种基于安卓操作系统的长截屏实现方法,所述方法包括:
4、步骤s100:获取开启长截屏的长截屏开启指令;
5、步骤s200:根据所述长截屏开启指令截取前台应用的当前屏
6、步骤s300:控制所述前台应用进行模拟屏幕滚动,自模拟滚动起点自下往上滚动至模拟滚动终点,并对每次模拟屏幕滚动时的所述前台应用进行截图,获取多次屏幕截图,其中,所述模拟滚动起点和所述模拟滚动终点预先设置;
7、步骤s400:根据所述模拟滚动终点设定对比块,设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;
8、步骤s500:将裁剪完的所有过程屏幕截图进行拼接并生成长截图。
9、具体而言,步骤s400:根据所述模拟滚动终点设定对比块,设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;具体包括:
10、步骤s410:根据所述模拟滚动终点设定预定截取高度,其中,所述预定截取高度大于列表类界面中的最大空白间隔,其中,所述列表类界面预先存储;
11、步骤s420:将所述模拟滚动终点向下移动所述预定截取高度,并将未移动前所述模拟滚动终点与移动后所述模拟滚动终点之间的区域设定为对比块;
12、步骤s430:设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分。
13、具体而言,步骤s430:设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;具体包括:
14、步骤s431:获取屏幕宽度像素点,并根据所述屏幕宽度像素点设定基准点;
15、步骤s432:根据所述基准点和所述对比块从各所述过程屏幕截图中前后两张过程屏幕截图中找出重复块;
16、步骤s433:将所述重复块裁掉,以实现裁剪掉重复部分。
17、具体而言,步骤s432中,前一张过程屏幕截图为第一屏幕截图,后一张过程屏幕截图为第二屏幕截图;
18、所述根据所述基准点和所述对比块从任意前后两张过程屏幕截图中找出重复块的步骤,具体包括:
19、步骤s4321:求所述第一屏幕截图的模拟滚动起点与模拟滚动终点间各行基准点的和,并放到int数组array1中,求第二屏幕截图头部对比块高度部分各行基准点的和,并放到int数组array2中,其中,所述int数组array1和所述int数组array2的长度代表了所求基准点的行数,即截图以像素点为单位的高度;
20、步骤s4322:从b1尾部开始自下往上寻找重复位置,其中,设int类型的变量compareindex,数值等于int数组array2的长度;
21、步骤s4323:从int数组array1中array1长度减去compareindex的位置开始,依次与int数组array2的各项做比较,若出现不相同,compareindex加1;
22、步骤s4324:重复步骤s4323,若比较后出现完全相同则根据比较结果生成重复块。
23、具体而言,步骤s100:获取开启长截屏的长截屏开启指令,之后还包括:
24、步骤s110:在前台应用之上设定覆盖透明窗口;
25、步骤s120:在所述透明窗口的中间设置预设缝隙,其中,所述预设缝隙为一条预存像素宽且高度充满屏幕的空隙。
26、具体而言,一种基于安卓操作系统的长截屏实现系统,所述系统包括:
27、截屏指令获取模块,用于获取开启长截屏的长截屏开启指令;
28、当前应用截屏模块,用于根据所述长截屏开启指令截取前台应用的当前屏幕截图,其中,所述前台应用为当前可见并正在用于与用户交互的应用;
29、模拟滚动截屏模块,用于控制所述前台应用进行模拟屏幕滚动,自模拟滚动起点自下往上滚动至模拟滚动终点,并对每次模拟屏幕滚动时的所述前台应用进行截图,获取多次屏幕截图,其中,所述模拟滚动起点和所述模拟滚动终点预先设置;
30、基准比对裁重模块,用于根据所述模拟滚动终点设定对比块,设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;
31、截图拼接生成模块,用于将裁剪完的所有过程屏幕截图进行拼接并生成长截图。
32、具体而言,所述基准比对裁重模块还用于:
33、根据所述模拟滚动终点设定预定截取高度,其中,所述预定截取高度大于列表类界面中的最大空白间隔,其中,所述列表类界面预先存储;
34、将所述模拟滚动终点向下移动所述预定截取高度,并将未移动前所述模拟滚动终点与移动后所述模拟滚动终点之间的区域设定为对比块;
35、设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分。
36、具体而言,所述基准比对裁重模块还用于:
37、获取屏幕宽度像素点,并根据所述屏幕宽度像素点设定基准点;
38、根据所述基准点和所述对比块从各所述过程屏幕截图中前后两张过程屏幕截图中找出重复块;
39、将所述重复块裁掉,以实现裁剪掉重复部分。
40、具体而言,前一张过程屏幕截图为第一屏幕截图,后一张过程屏幕截图为第二屏幕截图,所述基准比对裁重模块还本文档来自技高网...
【技术保护点】
1.一种基于安卓操作系统的长截屏实现方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于安卓操作系统的长截屏实现方法,其特征在于,步骤S400:根据所述模拟滚动终点设定对比块,设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;具体包括:
3.根据权利要求2所述的基于安卓操作系统的长截屏实现方法,其特征在于,步骤S430:设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;具体包括:
4.根据权利要求3所述的基于安卓操作系统的长截屏实现方法,其特征在于,步骤S432中,前一张过程屏幕截图为第一屏幕截图,后一张过程屏幕截图为第二屏幕截图;
5.根据权利要求1-4任一项所述的基于安卓操作系统的长截屏实现方法,其特征在于,步骤S100:获取开启长截屏的长截屏开启指令,之后还包括:
6.一种基于安卓操作系统的长截屏实现系统,其特征在于,所述系统包括:
7.根据权利要求6所述的基于安卓操作系统的
8.根据权利要求7所述的基于安卓操作系统的长截屏实现系统,其特征在于,所述基准比对裁重模块还用于:
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种基于安卓操作系统的长截屏实现方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于安卓操作系统的长截屏实现方法,其特征在于,步骤s400:根据所述模拟滚动终点设定对比块,设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;具体包括:
3.根据权利要求2所述的基于安卓操作系统的长截屏实现方法,其特征在于,步骤s430:设定基准点,并根据所述对比块和所述基准点对各所述过程屏幕截图中前后两张过程屏幕截图进行去重,以裁剪掉重复部分;具体包括:
4.根据权利要求3所述的基于安卓操作系统的长截屏实现方法,其特征在于,步骤s432中,前一张过程屏幕截图为第一屏幕截图,后一张过程屏幕截图为第二屏幕截图;
5.根据权利要求1-4...
【专利技术属性】
技术研发人员:任家豪,江南,梅俊明,
申请(专利权)人:上海卓易科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。