Android Xamarin截图,宽屏系统截图

时间:2018-04-29 14:56:24

标签: c# android xamarin screenshot

我的问题很简单,我想为用户看到的屏幕截取屏幕截图,而不是我的Activity。我们假设我的应用程序已最小化,屏幕截图已用于屏幕本身,而非我的应用程序。

我可以在非根设备上使用,因为API 19可能或4.0安卓,但我无法找到办法。

我在互联网上尝试了很多解决方案,但没有任何效果。红了很多,但一无所获。

我找到了这段代码但是,确定它需要我的应用程序(布局)的截图

这是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);
    }

但正如我所说:它需要一个屏幕截图,而不是真正的屏幕。

我试图隐藏或最小化应用,但什么也没发生。

1 个答案:

答案 0 :(得分:1)

我明白了。在这里和那里搜索了很多之后,我发现有一个来自java的新类将为你完成这项工作。这是媒体投影。它适用于 Android Lollipop 5.0或更高版本,不需要root 当我尝试下载许多应用程序以获取屏幕截图背后的想法时,Play商店中的所有应用程序都使用它。

以下是有关它的文档:

https://developer.android.com/reference/android/media/projection/MediaProjection