网上关于framebuffer截屏的东西太多太多,原理也解释的一清二楚。
基本思路就是底层打开/dev/graphics/fb0(android设备,android底层就是linux,所以linux原理一样,只是位置不一样),mmap出一片内存。该内存保存了fb0的原始raw数据,然后将该原始数据压缩转化成png、jpg之类的图片。
大家可以 cat /dev/graphics/fb0 > xxx.raw ,该raw数据即为原始图片数据。
github上有个开源项目,fb2png 源码地址 git clone https://code.google.com/p/android-fb2png/
该项目就是利用上述原理去做的,如果android上层想要调用,写一个jni直接调用底层封装的接口就行。