2017-11-08 9 views
0

私はいくつかのオーディオトラックを再生するアプリをやろうとしています。トラックは "Music"ディレクトリ内にあり、固定されているとは言えないので、ファイル名を使って1行ずつ読むことはできません。Xamarin.Formsでは、プロジェクトのフォルダからアセットのリストを読み取る方法は?

ソリューションのディレクトリツリー:

MyAppPage.xaml.cs

namespace MyNamespace 
{ 
    public partial class MyAppPage : ContentPage 
    { 
     public MyAppPage() 
     { 
      InitializeComponent(); 

      var files = Directory.GetFiles("./Music"); 
      musicListView.ItemsSource = files; 
     } 
    } 
} 

MyAppPage.xaml

MySolution/ 

    MyApp/ 
    Music/ 
     track01 
     track02 
     ... 
    App.xaml 
    MyAppPage.xaml 

    MyApp.Droid/ 
    ... 

    MyApp.iOS/ 
    ... 

私は達成するために必要なものは次のようなものです

<?xml version="1.0" encoding="utf-8"?> 
<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:local="clr-namespace:MyNamespace" 
    x:Class="MyNamespace.MyAppPage"> 

    <ContentPage.Content> 

     <ListView x:Name="musicListView" /> 

    </ContentPage.Content> 

</ContentPage> 

私もしてみました:

var currentDir = Directory.GetCurrentDirectory(); 
var files = Directory.GetFiles(Path.Combine(currentDir, "Music")); 

しかし、現在のディレクトリは、単に "/" です。私は単にパスを迷惑にしているのか、Xamarinがこの種の操作を許可していないのか分かりません。その場合、これを行うための標準的なアプローチはありますか?

答えて

1

handling files in Xamarinでこの文書のファイルの保存と読み込みのセクションを確認してください。異なるプラットフォームでこれを異なる方法で処理する必要があるかもしれません。この記事では、PCLで使用するインターフェイスを作成する方法について詳しく説明します。

Xamarin.Formsはそれぞれ独自のファイルシステムを備えているため、ファイルの読み込みと保存のための単一のアプローチはありません。

Here is an article describing how to load a bundled file in iOS

some good chat on this thread for reading files bundled with your appは(再びiOSの中で)もあります:

var path = NSBundle.MainBundle.PathForResource("FileName", "json"); 
0

NugetにPCLStorageをチェックしてください。それはあなたがアプリケーションの独自のストレージスペース内のファイルを保存し、取得することができます。

0

Mmm wonnaはリストを取得しますか?

var assembly = typeof(App).GetTypeInfo().Assembly; 
    var MyAssemblyName = assembly.GetName().Name; //now this is for the future 
    //if you want acces files by a generated name would be: 
    // MyAssemblyName + ".Music."+filename 
    //anyway now we are building the whole list: 
    var MusicFiles = new List<string>(); //todo change to your music class 
    foreach (var res in assembly.GetManifestResourceNames()) 
    { 
     if (res.Contains(".track")) 
     { 
      MusicFiles.Add(res); 
     } 
    } 

組み込みリソース(ファイルのプロパティの確認)としてファイルを含めることを忘れないでください。

詳細情報:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/files/

関連する問題