请问大家,可以在新建的线程中访问android的framebuffer不?我尝试在android项目中用timer的schedule来执行framebuffer信息的读取。但是定时器里的任务好像执行是另外开的线程,因此程序总是崩掉(我不清楚是不是这个原因)。因此,请教操作过android或者linuxframebuffer的大神们,可以跨线程读取framebuffer的数据吗?谢谢
解决方案 »
- 百度手机地图API安卓开发-显示地图有bug? 要手工点一下才会加载,拖拽地图空白位置不自动加载图片,每次都要手工触摸手机屏幕才会加载图片。这是为什么?
- 我想实时读取摄像头获得的图像进行分析,请问有什么合适的参考吗?
- 新手handlemessage() 没调用
- android状态栏中的3G、信号等图标怎么从右边弄到左边?
- 控件问题
- 求如何在GridView底部加一个按钮
- SAX解析xml文件
- 点击屏幕后想弹出一个类似TabControl可分页显示的小窗口,请前辈指导!
- 想要写个布局,底部是两个按钮,其余地方设置成imageview
- 【关于推送通知】请问在APP主进程未启动时,可以用推送通知来启动APP么?
- 安卓listview问题
- 如何在PC端无root权限对android设备截屏?
framebuffer说白了就是一片内存,什么访问不行?
{
_fb = get_framebuffer();
if (_fb <= 0)
{
return NULL;
}
else
{
int w = vi.xres, h = vi.yres, depth = vi.bits_per_pixel; //每一象素的bit数
long int _ScreenSize=w*h*depth/8;
long int _size=_ScreenSize/4;
jintArray test;
int a[_size];
memcpy(a,_start2,_ScreenSize);
test=(*env)->NewIntArray(env,_size);
// memcpy(test,_start2,_ScreenSize);
(*env)->SetIntArrayRegion(env, test, 0, _size, a);
munmap(_start2, _ScreenSize);
close(_fb);
return test;
}
上面是我的c代码,返回framebuffer的数据,编译成.so库文件。然后在java中新建一个线程,引用这个函数,得到数据,程序会死掉,查看logcat,有不断的message数据滚动,直到程序崩掉。如果是在UI主线程中去调用上面的库,则可以成功