2013-07-24 224 views
-1

我已经完成了我的代码,并且我尝试了整体代码来截取屏幕截图,但没有一个适合我。有些只是在我的活动布局上工作,但我不想这样做,我可以在设备的任何屏幕上截图,例如截图UX https://play.google.com/store/apps/details?id=com.liveov.shotuxtrial,我知道这只能通过root访问来完成。我听说过screencapdev/graphics/fb0这样的方法,但我知道“screencap”方法在我的设备(2.3.7)中不起作用,并且我还没有完全知道如何使用dev/graphics/fb0方法。 ..我仍然尝试了图书馆的方法,但没有成功的方法。希望有人可以帮助我获得我的屏幕截图代码。对不起,我的英文不好屏幕截图到任何屏幕(Android Root,就像屏幕截图UX)

回答

0

访问帧缓冲区受限制的权限。 如果运行

$ ls -l /dev/graphics 

可以验证

crw-rw---- root  graphics 29, 0 2013-07-10 10:21 fb0 
crw-rw---- root  graphics 29, 1 2013-07-10 10:21 fb1 
crw-rw---- root  graphics 29, 2 2013-07-10 10:21 fb2 
crw-rw---- root  graphics 29, 3 2013-07-10 10:21 fb3 
crw-rw---- root  graphics 29, 4 2013-07-10 10:21 fb4 

接入(rw)仅授予root:graphics,所以你必须以root您的设备。

+0

我有我的设备植根,但仍然,你能解释我该怎么做吗? –

+0

然后,您可以更改这些文件权限并将它们变为世界可读 –

0

以下是在根设备'fileDestination'上通过shell命令拍摄屏幕截图的代码,是要保存屏幕截图文件的位置的路径。

try { 
    Process process = Runtime.getRuntime().exec("su", null,null); 

    OutputStream os = process.getOutputStream(); 
    os.write(("/system/bin/screencap -p " + fileDestination).getBytes("ASCII")); 
    os.flush(); 
    os.close(); 
    process.waitFor(); 
} catch (IOException e) { 
    Log.d(TAG,LOG_LABEL+" IOException e:: SCREENSHOT FAILED"); 
    e.printStackTrace(); 
} catch (InterruptedException e) { 
    Log.d(TAG,LOG_LABEL+"InterruptedException e:: SCREENSHOT FAILED"); 
    e.printStackTrace(); 
}