2014-01-10 33 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活动,以便我可以捕捉背景,但它只显示黑屏。你能否请你接下来建议我。 如果我把按钮或进度对话框,那么它只捕获该部分。 –

相关问题