android Native C 屏幕截图

转自:http://www.eoeandroid.com/thread-7829-1-1.html

想了很多截图的方法,最后还是发现这个最简单,和大家分享下。
就像很多linux系统一样,android其实也是个linux,所以当然也支持framebuffer技术。framebuffer是什么?网上查查吧。
所以主要的思路就是读取android系统下的 dev/graphics/fb0 这个文件了,再对这个文件进行处理转化成通常的bmp或者jpeg就行了。
具体的代码可以参考附件。这里用的是libjpeg这个开源的c库来把图片转成jpeg,附件里已附上可用的静态库和头文件。你也可以在android源码里找到jpeg这个项目,或者根据下面这篇文章进行移植
http://blog.sina.com.cn/s/blog_4a0a39c30100ckzd.html
至于最关键的转换问题,不好意思我确实不懂。我也是搬运网上的代码而已,有兴趣的可以研究下代码,不过个人感觉还是研究下framebuffer更好。
实例代码的原始链接


   ————————————不华丽的分割线————————————


下面还有个关键的问题,也是个老生常谈的问题了(至少对我来说)就是要读取 dev/graphics/fb0 这个文件需要的是root权限,在adb里我们很容易的就可以用root来运行,但到了java下却是无能为力了,官方给出的答案也是“否”。
详见
所以就算你用JNI除非你的真机有root权限或者像网上那个截图程序那样切换成有效的用户。这段代码的意义其实一点都不大。
还是这句话大家看看仅供学习好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值