2010-12-08 35 views
5

Question d'origine (pour Windows Phone 7): J'utilise Windows Phone 7 et je voudrais ajouter des podcasts téléchargés à une liste de lecture pour pouvoir les écouter en un seul passage. Malheureusement, l'interface utilisateur ne le permet pas. Je voudrais savoir s'il y a une API pour le faire.API pour ajouter des playlists dans le Zune

Question modifiée (pour windows phone 8): J'ai besoin "ajouter à la playlist" api pour windows phone 8

Pour avoir le droit de prime s'il vous plaît fournir et référence de l'API ici. Autre que le lien ou l'échantillon de référence de l'API de travail ne sera pas accepté comme réponse correcte.

(« Non disponible/non pris en charge » ne sera également pas être accepté comme réponse. S'il vous plaît ne prenez pas la peine d'écrire ce genre de réponse)

+0

@Ozgur normalement ceci est une modification invalide mais causé par votre générosité, j'Aproved il. – rekire

+0

Merci @rekire – Ozgur

+0

@KrishnaKumar J'ai lutté ce problème dans mon application de lecteur de musique, mais sans succès. Si vous ne vous souciez pas de publier votre application, vous pouvez utiliser DLLImport pour accéder aux API restreintes http://stackoverflow.com/questions/14029388/wp7-how-to-use-restricted-api – onmyway133

Répondre

1

Il n'y aucun cas par défaut d'accéder à l'API Zune. Vous pouvez le faire via des moyens non documentés (couche native), mais cela finira par entraîner le rejet de votre application sur Marketplace.

13

Comme je mentioned on twitter, dans Windows Phone 8, vous pouvez ajouter ou supprimer des morceaux de la bibliothèque musicale de l'appareil en utilisant MediaLibraryExtensions. La nouvelle fonctionnalité est mentionnée sur MSDN here. Cependant, je ne pouvais pas trouver toute la documentation pour les API, voici donc l'impression de l'API pour la nouvelle 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; } 
    } 
} 

Vous pouvez utiliser cette nouvelle API en invoquant SaveSong avec un URI local et en remplaçant potentiellement les métadonnées ID3 en incluant une SongMetadata personnalisée. Cette API vous permet uniquement de stocker de nouvelles chansons, mais je suppose que vous pouvez regrouper vos podcasts sous un artiste factieux. Une note rapide sur cette API est de s'assurer d'ajouter la nouvelle DLL DLL MediaLibraryExtensions de référence. Vous pouvez également conserver la propriété SongMetadata comme nulle et avoir les métadonnées ID3 du système d'exploitation WP8.

est ici d'un simple extrait de code:

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

Notez que nous avons dû enregistrer un fichier dans IsoStore d'utiliser cette API. Notez également que l'Uri n'est pas bien formé ou dans un IriStore Uri standard. C'est juste le nom du fichier.

Quand nous courons ce code snippet, nous pouvons voir ce qui suit:

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

+0

Malheureusement, cette réponse n'est pas correcte. Ce que vous faites ici, c'est juste ajouter une chanson à SongCollection. Ma question est comment ajouter dans PlayList ("ajouter à playlist"). J'ai déjà atteint ce point avant de commencer la générosité pour cette question. S'il vous plaît revoir votre réponse si vous avez des suggestions pour PlayList – Ozgur

+0

Comme Dennis l'a dit, ce n'est pas possible dans WP7 ou WP8. Ce qui est possible, c'est de créer un simulacre d'artiste dans le hub Musique & Vidéo qui crée une pseudo-playlist. – JustinAngel

+0

JustinAngel, même si ce n'est pas la bonne réponse, merci pour vos efforts. Au moins, vous avez créé un échantillon pour copier la chanson dans la médiathèque. – Ozgur