在Android中加入抓屏软件fbdump

转自http://www.linuxidc.com/Linux/2011-02/32328.htm

 

目标:将fbdump-0.4.2放到andrioid中运行,能够抓framebuff中的桌面。

方法:

1 下载http://linux.softpedia.com/progDownload/fbdump-Download-24576.html

将fbdump解压缩到externel目录,创建编译文件:external/fbdump-0.4.2/Android .mk

内容如下:

LOCAL_PATH :=$(call my-dir)

 

include $(CLEAR_VARS)

 

charge_local_path := $(LOCAL_PATH)

LOCAL_SRC_FILES := src/main.c /

                   src/cmap.c /

                   src/surface.c /

                   src/convert.c /

                   src/fb.c /

                   src/vga.c /

                   src/vt.c  /

                   src/options.c

LOCAL_MODULE := fbdump

LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_CFLAGS += -DPACKAGE='"fbdump"' /

                -DVERSION='"0.4.2"'  /

                -DDEBUG

LOCAL_MODULE_TAGS := eng

 

LOCAL_STATIC_LIBRARIES := libminzip libunz libminui libpixelflinger_static libpng libcutils libstdc++ libc

 

include $(BUILD_EXECUTABLE)

修改文件fbdump-0.4.2/src/config.h

加入#undef SUPPORT_VGA16FB

fbdump-0.4.2/src/vt.c加入

#include <fcntl.h>

 


上面的Android .mk是我从其他工程复制过来的,粗略调整一下,有些冗余。

2 编译并打包到系统中。

3 运行测试:fbdump -fb /dev/graphics/fb0 >test.ppm


3 附注说明:有些嵌入式linux厂家的提供的linux 中的framebuff驱动不完成,导致fbdump运行直接出错。根据我目前经验(至少两种cpu)一般都是没有填充pseudo_palette,方法为:

修改probe函数,在register_framebuffer前加入这样几句:


//shuaiwen added begin

#define MAX_PALETTES      16

fbinfo->pseudo_palette = kmalloc(sizeof (u32) * MAX_PALETTES, GFP_KERNEL);

if (fb_alloc_cmap(&fbinfo->cmap, 256, 0) < 0) {

                printk(KERN_ERR " Can't allocate color map/n");

                goto free_video_memory;

        }


//shuaiwen added end

当然是否真的是这个原因造成的还得靠你自己分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值