【发布时间】: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