framebuffer 提取图形数据 android工程 C中unsigned char 就是byte.把错误信息贴出来看看,看这个看不出什么问题。错误信息logcat里面可以看到。我估计是找不到库,加载库失败这类的错误 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你确保高和宽都是4或8的整数倍吗?改成+7)/8或+3)/4试一下w*h*depth 求的是整个屏幕有多少位/8 是求的一个屏幕的字节数, /4我其实也不知道怎么回事,就是原文这么写,我也这么写。 能加载到库,这个我十分肯定,随意我能断定是库里边的函数出现问题。logcat里边没有任何报错信息,而且肯定就是这段代码出现了问题。不能成功都取或者返回数据。导致程序终止。郁闷的是它不报错。c语言能力太差,研究了一天怎么也不知道如何把数据以byte数组的形式传给java JNIEXPORT jbyteArray Java_com_xyy_ndk_HelloAndroidNDK_SendPicThread_1ScreenShot (JNIEnv* env,jobject thiz ){ int fd; fd = open("/dev/graphics/fb0", O_RDWR); if(fd < 0) { perror("cannot open fb0"); } if(ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { perror("failed to get fb0 info"); } if(ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { perror("failed to get fb0 info"); } bits = mmap(0, 48000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if(bits == MAP_FAILED) { perror("failed to mmap framebuffer"); } int w = vi.xres; int h = vi.yres; int depth = vi.bits_per_pixel; //每一象素的bit数 long int _ScreenSize=w*h*depth/8;//计算屏幕的总字节数(字节) long int _size=_ScreenSize/4; jbyteArray test=(*env)->NewByteArray(env,_size); unsigned char a[_size]; memcpy(a,bits,_size); (*env)->SetByteArrayRegion(env,test,0,_size, a); munmap(bits, _ScreenSize); close(_fb); return test; }有米有接触过android手机抓屏技术的高手啊求指点。现在这段代码可以返回数据,但是返回的全是-1,形成的图片也是黑的。。真黑啊。。这是为什么啊。我代码究竟错在那里啊。。大神们帮我看一下把。。我快支持不了了,。。 楼主解决了没啊,分享下经验不,我连fbo都还打不开,求赐教,不胜感激[email protected] 楼主,Android手机抓屏解决了吗?求分享、求赐教。[email protected] Android开发中,为什么要有一个R.java? 获取assets目录下文件的File对象或URI对象 android 加密有人懂吗 如何获取Matrix对象中的Scale值? 如何在源码中内置3rd party APK eclipse文件没有错误,但是文件夹报错,很纠结啊 eclipse离线安装adt报错 求教关于eclipse中avd的sd卡内容显示问题,求大神帮忙 安卓编程 线程 更改textview 的问题 Android串口 如何搞定android-serialport-api 能发不能收的问题 如何开发后台应用程序 关于 android 不同进程间模拟按键和触摸事件
w*h*depth 求的是整个屏幕有多少位
/8 是求的一个屏幕的字节数, /4我其实也不知道怎么回事,就是原文这么写,我也这么写。
能加载到库,这个我十分肯定,随意我能断定是库里边的函数出现问题。logcat里边没有任何报错信息,而且肯定就是这段代码出现了问题。不能成功都取或者返回数据。导致程序终止。郁闷的是它不报错。c语言能力太差,研究了一天怎么也不知道如何把数据以byte数组的形式传给java
(JNIEnv* env,jobject thiz )
{
int fd;
fd = open("/dev/graphics/fb0", O_RDWR);
if(fd < 0) {
perror("cannot open fb0");
}
if(ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) {
perror("failed to get fb0 info");
}
if(ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) {
perror("failed to get fb0 info");
}
bits = mmap(0, 48000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if(bits == MAP_FAILED) {
perror("failed to mmap framebuffer");
}
int w = vi.xres;
int h = vi.yres;
int depth = vi.bits_per_pixel; //每一象素的bit数
long int _ScreenSize=w*h*depth/8;//计算屏幕的总字节数(字节)
long int _size=_ScreenSize/4;
jbyteArray test=(*env)->NewByteArray(env,_size); unsigned char a[_size];
memcpy(a,bits,_size);
(*env)->SetByteArrayRegion(env,test,0,_size, a);
munmap(bits, _ScreenSize);
close(_fb);
return test;
}有米有接触过android手机抓屏技术的高手啊求指点。现在这段代码可以返回数据,但是返回的全是-1,形成的图片也是黑的。。真黑啊。。这是为什么啊。我代码究竟错在那里啊。。大神们帮我看一下把。。我快支持不了了,。。
[email protected]
[email protected]