2017-09-28 14 views
1

録音したオーディオをUSBストレージに保存して、listboxにリストします。私はそれらを選択し、それぞれのファイルを再生するために '再生'をクリックしたいと思います。現在、私はファイル名を読むことができますが、ファイルを再生することはできません。Windows IoT Raspberry Pi 3 C#リストボックスのオーディオを選択&再生

マイコードは次のとおりです。更新

: は(レコードリストがlistboxの名前です)

private async void recordList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      recordList.SelectedItem = recordIndex; 
      string recordFileName = recordList.SelectedItem.ToString(); 
      StatusMessage.Text = recordFileName; 

      StorageFolder externalDevices = KnownFolders.RemovableDevices; 
      IReadOnlyList<StorageFolder> externalDrives = await externalDevices.GetFoldersAsync(); 
      StorageFolder usbStorage = externalDrives[0]; 
      StorageFolder recordFolder = await usbStorage.CreateFolderAsync(recFolderName, CreationCollisionOption.OpenIfExists); 
      await usbStorage.GetFolderAsync(recFolderName); 
      StorageFile recordFile = await usbStorage.GetFileAsync(recordFileName); 

      recordPlayer.Source = Windows.Media.Core.MediaSource.CreateFromStorageFile(recordFile); 
      recordPlayer.AutoPlay = false; 
     } 

これはコードですlistboxに私のUSBドライブ内のすべての.mp3ファイルを表示するために使用されます。

private async void displayRecord() 
    { 
     StorageFolder externalDevices = KnownFolders.RemovableDevices; 
     IReadOnlyList<StorageFolder> externalDrives = await externalDevices.GetFoldersAsync(); 
     StorageFolder usbStorage = externalDrives[0]; 

     StorageFolder recordFolder = await usbStorage.CreateFolderAsync(recFolderName, CreationCollisionOption.OpenIfExists); 
     await usbStorage.GetFolderAsync(recFolderName); 
     IReadOnlyList<StorageFile> recFileList = await recordFolder.GetFilesAsync(); 

     foreach(StorageFile file in recFileList) 
     { 
      recordList.Items.Add(file.Name); 
     } 

    } 
+0

変数** recordIndex **の意味は?選択したインデックスの整数インデックス?上に示したコードはどのような機能ですか?詳細情報を教えてください。 –

+0

リスト内の項目を選択したときの変数** recordIndex **の値は何ですか?recordIndexとrecordFileNameをデバッグして監視できます。 –

+0

こんにちはMicheal、私は上記の詳細なコードを追加しました。はい、recordindexは、リストボックス内の選択したファイルのインデックスです。私はUSBストレージからすべての.mp3ファイルを一覧表示し、それらを選択し、それぞれのファイル名を読んだり、テキストブロックに表示したりできました。しかし、私はそれらを私のrecordPlayer(MediaPlayer)で再生するためにロードすることはできませんでした。 – mylim

答えて

2

問題は、選択したファイルを取得する方法が間違っているため、usbStorageではなくrecordFolderからファイルを取得する必要があります。

await usbStorage.GetFolderAsync(recFolderName);

あなたがレコードフォルダを取得しますが、ファイルを取得するには、このフォルダにリダイレクトされませんでした。

このラインコードで

StorageFile recordFile = await usbStorage.GetFileAsync(recordFileName);

は、ファイルを取得することはありませんもちろん、例外がスローさがあるだろう、usbのルートフォルダかどうか、あなたの記録フォルダからファイルを取得します。

私は変更されたrecordList_SelectionChanged関数の下のコードを参照してください、それはokを実行します。

 //await usbStorage.GetFolderAsync(recFolderName); 
     //StorageFile recordFile = await usbStorage.GetFileAsync(recordFileName); 
     recordFolder = await usbStorage.GetFolderAsync(recFolderName); 
     StorageFile recordFile = await recordFolder.GetFileAsync(recordFileName); 
関連する問題