Obtenez de l'Activité en cours - Xamarin Android

Je suis en train d'élaborer un portable Application pour Android et iOS. Ma fonction actuelle est de prendre une Capture d'écran et d'utiliser cette image dans le code. À cet effet, je dispose d'une Interface dans la bibliothèque portable.

public interface IFileSystemService
{
    string GetAppDataFolder();
}

Je prends la Capture d'écran aussi dans la Bibliothèque portable avec le code suivant:

static public bool TakeScreenshot()
    {
        try
        {
            byte[] ScreenshotBytes = DependencyService.Get<Interface.IScreenshotManager>().TakeScreenshot();
            return true;
        }
        catch (Exception ex)
        {
        }
        return false;
    }

Ce soit des appels Android ou iOS version.

Android:

class ScreenshotManagerAndroid : IScreenshotManager
{
    public static Activity Activity { get; set; }

    public byte[] TakeScreenshot()
    {

        if (Activity == null)
        {
            throw new Exception("You have to set ScreenshotManager.Activity in your Android project");
        }

        var view = Activity.Window.DecorView;
        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;
    }

La question maintenant est d'obtenir l'Activité actuelle de mon application.

Vous avez besoin d'affecter l'activité du service dans la méthode oncreate.

OriginalL'auteur Lexu | 2017-04-07