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
不知道這個問題如何解決,如果有哪位哥們知道解決方案,盼望告訴我,先謝啦。
我就不發代碼了,李先靜的博客里面
有個例子,可以直接使用。