【问题标题】:Xamarin iOS ALAssetsLibrary WriteVideoToSavedPhotosAlbum doesn't save to libraryXamarin iOS ALAssetsLibrary WriteVideoToSavedPhotosAlbum 不保存到库
【发布时间】:2016-02-04 10:05:46
【问题描述】:

我正在使用 Xamarin 编写 iOS 应用程序,但在将视频保存到我的照片库时遇到问题。我正在使用ALAssetsLibraryWriteVideoToSavedPhotosAlbum 方法(代码如下),但视频从未保存。我没有收到错误,但我也没有在完成块中收到资产 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 值是存储在应用程序文档目录中的视频。

谢谢

【问题讨论】:

  • 没人知道这可能是什么问题吗?

标签: ios xamarin xamarin.ios alassetlibrary


【解决方案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);
    });
});   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多