2013-07-24 281 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(); 
}