2013-08-20 31 views
1

在我的應用我有以下的代碼,它得到的手機MediaLibrary並過濾掉來自MediaLibrary.Songs正確的選擇Song並播放:如何從手機的MediaLibrary獲取特定的歌曲?和優化代碼

using (MediaLibrary library = new MediaLibrary()) 
{ 
    foreach (var item in library.Songs) 
    { 
     if (item.Name == songName) 
     { 
      FrameworkDispatcher.Update(); 
      MediaPlayer.Play(item); 
     } 
    } 
    library.Dispose(); 
} 

然而,這需要相當長一段時間,導致暫停。從手機的MediaLibrary.Songs訪問特定的Song有沒有更快/更有效的方式?

感謝您的幫助。

回答

0

也許您必須在讀取目錄後將值存儲在XML文檔中,如果庫沒有更改(檢查整個庫的大小),這可以爲您節省大量時間。如果確實如此,則可以再次檢查庫並更新XML。

+0

是XML文檔,與IsolatedStorage類似嗎?就好像它們是不切實際的,因爲大多數人的手機上存儲有4GB以上的音樂。 – user2696648

+0

XML文檔是列出和組織電話內容的最佳方式,圖書館的大小並不重要,重要的是該圖書館只需掃描一次,內容將列在XMl格式,並且可以在用戶重新啓動播放器時加載。這可以顯着提高加載速度。你應該知道foreach循環速度非常快,如果你使用Linq等其他技術,你的程序可能會在一定程度上減速。因此,我想到的唯一解決方案就像列出其中的內容。 – Transcendent

+0

您無法添加關於如何以XML格式存儲的鏈接嗎? – user2696648

0

那麼這不是一個有效的方法。 要在MediaLibrary中找到任何歌曲,請使用LINQ。 示例

MediaPlayer.Play(library.Songs.First(x=>x.Name == songName)); 
相關問題