android下截屏的思路很简单,就是去读framebuffer,android下framebuffer在/dev/graphics/fb0而不是linux下的/dev/fb0,读完以后保存图像数据到文件即可。至于保存成png格式还是jpg格式都可以,有相应的库支持就可以了。
我承认,我没有完全的把这个功能作完整,因为碰到了权限的问题。也就是在打开/dev/graphics/fb0这个文件因为没有权限的缘故而失败了,那么接下来的读取framebuffer的步骤也就没有办法执行了。
目前所能做到的则是将截屏程序编译成可执行程序,在有root权限的机器上执行这个可执行程序,运行正常。
当我把代码编译成动态链接库,在java端调用时,不能够成功。这是因为权限的问题,权限被屏蔽的这部分代码可以在android的源码:system/core/init/devices.c中找到,可以看到只有root用户或者属于graphics组的用户才可以访问/dev/graphics/fb0
不知道这个问题如何解决,如果有哪位哥们知道解决方案,盼望告诉我,先谢啦。
我就不发代码了,李先静的博客里面
有个例子,可以直接使用。