有没有人知道我们如何捕获整个屏幕截图,包括其他应用程序覆盖菜单和toast使用android应用程序编程不为adb命令和手动按钮按
我已经通过了一些代码,这是截图不包括吐司和其他应用程序覆盖显示在我的屏幕上。
下面的代码只捕获活动视图截图不捕获任何其他应用程序覆盖菜单和吐司。主要是因为val v1: View = window.decorView
这一行。
val mPath: String = context.cacheDir.absolutePath + "/temp_${System.currentTimeMillis()}" + ".png"
// create bitmap screenshot
val v1: View = window.decorView
v1.isDrawingCacheEnabled = true
val bitmap = Bitmap.createBitmap(v1.drawingCache)
v1.isDrawingCacheEnabled = false
val imageFile = File(mPath)
val outputStream = FileOutputStream(imageFile)
val quality = 100
bitmap.compress(Bitmap.CompressFormat.PNG, quality, outputStream)
outputStream.flush()
outputStream.close()
也尝试通过应用程序编程执行命令来捕获屏幕截图,但没有成功,
val process = Runtime.getRuntime().exec("su")
val os = DataOutputStream(process.outputStream)
val cmd= "exec-out screencap"
os.writeBytes(cmd)
os.close()
- 监听器识别是否有任何其他应用程序显示叠加菜单。
- 我想捕获屏幕截图时,任何其他应用程序覆盖显示在我的屏幕上,屏幕截图必须包含其他应用程序覆盖。
请告诉我如何存档。我真的很感谢你的单一回复或回答。提前谢谢。
试试
public Bitmap getFulllScreenshot() {
View v= findViewById(android.R.id.content).getRootView();
v.setDrawingCacheEnabled(true);
v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
v.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
v.setDrawingCacheEnabled(false); // clear drawing cache
return b;
}