2014-01-10 29 views
0

我想以編程方式採取Android設備屏幕截圖。我搜索了很多東西,但是無論我發現什麼地方,都是說你的設備應該是根植的,或者只有你可以截取你的應用程序的截圖,也就是說,如果你的應用程序在後臺,那麼它將不會截取主屏幕截圖。以編程方式採取Android屏幕截圖 - 無論在屏幕上的應用程序可能在後臺 - 沒有根深蒂固的設備

總之,我希望屏幕截圖能讓我看到用戶可以看到的任何屏幕。我的應用可能在後臺。

  1. 設備的根源並非是
  2. 整個屏幕(僅可見部分用戶)
  3. 應用可以在後臺(但還是應該採取的任何用戶可見的,即可能是主屏幕截圖)
+1

是這個程序刺探你的用戶嗎?我相信你應該首先檢查這項任務是否符合道德標準。 –

回答

0

要獲得截圖中,你需要得到視圖

getWindow().getDecorView(); 

緩存視圖爲位圖的根佈局

public static File getScreenShot(Context context,View parentLayout) 
    { 
     parentLayout.setDrawingCacheEnabled(true); 
     Bitmap cachedBitmap= parentLayout.getDrawingCache(); 
     Bitmap finalBitmap = cachedBitmap.copy(Bitmap.Config.RGB_565, true); 
      return saveBitmap(context,finalBitmap); 
    } 

保存位圖中的設備或這種

private static File saveBitmap(Context context,Bitmap bitmap) 
    { 
     File snapShot=null; 
     try 
     { 
      String cacheDirectory=getCacheDirectory(context);    
      snapShot=new File(cacheDirectory, "Screenshot.png"); 
      FileOutputStream out = new FileOutputStream(snapShot); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
      out.close(); 
     } catch (Exception e) 
     { 
       e.printStackTrace(); 
     } 
     return snapShot; 
    } 
+0

先生,我認爲你的應用在後臺時不能截屏。並且當我在後臺運行時,在上面的代碼中得到NullPointer異常。 –

+0

當你試圖截取屏幕截圖時,你是否在前臺有一些進度對話框或提示對話框? –

+0

我試着用transperant活動,以便我可以捕捉背景,但它只顯示黑屏。你能否請你接下來建議我。 如果我把按鈕或進度對話框,那麼它只捕獲該部分。 –

相關問題