【发布时间】:2017-09-02 22:44:20
【问题描述】:
我正在开发适用于 Android 和 iOS 的便携式应用程序。我当前的功能是截屏并在代码中使用该图像。因此,我在可移植库中有一个接口。
public interface IFileSystemService
{
string GetAppDataFolder();
}
我也在便携式库中使用以下代码截取屏幕截图:
static public bool TakeScreenshot()
{
try
{
byte[] ScreenshotBytes = DependencyService.Get<Interface.IScreenshotManager>().TakeScreenshot();
return true;
}
catch (Exception ex)
{
}
return false;
}
这要么调用 Android 版本,要么调用 iOS 版本。
安卓:
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;
}
现在的问题是从我的应用中获取当前的 Activity。
【问题讨论】:
-
您需要在 oncreate 方法中为服务分配活动。
标签: c# android android-activity xamarin xamarin.android