2012-12-24 67 views
0

我收到了一個項目,其中包括截圖android內容的根視圖。但如果有人點擊編輯文本並打開虛擬鍵盤,我無法在我的照片中獲得此鍵盤視圖。我的意思是android內容的根視圖不包含虛擬鍵盤。我如何添加它? 這裏是我的截圖代碼:虛擬鍵盤的安卓屏幕截圖(編程)

Bitmap bitmap; 
    View v1 = this.findViewById(android.R.id.content).getRootView(); 
    v1.setDrawingCacheEnabled(true); 
    bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
    v1.setDrawingCacheEnabled(false); 
    OutputStream fout = null; 
    imageFile = new File(filePath); 
    try { 
     fout = new FileOutputStream(imageFile); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fout); 
     fout.flush(); 
     fout.close(); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 

而且也是我工作的Android模擬器。感謝您從現在開始的回覆。

回答

1

您不能這樣做,因爲您只能在自己的應用程序中獲取視圖的內容。在Android上,鍵盤算作第三方應用程序,並且無法獲取其視圖內容。

如果您有權訪問Android 4.0或更高版本(或其他運行較低版本但具有製造商添加的屏幕截圖功能的其他設備(如某些Samsung Galaxy系列設備)),則可以截取整個屏幕截圖按下電源按鈕和音量減小按鈕(非Nexus設備上的組合鍵可能會有所不同)。

除此之外,您可以嘗試解析幀緩衝區,這需要在某些設備上進行根訪問。幀緩衝區通常位於/dev/fb0/dev/graphics/fb0。在某些設備上(例如LG Optimus One),可以在沒有root權限的情況下訪問此設備,但是對於其中的大多數設備(如Nexus S),您需要對此進行根植。出於安全考慮,通常不允許這樣做,因爲惡意應用可能會在後臺截取屏幕截圖並將其發送到遠程服務器,從而泄露電子郵件ID和密碼等信息,並在某些情況下顯示銀行帳戶詳細信息。

+0

感謝您的回覆。你知道teamviewer應用程序嗎?我正在開發一個像TeamViewer這樣的項目,我必須這樣做。我剛剛完成了Java項目,但我們都知道,andorid真的不同。另外android有teamviewer。我不知道它是如何工作,如果它可以控制Android鍵盤。如果可以使用「framebuffer」,你能否解釋更多? –

+0

「控制android鍵盤」是什麼意思? –

+0

從遠程服務器我必須控制並按下鍵盤。 –