我想以编程方式截取 Android 设备的屏幕截图。我已经搜索了很多东西,但无论我找到什么,它都说要么你的设备应该被植根,要么只有你可以截取你的应用程序的截图,即如果你的应用程序在后台,那么它不会截取主屏幕的截图。
简而言之,我想要屏幕截图,它可以为我提供用户可以看到的屏幕上的任何内容。我自己的应用程序可能在后台。
- 设备未植根
- 整个屏幕(仅对用户可见的部分)
- 应用程序可能在后台(但仍应截取用户可见的任何内容,即可能是主屏幕)
我想以编程方式截取 Android 设备的屏幕截图。我已经搜索了很多东西,但无论我找到什么,它都说要么你的设备应该被植根,要么只有你可以截取你的应用程序的截图,即如果你的应用程序在后台,那么它不会截取主屏幕的截图。
简而言之,我想要屏幕截图,它可以为我提供用户可以看到的屏幕上的任何内容。我自己的应用程序可能在后台。
要获取屏幕截图,您需要获取视图的根布局
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;
}