c# - 谷歌地图截图黑色
问题描述
我想在我的 xamarin PCL 项目中截取谷歌地图截图。地图显示完美。但是当我尝试截屏时,它显示谷歌地图部分的黑屏。
public interface IScreenshotService
{
Task<byte[]> Capture();
}
public class ScreenshotService : IScreenshotService
{
public static Activity Activity { get; set; }
//public void SetActivity(Activity activity) => _currentActivity = activity
public async System.Threading.Tasks.Task<byte[]> Capture()
{
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;
}
}
调用函数的代码
byte[] screenshotData = await DependencyService.Get<IScreenshotService>().Capture();
你能帮我解决这个问题吗?
解决方案
我认为这可能是地图的图像不得传输到您的服务器,或者在应用程序之外使用
,您可以使用GoogleMap.snapshot
方法拍摄地图的快照
只需实现以下接口:onSnapshotReady
public abstract void onSnapshotReady (Bitmap snapshot)
并调用:快照
public final void snapshot (GoogleMap.SnapshotReadyCallback callback)
你也可以参考例子(在jave中):截图答案
推荐阅读
- python - 如何让我的变量脱离函数?
- swiftui - 如何在不同的堆栈之间水平对齐多个对象
- javascript - 为什么我的元素不使用相同的反应状态实例?
- asp.net - 在 ASP.NET 中下载 Excel 后执行代码
- python - ModuleNotFoundError:没有名为“account.apps.AccountConfigdjango”的模块;“account.apps”不是一个包
- python - 尝试 dm 禁止用户时引发禁止异常 (Discord.py)
- sql-server - SQL Server 全文搜索问题
- ruby-on-rails - 如何并行运行单个 RSpec 示例以进行去剥落?
- angular - 如何重新创建 Angular CLI 创建的自动生成的自签名证书?
- javascript - 具有两个值的对象