我的想法如下:
1.我想要用android系统源码中captureScreen函数来获取截屏数据
2.我想要把captureScreen函数capture到的base指针数组传给apk进程java端处理。
3.程序可以在4.0.3多数终端运行
[color=#FF0000]现有条件:

1.android 4.0.3
2.终端已root问题如下:
1.apk父进程通过Runtime.getRuntime.exec("su")执行的一个包含captureScreen函数的可执行程序时,创建的子进程确实拥有读取framebuffer的权限base指针有效,但是我该如何将base指针中的数据传给apk父进程的java端处理呢?这是不是一个进程间通信问题?2.如果把captureScreen函数直接写入到so文件中,由于apk权限不足调用captureScreen函数无法获取数据base为null。使apk获取系统权限是可以的,但是只能在自己测试终端才能获取到系统的签名。为没有非签名的方式给apk的uid提升,目前手机已root。3.有其他更好的方法,请赐教。万分感谢!~~~期待大家回复

解决方案 »

  1.   

    su调用exec 产生的子进程有root权限,但是apk进程依旧没有root权限,截图是可以的,但我希望把子进程的数据传给apk,由java端进行数据压缩处理传输等。
    现在难就难在 native进程 和 apk进程的内存数据如何共享
    刚看了一本书,我觉得应该写一个纯native的service把数据提供给apk java端
      

  2.   

    如果把captureScreen函数直接写入到so文件中,由于apk权限不足调用captureScreen函数无法获取数据base为null。这个问题很多人都遇了。解决办法就是通过共享 userid, 但是共享userid需要平台签名所以我们需要另外一种方式。你不妨测试一下哦
      

  3.   

    截图并不是我们的最终的目的,mirrorop这个软件你可以查一下,他们做的就很好了
      

  4.   

    我在用JNI 截图时也崩溃在heap->getBase()这句上提示没有权限读取framebuffer。不知道楼主对于此问题有没有什么进展,望交流,谢过先。