Xamarin iOS ALAssetsLibrary WriteVideoToSavedPhotosAlbum 不保存到库
Posted
技术标签:
【中文标题】Xamarin iOS ALAssetsLibrary WriteVideoToSavedPhotosAlbum 不保存到库【英文标题】:Xamarin iOS ALAssetsLibrary WriteVideoToSavedPhotosAlbum doesn't save to library 【发布时间】:2016-02-04 10:05:46 【问题描述】:我正在使用 Xamarin 编写 ios 应用程序,但在将视频保存到我的照片库时遇到问题。我正在使用ALAssetsLibrary
的WriteVideoToSavedPhotosAlbum
方法(代码如下),但视频从未保存。我没有收到错误,但我也没有在完成块中收到资产 URL。
有人知道这里会发生什么吗?
var url = NSUrl.FromFilename (this.FilePath);
ALAssetsLibrary library = new ALAssetsLibrary ();
library.WriteVideoToSavedPhotosAlbum (url, delegate(NSUrl u, NSError e)
if (e != null)
new UIAlertView ("Error", "Unable to save video to library", null, "Ok").Show();
);
需要注意的是FilePath
值是存储在应用程序文档目录中的视频。
谢谢
【问题讨论】:
没人知道这可能是什么问题吗? 【参考方案1】:需要注意的一点是FilePath值是存放在应用程序文档目录中的视频吗?您到底在寻找什么?因为 WriteVideoToSavedPhotosAlbum 用于存储使用相机捕获的视频,因为我们无法直接获取其 url,因此我们必须先将使用相机捕获的视频或图像存储到设备,然后我们可以使用 ALAssetsLibrary 获取其 url 和其他信息
我已经这样做了,它对我有用,希望这可以帮助你:
ALAssetsLibrary library = new ALAssetsLibrary();
library.WriteImageToSavedPhotosAlbum(originalImage.CGImage, meta, (assetUrl, error) =>
library.AssetForUrl(assetUrl, delegate (ALAsset asset)
ALAssetRepresentation representation = asset.DefaultRepresentation;
if (representation != null)
string fileName = representation.Filename != null ? representation.Filename : string.Empty;
var filePath = assetUrl.ToString();
var extension = filePath.Split('.')[1].ToLower();
var mimeData = string.Format("image/0", extension);
var mimeType = mimeData.Split('?')[0].ToLower();
var documentName = assetUrl.Path.ToString().Split('/')[1];
, delegate (NSError err)
Console.WriteLine("User denied access to photo Library... 0", err);
);
);
【讨论】:
以上是关于Xamarin iOS ALAssetsLibrary WriteVideoToSavedPhotosAlbum 不保存到库的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin SQLite教程Xamarin.iOS项目添加引用
Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?