(根据王研科先生的探索)
Android G1手机的色深是16bit, 即R/G/B=5/6/6. 故需要一些特殊处理才能获得其屏幕图像。
我们可以adb登录进入Android手机,先dump出/dev/fb0的内容,然后将dump出的文件拷贝到PC(ubuntu)上用convert命令进行处理。
1. 在Android手机上获取framebuffer内容:
# cat /dev/graphics/fb0 > /mnt/sdcard/fb0
2. 把文件拷贝到PC上的/tmp目录:
$ adb pull /mnt/sdcard/fb0 /tmp/fb0
3. 从/tmp/fb0文件中取出第一屏的内容(一般会有2到3屏的内容):
$ dd bs=307200 count=1 if=/tmp/fb0 of=/tmp/screenshot1.xmp
这里,手机屏幕分辨率是320*480; 颜色深度为16bit (R/G/B=5/6/5),即2字节; 故有
320*480*2=307200
或在shell下执行:
$ echo $((320*480*2))
这里得到的图像是pixmap格式的.
4. 这时取到的截屏数据要转成每个颜色值为8bit的raw图像数据:
原理如下:
int main(int argc, char *argv[])
{
unsigned short in; // 16bit
unsigned char out[3]; // 8bit*3
while (read(0, &in, 2) == 2) {
out[2] = (in & 0x1f) << 3;
out[1] = ((in >> 5) & 0x3f) << 2;
out[0] = ((in >> 11) & 0x1f) << 3;
write(1, out, 3);
}
return 0;
}
将以上代码编译成执行文件/tmp/565to88后,再执行:
$ /tmp/565to888 </tmp/screenshot1.xmp >/tmp/screenshot888.xmp
这将把颜色转化为24bit色深。
5.最后把24bit色深的图像转换成PNG格式:
$ /usr/bin/convert -depth 8 -size 320x480 rgb:screenshot888.xmp
screenshot.png
现在可以用以下命令查看截屏(screenshot.png文件)啦:
$ /usr/bin/display
screenshot.png
附: HTC HD7上查看截屏:
手机侧:
# cat /dev/graphics/fb0 > /mnt/sdcard/fb0
PC侧:
$ dd bs=$((480*800*2)) count=2 if=/tmp/fb0 of=/tmp/screenshot1.xmp
$ /tmp/565to888 </tmp/screenshot1.xmp >/tmp/screenshot888.xmp
$ convert -depth 16 -size 480x800 /tmp/screenshot888.xmp /tmp/screenshot888.png
$ display /tmp/screenshot888.png
相关推荐
android屏幕截图, 截图后保存路径用mnt/sdcard
Android中截取屏幕截图功能代码,在android APP程序中,可以用以上代码截图。
本人在做项目是用到的屏幕截图功能 基本上还是很明朗的
android实现屏幕监控 1、问题 1、性能问题还未解决 2、需要手机拥有ROOT权限。 3、FRAMBUFFER数据读写的需要人为配置(/fb0中数据的... 3、电脑屏幕全屏显示,按android屏幕显示,固定大小显示(代码中修改常量值)
用于截图的各种方法 android的各种方法实现
Android Java原始码Android_屏幕截图 来自PC的C ++ android屏幕截图。 通过Android DDMS源代码将Java转换为C ++。
Android中实现屏幕截图的方式,包含提醒客户权限获取后的全机型适配方案。
猎鹰眼捕捉Android屏幕截图! 屏幕快照中包括对话框,祝酒词和所有其他额外的窗口。 用法 // Saving screenshot to file Falcon . takeScreenshot(activity, file); // Take bitmap and do whatever you want ...
一个用于捕获ios / android屏幕截图并将其保存到剪贴板或文件系统的CLI。 Usage用法osnap [ios | android] [-f filename.png] [-d android_device_id]:red_apple:使用iOS osnap io:camera:osnap! 一个用于捕获ios /...
Android MediaProjection截屏&录屏 1、解决Android Q中java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION 异常 2、...
android jni 屏幕截图
screenshot-tests-for-android, 在Android测试测试期间生成快速确定的屏幕截图 Android屏幕截图 screenshot-tests-for-android是一个库,它可以生成快速确定的屏幕截图,同时在Android上运行测试测试。我们模拟( ) ...
我们模仿Android的measure(),layout()和draw()生成Android屏幕截图测试screenshot-tests-for-android是一个库,可以在Android上运行仪器测试时生成快速的确定性屏幕截图。 我们模仿Android的measure(),...
区域性截图代码,代码测试OK。主要可以用于用户头像的选择等。
网上找了很多屏幕截图的东西,这里指定截取屏幕一个LinerLayout中的内容。自动截图保存到本地。
一个可以转换Android屏幕截图的Java程序,如下所示: 笔记: 仅适用于Java 8或更高版本可能不起作用仍然有一些错误仅适用于Mac和Linux。 如果要在Windows上运行,则必须自己编译不推荐使用由,免费使用。 享受! ;)
android截图 区域截图 部分截图
使用DOS命令编写的截图小工具;运行即自动截图;手机运行该工具前需要进行root操作;截图的数据存放在工具所在的目录下;适用于无显示屏Android设备开发(例如摄像头);