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

은 IsolatedStorage와 같이 영구적 인 XML 문서입니까? 대부분의 사람들이 휴대 전화에 4GB 이상의 음악을 저장할 수 있기 때문에 실용적이지 않은 것처럼 말입니다. – user2696648

+0

XML 문서는 휴대 전화의 콘텐츠를 나열하고 정리하는 가장 좋은 방법입니다. 라이브러리의 크기는 중요하지 않습니다. 중요한 것은 라이브러리를 한 번만 스캔해야한다는 것입니다. 콘텐츠는 XMl 형식이며 사용자가 플레이어를 다시 시작할 때마다로드 할 수 있습니다. 이것은 로딩 속도를 상당히 증가시킬 수 있습니다. foreach 루프가 매우 빠르다는 것을 알아야합니다. Linq와 같은 다른 기술을 사용하면 프로그램이 어느 정도 느려질 수 있습니다. 그래서 mp3 플레이어의 나머지 사람들처럼 내 마음에 오는 유일한 해결책은 내용을 나열하는 것입니다. – Transcendent

+0

XML 형식으로 저장하는 방법에 대한 링크를 추가 할 수 없습니까? – user2696648

0

글쎄, 효율적인 방법은 아닙니다. MediaLibrary에있는 어떤 노래를 찾으려면 LINQ을 사용하십시오. 예

MediaPlayer.Play(library.Songs.First(x=>x.Name == songName));