2010-12-08 19 views
5

मूल प्रश्न (विंडोज फोन 7 के लिए): मैं विंडोज फोन 7 का उपयोग कर रहा हूं और एक प्ले सूची में डाउनलोड पॉडकास्ट जोड़ना चाहता हूं ताकि मैं उन्हें एक ही बार में सुन सकूं। दुर्भाग्य से यूआई इसकी अनुमति नहीं देता है। मैं जानना चाहता हूं कि ऐसा करने के लिए कोई एपीआई है या नहीं।एपीआई ज़्यून

संशोधित प्रश्न (विंडोज फोन 8 के लिए): मैं की जरूरत है विंडोज फोन 8

के लिए एपीआई इनाम प्रदान करें और API संदर्भ यहाँ हकदार जा रहा है के लिए "प्लेलिस्ट में जोड़ें"। काम करने वाले एपीआई संदर्भ लिंक या नमूना के अलावा एक सही उत्तर के रूप में स्वीकार नहीं किया जाएगा।

("अनुपलब्ध/नहीं समर्थित" भी जवाब के रूप में स्वीकार नहीं किया जाएगा। कृपया जवाब इस तरह लिखने के लिए परेशान नहीं है)

+0

@Ozgur सामान्य रूप से यह एक अमान्य संपादित है, लेकिन अपने इनाम मैं इसे aproved की वजह से। – rekire

+0

धन्यवाद @rekire – Ozgur

+0

@ कृष्णाकुमार मैंने अपने संगीत प्लेयर ऐप में इस समस्या का सामना किया, लेकिन बिना किसी सफलता के। यदि आप अपने ऐप को प्रकाशित करने की परवाह नहीं करते हैं, तो आप प्रतिबंधित एपीआई तक पहुंचने के लिए DLLImport का उपयोग कर सकते हैं http://stackoverflow.com/questions/14029388/wp7-how-to-use-restricted-api – onmyway133

उत्तर

1

वहाँ हैं कोई डिफ़ॉल्ट मतलब है Zune API में पहुंचने की। आप इसे अनियंत्रित तरीकों (मूल परत) के माध्यम से कर सकते हैं, लेकिन आखिरकार आपका एप्लिकेशन बाज़ार से अस्वीकार कर दिया जाएगा।

13

जैसा कि मैं mentioned on twitter, विंडोज फोन 8 में आप MediaLibraryExtensions का उपयोग कर डिवाइस की संगीत लाइब्रेरी से गाने जोड़ या निकाल सकते हैं। एमएसडीएन here पर नई क्षमता का उल्लेख किया गया है।

//Microsoft.Xna.Framework.MediaLibraryExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553 

namespace Microsoft.Xna.Framework.Media.PhoneExtensions { 
    public static class MediaLibraryExtensions { 
     public static void Delete(MediaLibrary library, Song song); 
     public static String GetPath(Picture picture); 
     public static String GetPathFromToken(MediaLibrary library, String token); 
     public static Stream GetPreviewImage(Picture picture); 
     public static Song SaveSong(MediaLibrary library, Uri filename, SongMetadata songMetadata, SaveSongOperation operation); 
    } 

    public enum SaveSongOperation { 
     CopyToLibrary, 
     MoveToLibrary 
    } 

    public sealed class SongMetadata { 
     public SongMetadata(); 

     public Uri AlbumArtistBackgroundUri { get; set; } 
     public String AlbumArtistName { get; set; } 
     public Uri AlbumArtUri { get; set; } 
     public String AlbumName { get; set; } 
     public DateTime AlbumReleaseDate { get; set; } 
     public Uri ArtistBackgroundUri { get; set; } 
     public String ArtistName { get; set; } 
     public TimeSpan Duration { get; set; } 
     public String GenreName { get; set; } 
     public String Name { get; set; } 
     public Int32 TrackNumber { get; set; } 
    } 
} 

आप के साथ SaveSong लागू करके यह नया एपीआई का उपयोग कर सकते हैं: हालांकि, मैं API के लिए किसी प्रलेखन नहीं मिल सका है, इसलिए यहाँ नया Microsoft.Xna.Framework.MediaLibraryExtensions.dll के लिए एपीआई प्रिंटआउट है एक स्थानीय यूआरआई और एक कस्टम SongMetadata सहित आईडी 3 मेटाडेटा को संभावित रूप से ओवरराइड करके। यह एपीआई आपको केवल नए गाने स्टोर करने की अनुमति देता है, लेकिन मुझे लगता है कि आप अपने पॉडकास्ट को एक फैक्टियस कलाकार के तहत समूहित कर सकते हैं। इस एपीआई के बारे में त्वरित नोट यह सुनिश्चित करना है कि नया DLL संदर्भ MediaLibraryExtensions DLL को जोड़ना सुनिश्चित करें। आप SongMetadata को शून्य के रूप में भी रख सकते हैं और WP8 ओएस अनुमान आईडी 3 मेटाडेटा भी रख सकते हैं।

private async void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    var sourceFile = await Package.Current.InstalledLocation.GetFileAsync("ChargeOfTheLightBridge.mp3"); 
    CopyFileIntoIsoStore(sourceFile); 

    var library = new MediaLibrary(); 
    library.SaveSong(new Uri(sourceFile.Name, UriKind.RelativeOrAbsolute), 
         new SongMetadata() 
         { 
          ArtistName = "My Custom Artist", 
          AlbumArtistName = "My Custom Artist", 
          Name = "My Custom Track Name", 
          AlbumName = "clubbing baby seals in the face", 
          Duration = TimeSpan.FromSeconds(29), 
          TrackNumber = 1, 
          AlbumReleaseDate = DateTime.Now, 
          GenreName = "Podcasts" 
         }, 
         SaveSongOperation.CopyToLibrary); 
} 

private async void CopyFileIntoIsoStore(StorageFile sourceFile) 
{ 
    using (var s = await sourceFile.OpenReadAsync()) 
    using (var dr = new DataReader(s)) 
    using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
    using (var targetFile = isoStore.CreateFile(sourceFile.Name)) 
    { 
     var data = new byte[s.Size]; 
     await dr.LoadAsync((uint) s.Size); 
     dr.ReadBytes(data); 
     targetFile.Write(data, 0, data.Length); 
    } 
} 

ध्यान दें कि हम IsoStore में एक फ़ाइल को बचाने के लिए इस एपीआई का उपयोग करने के लिए किया था:

यहाँ एक सरल कोड का टुकड़ा है। यह भी ध्यान रखें कि उरी अच्छी तरह से गठित नहीं है या मानक इसोस्टोर उरी में है। यह सिर्फ फाइल का नाम है।

जब हम इस कोड को चलाने के स्निपेट हम निम्न देख सकते हैं:

Artist list with custom artist Album list with custom artist Album view for custom artist playing a custom song

+0

दुर्भाग्यवश यह सही उत्तर नहीं है। आप यहां क्या कर रहे हैं बस गानेकोलेक्शन में गीत जोड़ रहा है। मेरा सवाल है कि प्लेलिस्ट में कैसे जुड़ें ("प्लेलिस्ट में जोड़ें")। इससे पहले कि मैंने इस प्रश्न के लिए बक्षीस शुरू किया था, मैं पहले ही इस बिंदु पर पहुंच गया था। यदि आपके पास PlayList – Ozgur

+0

के लिए कोई सुझाव है, तो कृपया अपने उत्तर पर फिर से जाएं, जैसा कि डेनिस ने कहा था, यह WP7 या WP8 में संभव नहीं है। संगीत और वीडियो केंद्र में एक नकली कलाकार बनाना संभव है जो एक छद्म-प्लेलिस्ट बनाता है। – JustinAngel

+0

जस्टिनएंजेल, भले ही यह सही उत्तर नहीं है, आपके प्रयासों के लिए धन्यवाद। कम से कम आपने मीडिया लाइब्रेरी में गाना कॉपी करने के लिए नमूना बनाया है। – Ozgur