我想在我的xamarin PCL项目中拍摄Google地图屏幕截图。地图显示完美。但是,当我尝试拍摄屏幕快照时,它会显示Google地图部分的黑屏。
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();
您能帮我解决问题吗?
答案 0 :(得分:1)
我认为可能是地图的图像不得传输到您的服务器,或在应用程序之外另外使用
您可以使用GoogleMap.snapshot
方法拍摄地图快照
只需实现以下接口:onSnapshotReady
public abstract void onSnapshotReady (Bitmap snapshot)
并致电:snapshot
public final void snapshot (GoogleMap.SnapshotReadyCallback callback)
您还可以参考示例(在jave中):screenshot answer
答案 1 :(得分:0)
根据这篇文章,这可能是因为您的行为违反了Google Maps Platform服务条款:
3.2.4a“不得进行刮削。客户不得提取,导出,刮擦或缓存Google Maps Content,以在服务之外使用。”
您可以访问Google Maps Platform Terms of Service来了解有关许可的更多信息。