android下截屏的思路很簡(jiǎn)單,就是去讀framebuffer,android下framebuffer在/dev/graphics/fb0而不是linux下的/dev/fb0,讀完以后保存圖像數(shù)據(jù)到文件即可。至于保存成png格式還是jpg格式都可以,有相應(yīng)的庫(kù)支持就可以了。
我承認(rèn),我沒(méi)有完全的把這個(gè)功能作完整,因?yàn)榕龅搅藱?quán)限的問(wèn)題。也就是在打開(kāi)/dev/graphics/fb0這個(gè)文件因?yàn)闆](méi)有權(quán)限的緣故而失敗了,那么接下來(lái)的讀取framebuffer的步驟也就沒(méi)有辦法執(zhí)行了。
目前所能做到的則是將截屏程序編譯成可執(zhí)行程序,在有root權(quán)限的機(jī)器上執(zhí)行這個(gè)可執(zhí)行程序,運(yùn)行正常。
當(dāng)我把代碼編譯成動(dòng)態(tài)鏈接庫(kù),在java端調(diào)用時(shí),不能夠成功。這是因?yàn)闄?quán)限的問(wèn)題,權(quán)限被屏蔽的這部分代碼可以在android的源碼:system/core/init/devices.c中找到,可以看到只有root用戶或者屬于graphics組的用戶才可以訪問(wèn)/dev/graphics/fb0
不知道這個(gè)問(wèn)題如何解決,如果有哪位哥們知道解決方案,盼望告訴我,先謝啦。
我就不發(fā)代碼了,李先靜的博客里面
有個(gè)例子,可以直接使用。