bak 3.android 屏幕截图思路.

来源:互联网 发布:广州疯狂java 编辑:程序博客网 时间:2024/06/06 04:57

今天考虑了下,在android屏幕截图的思路.
当前有2种方式截图.
1.在手机上面,有款屏幕截图软件Screeshort 可以实现截图,需要root权限.
2.使用ddms包的功能,在pc上面截图.不需要root.

第一种方式的原理,应该是直接抓取framebuffer .所以需要root权限.
第二种方式就是利用了adb的lib com.android.ddmlib.AndroidDebugBridge 的功能来实现.

我考虑了下,在手机上面如何实现,不需要root来进行截图.
也可以利用adbd 的功能.可以模拟adb client的方式,连接上adbd ,然后进行截图.实际是在android 平台上面,来实现adb client的
功能.这个方案应该是可行的.只要研究下adb的源代码即可.

我在模拟器上大概验证了下.
adbd 实际上面是在手机上面监听了5307 端口.
可以使用busybox tenlet 127.0.0.1 5307 发现可以连接上.后面只要查找下,具体方法,就可以获取framebuffer service的数据了.有时间,我会实现这个思路的.

—-后续
Below is steps:
1). adb push a local.prop file to /data
adb push local.prop /data

The content of local.prop as below:
log.redirect-stdio=true

2). The test log added to native code looks link below:

fprintf(stdout,”test stdout log/n”);
fprintf(stderr,”test stderr log/n”);

3). restart emulator.

We can only seek stderr log from logcat messages with below command
line.

adb logcat stderr:* stdout:* *.S

打开adb track log

pc 还需要上面设置环境变量 set ADB_TRACE=adb
然后就可以使用了.

原创粉丝点击