以编程方式获取Android屏幕截图 - 屏幕应用程序上的任何内容都可能位于后台设备中

时间:2014-01-10 09:28:19

标签: android screenshot android-fullscreen

我想以编程方式获取Android设备的屏幕截图。我搜索了很多东西,但无论我在哪里发现,都说你的设备应该是root用户,或者只有你可以截取你的应用程序的屏幕截图,即如果你的应用程序在后台,那么它不会截取主屏幕截图。 / p>

简而言之,我想要截图,它可以让我看到屏幕上用户可以看到的内容。我自己的应用程序可能在后台。

  1. 设备未植根
  2. 整个屏幕(仅对用户可见部分)
  3. 应用程序可能处于后台(但仍应截取用户可见的任何内容,即可能是主屏幕)

1 个答案:

答案 0 :(得分: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;
    }