5

元の質問 (Windows Phone 7 の場合): Windows Phone 7 を使用していますが、ダウンロードしたポッドキャストを再生リストに追加して、一度に聞くことができるようにしたいと考えています。残念ながら、UI はこれを許可していません。これを行うための API があるかどうかを知りたいです。

変更された質問 (Windows Phone 8 の場合): Windows Phone 8の「プレイリストに追加」API が必要です

報奨金を受ける資格がある場合は、ここに API リファレンスを提供してください。動作する API 参照リンクまたはサンプル以外は、正解として受け入れられません。

(「利用不可・非対応」も回答として受け付けません。わざわざそのような回答を書かないでください)

4

2 に答える 2

13

Twitter で述べたように、Windows Phone 8 では、MediaLibraryExtensions を使用して、デバイスの音楽ライブラリから曲を追加または削除できます。新しい機能については、MSDN のこちらで言及されています。ただし、API のドキュメントが見つからなかったので、新しい Microsoft.Xna.Framework.MediaLibraryExtensions.dll の API 出力を次に示します。

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

この新しい API を使用するには、ローカル URI を使用して SaveSong を呼び出し、カスタムの SongMetadata を含めることで ID3 メタデータを上書きする可能性があります。この API では新しい曲のみを保存できますが、ポッドキャストを特定のアーティストにグループ化できると思います。この API に関する簡単な注意点は、新しい DLL 参照 MediaLibraryExtensions DLL を必ず追加することです。SongMetadata を null のままにして、WP8 OS に ID3 メタデータを推測させることもできます。

簡単なコード スニペットを次に示します。

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

この API を使用するには、IsoStore にファイルを保存する必要があることに注意してください。また、Uri は整形式ではないか、標準の IsoStore Uri ではないことに注意してください。ファイル名だけです。

このコード スニペットを実行すると、次のことがわかります。

カスタムアーティストのアーティストリスト カスタム アーティストのアルバム リスト カスタム アーティストのアルバム ビュー カスタムソングの再生

于 2013-01-02T05:30:02.903 に答える
1

ZuneAPIにアクセスするデフォルトの手段はありません。文書化されていない方法(ネイティブレイヤー)を介してこれを行うことができますが、最終的にはアプリケーションがマーケットプレイスから拒否されます。

于 2011-04-09T03:58:52.373 に答える