【问题标题】:Xamarin - IOS - Video assets in Photo library - Find By nameXamarin - IOS - 照片库中的视频资产 - 按名称查找
【发布时间】:2017-12-28 15:04:03
【问题描述】:

我是 Xamarin 开发的新手。

我构建了我的应用程序,用户可以在其中点击 DOWNLOAD 按钮。 此按钮从服务器下载视频并保存到照片库

这是我的实现方式(也许它的方式不正确??)

public bool SaveVideo(byte[] videoData, int id)
    {
        try
        {

                CreateCustomAlbum();


            //  Save file to applicaiton folder
            string local_path = SaveFileToApplicationFolder(videoData);

            _lib.WriteVideoToSavedPhotosAlbum(new Foundation.NSUrl(local_path), (t, u) =>
            {
                DeleteLocalFile(local_path); // HERE I DELETE FILE FOR NOT INCREASE SIZE OF APPLICATION


                _local_file_path = t.AbsoluteUrl.ToString(); // global variable 

                _lib.Enumerate(ALAssetsGroupType.Album, HandleALAssetsLibraryGroupsEnumerationResultsDelegate, (obj) => { });
            });
            return true;
        }
        catch (Exception ex)
        {
            return false;
        }
    }


    void DeleteLocalFile(string local_path)
    {

        try
        {
            if (File.Exists(local_path))
            {
                File.Delete(local_path);
                if (!File.Exists(local_path))
                {
                    Console.WriteLine("Deleted");
                }
            }
        }
        catch (Exception ex)
        {

        }
    }

string SaveFileToApplicationFolder(byte[] videoData)
    {
        try
        {
            string file_path = String.Empty;



            var doc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string filename = "MY-APP-" + id + ".mp4"; // id global variable
            file_path = Path.Combine(doc, filename); // global variable

            File.WriteAllBytes(file_path, videoData);

            return file_path;
        }
        catch (Exception ex)
        {
            return String.Empty;
        }
    }

void HandleALAssetsLibraryGroupsEnumerationResultsDelegate(ALAssetsGroup group, ref bool stop)
    {
        try
        {
            if (group == null)
            {
                stop = true;
                return;
            }
            if (group.Name == "MY-APP-ALBUM-NAME")
            {
                stop = true;
                _current_album = group;
                SaveFileToCustomAlbum();
            }
        }
        catch (Exception ex)
        {

        }
    }


void SaveFileToCustomAlbum()
        {
            try
            {
                if (_current_album != null && !String.IsNullOrEmpty(_local_file_path))
                {
                    _lib.AssetForUrl(new Foundation.NSUrl(_local_file_path), delegate (ALAsset asset)
                    {
                        if (asset != null)
                        {

                            _current_album.AddAsset(asset);
                        }
                        else
                        {
                            Console.WriteLine("ASSET == NULL.");
                        }
                    }, delegate (NSError assetError)
                    {
                        Console.WriteLine(assetError.ToString());
                    });
                }
            }
            catch (Exception ex)
            {

            }
        }

所以这段代码可以: 1) 将视频保存到本地文件夹我的视频 - 方法 SaveFileToApplicationFolder 2) 然后将视频文件保存到照片库 - 方法 SaveVideo 3)然后从应用程序文件夹中删除文件(目的不是增加应用程序文件夹大小(应用程序大小)---如果它的逻辑正确?? 4)然后将资产放入我的应用程序的自定义相册

所以这里的一切对我来说都很好......但是! 用户打开项目时我需要加班 - 检查他在照片库中是否已经有该项目的视频?

在这里我是堆栈....我只是不明白如何检查用户是否有特定的视频?我不觉得为资产设置名称和按名称查找资产很热......所以不知道找到这个资产很热......METADATA?对象的 Key_VALUE??

【问题讨论】:

    标签: ios xamarin.ios photos


    【解决方案1】:

    参考Obj-C Check if image already exists in Photos gallery

    简而言之:

    1. 使用NSUserDefaults保存视频时存储assetUrl

    2. 下次打开时用assetUrl检查图片库中是否存在视频。

    【讨论】:

      【解决方案2】:

      您可能只想使用 xam.plugin.media nuget 包。它使拍摄和存储视频以及访问默认视频选择器以选择现有视频变得非常容易

      【讨论】:

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