关于安卓截屏的研究,本人是经过比较长的时间努力的,可以说尝试了各种方法。如果我能凭自己的力量来解决的话,我是坚决不会做伸手党的。但是,各种方法尝试完却逐一以失败告终。首先,我先把我的问题讲清楚。然后,我再把我的各种失败经历都写上。最后,请有心人帮忙解决下我的问题。
我的问题是:我需要的安卓截屏,当然不是截取自身程序的画面,而是截取任意程序或者任意界面的画面。并且,截屏的速度必须在100毫秒内完成。(截屏到内存的时间在100毫秒内,保存位图到SD卡的时间不算在内)
以下是我各种方法的尝试经历:
第一种,利用SDK提供的View.getDrawingCache()方法。失败原因:只能截取自身程序的屏幕画面。
第二种,利用命令行“ScreenCap -P”。失败原因,截屏速度非常慢,在500毫秒到1500毫秒之间截取一次。
第三种,利用系统的隐藏API,Screenshot。这个需要系统权限,我按照网上教程将APK重新签名为系统权限。但是无效,无法截屏。失败原因:未知。这个只有自己去实践才知道,这个方法或许在安卓以前的版本是可行的。另外,反射来调用该API是无效的。
第四种,基于Android ddmlib进行截屏。失败原因,截屏速度非常慢,跟命令行截屏的速度差不多,可能还要差一点。
第五种,直接读取framebuffer。直接是不能读取framebuffer的,需要设置该文件的读写权限,这我是知道的。在安卓4.1.1版本,这是可行的方案,速度也极快,一般在30毫秒左右完成。但是,在安卓4.2版本以后,系统似乎对该方法进行了屏蔽。具体的表现是,第一次读取,能非常完美读取出屏幕图像。第二次,第三次读取的时候,你会发现,除了状态栏以外,其他部分都是空白的。关于这一点,我百思不得其解,不知道其原因是什么。而当你切换一下程序,或者切换下横屏竖屏时,再读取,那么又是一张完整的屏幕图像了。失败原因:未知。
第六种,利用一个开源项目android-screen-library来截屏。失败原因:速度极慢。
以上6种,可以说是我搜遍全网找到的6种截屏方式了。但是,无一能够满足我的需求。本人初学安卓不久,无力解决,请各位达人帮帮忙。在此谢过!
关于安卓4.4.2高速截屏如何实现
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-