2010-12-08 3 views
5

Ursprüngliche Frage (für Windows Phone 7): Ich benutze Windows Phone 7 und möchte heruntergeladene Podcasts zu einer Playlist hinzufügen, so dass ich sie in einem einzigen zu hören. Leider erlaubt die Benutzeroberfläche dies nicht. Ich würde gerne wissen, ob es irgendwelche API dafür gibt.API zum Hinzufügen von Wiedergabelisten in Zune

Modified Frage (für Windows Phone 8): Ich brauche "add to Playlist" api für Windows Phone 8

Für Prämie berechtigt ist, hier bitte geben und API-Referenz. Anders als die Arbeit API Link oder Beispiel wird nicht als eine richtige Antwort akzeptiert.

(„Nicht verfügbar/nicht unterstützt“ wird auch nicht als Antwort akzeptiert werden. Bitte nicht stören diese Art von Antwort zu schreiben)

+0

@Ozgur normalerweise ist dies eine ungültige bearbeiten, aber durch Ihre Prämie ich es aproved. – rekire

+0

Danke @rekire – Ozgur

+0

@KrishnaKumar Ich hatte dieses Problem in meiner Musik-Player-App, aber mit keinem Erfolg. Wenn Sie Ihre App nicht veröffentlichen möchten, können Sie mit DLLImport auf eingeschränkte APIs zugreifen. Http://StackOverflow.com/Questions/14029388/WP7-how-to-use-restricted-api – onmyway133

Antwort

1

Es gibt kein Standard die Zune-API für den Zugriff bedeutet. Sie können dies über undokumentierte Arten (native Schicht) tun, aber dadurch wird Ihre Anwendung vom Marktplatz abgelehnt.

13

Wie ich mentioned on twitter, in Windows Phone 8 können Sie hinzufügen oder entfernen Songs aus der Musikbibliothek des Geräts mit MediaLibraryExtensions. Die neue Funktion wird in MSDN here erwähnt. Aber ich konnte keine Dokumentation für die APIs finden, also hier der API Ausdruck für die neue Microsoft.Xna.Framework.MediaLibraryExtensions.dll:

//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; } 
    } 
} 

Sie können diese neue API verwenden, durch den Aufruf mit Savesong ein lokaler URI und durch Überschreiben der ID3-Metadaten durch Einbeziehen eines benutzerdefinierten SongMetadata. Mit dieser API können Sie nur neue Songs speichern, aber ich denke, Sie können Ihre Podcasts unter einem faktischen Künstler gruppieren. Kurzer Hinweis zu dieser API ist, um sicherzustellen, dass die neue DLL-Referenz MediaLibraryExtensions DLL hinzugefügt wird. Sie können SongMetadata auch auf null setzen und das WP8-Betriebssystem OS3-Metadaten ableiten.

Hier ist ein einfacher Code-Schnipsel:

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); 
    } 
} 

Beachten Sie, dass wir eine Datei in IsoStore speichern mussten diese API zu verwenden. Beachten Sie auch, dass der Uri nicht gut ausgebildet ist oder in einem Standard-IsoStore Uri. Es ist nur der Dateiname.

Wenn wir diesen Code ausführen Snippet wir folgendes sehen:

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

+0

Leider ist dies nicht die richtige Antwort. Was Sie hier tun, ist nur Song zu SongCollection hinzuzufügen. Meine Frage ist, wie man PlayList hinzufügt ("Add to Playlist"). Ich habe diesen Punkt bereits erreicht, bevor ich für diese Frage ein Kopfgeld bekam. Bitte lesen Sie Ihre Antwort noch einmal, wenn Sie Vorschläge für PlayList haben. – Ozgur

+0

Wie Dennis sagte, ist das weder in WP7 noch in WP8 möglich. Was möglich ist, ist ein Mock-Artist im Music & Video-Hub, der eine Pseudo-Playlist erstellt. – JustinAngel

+0

JustinAngel, auch wenn dies nicht die richtige Antwort ist, danke für Ihre Bemühungen. Zumindest haben Sie ein Sample zum Kopieren eines Songs in die Medienbibliothek erstellt. – Ozgur

Verwandte Themen