(根据王研科先生的探索)
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屏幕截图代码”以及描述中的“用于截图的各种方法 android的各种方法实现”,详细探讨几种实现屏幕截图的方法,并尽可能地扩展相关内容,以便读者能够更好地理解和掌握这些技术点。...
### Android屏幕截图功能详解 #### 一、概述 在Android应用开发过程中,有时我们需要实现屏幕截图的功能,例如在社交应用中分享当前界面的画面,或者在游戏应用中保存精彩瞬间等场景。本文将详细介绍如何在Android...
首先,要理解Android屏幕截图的基本操作。在大多数Android设备上,可以通过同时按下电源键和音量下键来快速截取屏幕当前的状态。这个快捷键组合是多数Android设备的标准设置,但不同厂商可能会有微小差异,例如某些...
本项目“android jni 屏幕截图 NativeScreenCapture”专注于利用JNI技术来实现Android设备的屏幕截图功能。下面将详细介绍这个过程涉及的关键知识点。 1. **JNI基础**:JNI是Android平台上的一个接口,它为Java应用...
总的来说,Android屏幕截图可以通过`View`的绘图缓存或者`MediaProjection` API实现,其中后者提供了更全面的截图能力,但需要用户权限。在实际开发中,考虑到兼容性和用户体验,我们需要根据具体场景选择合适的方法...
Android中截取屏幕截图功能代码,在android APP程序中,可以用以上代码截图。
android实现屏幕监控 1、问题 1、性能问题还未解决 2、需要手机拥有ROOT权限。 3、FRAMBUFFER数据读写的需要人为配置(/fb0中数据的... 3、电脑屏幕全屏显示,按android屏幕显示,固定大小显示(代码中修改常量值)
Android-Android屏幕截图类库是为了简化这一过程而设计的,它提供了一种方便、高效的方式来捕获设备屏幕的内容。在这个项目中,我们关注的是RxScreenshotDetector-master,它是一个基于ReactiveX(RxJava)的Android...
【Android_Screenshot】项目是一个基于C++实现的Android设备屏幕截图工具,它的主要目标是让开发者或用户能够从个人计算机(PC)上直接捕获Android设备的屏幕图像。这个项目利用了Android Debug Bridge (ADB) 和 ...
在Android操作系统中,屏幕截图是...总的来说,Android屏幕截图提供了方便的用户接口和API,而多点触摸缩放则是提升用户体验的关键技术之一。开发者可以通过熟练掌握这些技巧,构建出更具吸引力的图像查看或编辑应用。
这个“android区域性屏幕截图”项目提供了解决此类需求的代码实现,已经经过测试并确认功能正常。 在Android中,获取屏幕截图通常涉及到以下几个关键知识点: 1. **获取屏幕大小**: 在Android中,我们可以通过`...
通过分析和理解这些代码,你可以更好地掌握Android屏幕截图的功能,并将其应用到自己的应用中。 总之,Android提供了一套相对简单的接口来截取屏幕图片并保存到外部存储。开发者需要理解权限管理的变化,并根据不同...
猎鹰眼捕捉Android屏幕截图! 屏幕快照中包括对话框,祝酒词和所有其他额外的窗口。 用法 // Saving screenshot to file Falcon . takeScreenshot(activity, file); // Take bitmap and do whatever you want ...
在Android平台上,实现区域...通过阅读和理解代码,你将深入掌握Android屏幕截图的实现机制,以及如何在应用中集成自定义的截图功能。这对于开发具有类似需求的应用非常有帮助,比如教育应用、游戏、社交媒体应用等。
一个用于捕获ios / android屏幕截图并将其保存到剪贴板或文件系统的CLI。 Usage用法osnap [ios | android] [-f filename.png] [-d android_device_id]:red_apple:使用iOS osnap io:camera:osnap! 一个用于捕获ios /...
在这种情况下,"Android摄像头屏幕截图工具" 提供了一种解决方案,它是一个基于DOS命令的小型应用程序,专为无显示屏Android设备设计。下面将详细介绍这个工具及其相关知识点。 首先,我们需要理解什么是DOS命令。...
在Android平台上,实现区域截图是一项常见的需求,例如用于制作教程、分享特定屏幕内容或...开发者可以通过学习这个源码,了解Android屏幕截图的实现原理,并可将其应用到自己的项目中,增强应用的功能性和用户体验。
在Android开发中,有时我们需要实现特定功能,例如只截取应用程序界面的一部分,而不是整个屏幕。这个功能在"指定屏幕内区域截图"中得以体现。在本文中,我们将深入探讨如何在Android中实现这一功能,包括如何选取...
Android MediaProjection截屏&录屏 1、解决Android Q中java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION 异常 2、...