请问大家,可以在新建的线程中访问android的framebuffer不?我尝试在android项目中用timer的schedule来执行framebuffer信息的读取。但是定时器里的任务好像执行是另外开的线程,因此程序总是崩掉(我不清楚是不是这个原因)。因此,请教操作过android或者linuxframebuffer的大神们,可以跨线程读取framebuffer的数据吗?谢谢
解决方案 »
- 安卓平板串口调试信息打印
- Android下OpenGL贴图的问题
- 请问下SQLite怎么获得id的最大值?谢谢各位
- 关于Android数据库的操作问题
- 按钮问题 想要实现一个按钮 左面图片 右面文本 应该如何实现呢?
- ContentProvider怎么样与SQLite结合起来啊
- layout文件的疑惑?
- 问android-sdk-windows.rar 与 android-sdk_r10-windows.rar 区别
- textview Html.formHtml()
- myListActivity 和 myListAdapter 的控件传值问题。
- 安卓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主线程中去调用上面的库,则可以成功