c# वर्तमान गतिविधि प्राप्त करें-एक्सएमरिया एंड्रॉइड




android android-activity (2)

मैं एंड्रॉइड और आईओएस के लिए पोर्टेबल ऐप विकसित कर रहा हूं। मेरा वर्तमान फ़ंक्शन स्क्रीनशॉट ले रहा है और कोड में उस छवि का उपयोग करता है। इसके लिए मुझे पोर्टेबल लाइब्रेरी में एक इंटरफ़ेस है I

public interface IFileSystemService
{
    string GetAppDataFolder();
}

मैं निम्नलिखित कोड के साथ पोर्टेबल लाइब्रेरी में भी स्क्रीनशॉट ले रहा हूं:

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

यह या तो एंड्रॉइड या आईओएस संस्करण को कॉल करता है

एंड्रॉयड:

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;
    }

अब सवाल यह है कि मेरे ऐप से मौजूदा गतिविधि को प्राप्त करना है


var view = ((Activity)Xamarin.Forms.Forms.Context).Window.DecorView; करने की कोशिश करें var view = ((Activity)Xamarin.Forms.Forms.Context).Window.DecorView;

Xamarin स्वचालित रूप से Forms.Context को Activity प्रदान करता है।


var activity = (Activity)Forms.Context;

या यदि आप मुख्य गतिविधि का उपयोग कर रहे हैं

var activity = (MainActivity)Forms.Context;




xamarin.android