0

我想以编程方式截取 Android 设备的屏幕截图。我已经搜索了很多东西,但无论我找到什么,它都说要么你的设备应该被植根,要么只有你可以截取你的应用程序的截图,即如果你的应用程序在后台,那么它不会截取主屏幕的截图。

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

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

1 回答 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;
    }
于 2014-01-10T09:34:10.957 回答