【发布时间】:2018-06-10 03:35:52
【问题描述】:
简而言之,我想为用户看到的屏幕截图,而不是我的 Activity。假设我的应用程序已最小化,屏幕截图是为屏幕本身而不是我的应用程序截取的。
我在某处表示可能在非 root 设备上使用 API 19 或 4.0 android,但我找不到这样做的方法。
我在互联网上尝试了许多解决方案,但没有任何效果。红了很多,但什么也没找到。
我找到了这段代码,但确定它为我的应用程序(布局)截取了屏幕截图
这里是 OnCreate 方法:
ImageView img;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
Button btn = FindViewById<Button>(Resource.Id.button1);
img = FindViewById<ImageView>(Resource.Id.imageView1);
btn.Click += Btn_Click;
}
public byte[] CaptureScreen()
{
var view = Window.DecorView.RootView;
view.DrawingCacheEnabled = true;
Bitmap bitmap = view.GetDrawingCache(true);
byte[] bitmapData;
using (var stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
bitmapData = stream.ToArray();
}
return bitmapData;
}
单击按钮时将其添加到 imageView:
private void Btn_Click(object sender, EventArgs e)
{
Bitmap bitmap = BitmapFactory.DecodeByteArray(CaptureScreen(), 0, CaptureScreen().Length);
img.SetImageBitmap(bitmap);
}
但正如我所说:它为布局截屏,而不是真实屏幕。
我试图隐藏或最小化应用程序,但没有任何反应。
【问题讨论】:
-
除了您自己的应用程序之外,您无法截取任何内容。试想一下 - 如果可以,那么您可以访问大部分私人用户的信息。
-
感谢您的重播,请问大多数应用程序如何为您的游戏或类似的东西截取屏幕截图或录制视频?我认为有很多应用程序可以做到这一点,怎么会发生这种情况?
标签: c# android xamarin screenshot