2016-09-13 7 views
1

iOSデバイスで公開されている画像ごとにループする方法を探しています。Xamarin iOSギャラリーからの画像はどこですか

私はすでに

var library = new ALAssetsLibrary(); 

library.Enumerate(ALAssetsGroupType.Library, GroupEnumerator, Console.WriteLine); 
library.Enumerate(ALAssetsGroupType.Album, GroupEnumerator, Console.WriteLine); 
library.Enumerate(ALAssetsGroupType.SavedPhotos, GroupEnumerator, Console.WriteLine); 
library.Enumerate(ALAssetsGroupType.All, GroupEnumerator, Console.WriteLine); 

てみました。しかし、私はすべてのリストをデバッグするときに空になっているしています。

デバイス(ギャラリー)に保存されているすべてのイメージのリストを取得するにはどうすればよいですか?ここで

は私のリストのすべての画像

using AssetsLibrary; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Text; 

namespace AG.iOS.Services 
{ 
    public class iOSGalleryContent : IGalleryContent 
    { 
     public static readonly List<string> ImageExtensions = new List<string> { ".JPG", ".JPE", ".BMP", ".GIF", ".PNG" }; 
     List<string> ImagesNames = new List<string>(); 
     public List<string> GetImagesNames() 
     { 
      var library = new ALAssetsLibrary(); 
      library.Enumerate(ALAssetsGroupType.Library, GroupEnumerator, Console.WriteLine); 
      library.Enumerate(ALAssetsGroupType.Album, GroupEnumerator, Console.WriteLine); 
      library.Enumerate(ALAssetsGroupType.SavedPhotos, GroupEnumerator, Console.WriteLine); 
      library.Enumerate(ALAssetsGroupType.All, GroupEnumerator, Console.WriteLine); 

      return ImagesNames; 



     } 

     private void GroupEnumerator(ALAssetsGroup group, ref bool shouldStop) 
     { 
      if (group == null) 
      { 
       shouldStop = true; 
       return; 
      } 
      if (!shouldStop) 
      { 
       group.Enumerate(AssetEnumerator); 
       shouldStop = false; 
      } 
     } 

     private void AssetEnumerator(ALAsset asset, nint index, ref bool shouldStop) 
     { 
      if (asset == null) 
      { 
       shouldStop = true; 
       return; 
      } 
      if (!shouldStop) 
      { 
       ImagesNames.Add(asset.AssetUrl.AbsoluteString); 
       Console.WriteLine(String.Format("Item[{0}] : {1}", index, asset.ToString())); 
       shouldStop = false; 
      } 
     } 
    } 
} 

答えて

1

を(しよう)、そこからのcompletクラスコードは、ここですべてのアルバムから画像を取得し、最小限のコード例ですされています。これはあなたの目的のためにこれを修正するのは比較的容易でなければなりません。私はコードを試していないが、それは大丈夫です。

Xamarinがこれを行うXamarin.iOSサンプルました
assetsLibrary = new ALAssetsLibrary(); 
photoAssets = new List<ALAsset>(); 

assetsLibrary.Enumerate (ALAssetsGroupType.Album, (ALAssetsGroup group, ref bool stop) => { 
    group.SetAssetsFilter (ALAssetsFilter.AllPhotos); 
    group.Enumerate ((ALAsset asset, nint index, ref bool st) => { 
     int notfound = Int32.MaxValue; 
     if (asset != null && index != notfound) { 
      photoAssets.Add (asset); 
     } 
    }); 
}); 

:彼は私にstringUrlのコンテンツを表示するために起こることができないためMediaNotes

+0

これは、私のクラスでやっているのとほぼ同じ仕事です(完全なクラスを得るために編集を参照してください)。 ALAssetsFilter.AllPhotosは私に写真を返しません。 – Bobby

0

不思議なコード作業が完全に... Debugerが間違った方向に私を指しますリスト。

ですので、自由に使用してください。それは何をすべきかをします。

関連する問題