c# - style - Obtener actividad actual-Xamarin Android
xamarin forms keyboards (2)
Estoy desarrollando una aplicación portátil para Android e iOS. Mi función actual es tomar una captura de pantalla y usar esa imagen en el código. Por lo tanto, tengo una interfaz en la biblioteca portátil.
public interface IFileSystemService
{
string GetAppDataFolder();
}
Estoy tomando la captura de pantalla también en la Biblioteca portátil con el siguiente código:
static public bool TakeScreenshot()
{
try
{
byte[] ScreenshotBytes = DependencyService.Get<Interface.IScreenshotManager>().TakeScreenshot();
return true;
}
catch (Exception ex)
{
}
return false;
}
Esto llama a la versión de Android o iOS.
Androide:
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 pregunta ahora es obtener la Actividad actual de mi aplicación.
Intente hacer var view = ((Activity)Xamarin.Forms.Forms.Context).Window.DecorView;
Xamarin asigna automáticamente la Activity
a Forms.Context
.
var activity = (Activity)Forms.Context;
o si está utilizando MainActivity
var activity = (MainActivity)Forms.Context;