與眾不同windows phone (40)

來源:互聯網
上載者:User

8.0 媒體: 音樂中心的新增功能, 圖片中心的新增功能, 後台音樂播放的新增功能

介紹

與眾不同 windows phone 8.0 之 媒體

添加音樂到音樂中心,從音樂中心刪除音樂

與圖片中心相關的新增功能

BackgroundAudioPlayer 的新增功能

樣本

1、示範如何添加音樂 到音樂中心,以及如何從音樂中心刪除音樂

MusicMediaLibrary/MusicMediaLibrary.xaml

<phone:PhoneApplicationPage    x:Class="Demo.Media.MusicMediaLibrary"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    FontFamily="{StaticResource PhoneFontFamilyNormal}"    FontSize="{StaticResource PhoneFontSizeNormal}"    Foreground="{StaticResource PhoneForegroundBrush}"    SupportedOrientations="Portrait" Orientation="Portrait"    mc:Ignorable="d"    shell:SystemTray.IsVisible="True">        <Grid Background="Transparent">        <StackPanel Orientation="Vertical">                <Button x:Name="btnAdd" Content="添加音樂到音樂中心" Click="btnAdd_Click" />                <Button x:Name="btnDelete" Content="從音樂中心刪除音樂" Click="btnDelete_Click" />            </StackPanel>    </Grid>    </phone:PhoneApplicationPage>

MusicMediaLibrary/MusicMediaLibrary.xaml.cs

< /p>

/* * 示範如何添加音樂到音樂中心,以及如何從音樂中心刪除音樂 *  *  * 在 wp8 中新增了 Microsoft.Xna.Framework.Media.PhoneExtensions.MediaLibraryExtensions,其擴充了 MediaLibrary 類 *     MediaLibrary.SaveSong(Uri filename, SongMetadata songMetadata, SaveSongOperation operation) - 儲存音樂到音樂中心,返回 Song 對象 *         Uri filename - 需要添加到音樂中心的音樂檔案,必須在 IsolatedStorage 下 *         SongMetadata songMetadata - 中繼資料 *         SaveSongOperation operation - CopyToLibrary 拷貝音樂檔案;MoveToLibrary 移動音樂檔案 *     MediaLibrary.Delete(Song song) - 根據 Song 對象從音樂中心刪除資料 *  *  * 註: * 1、需要在 manifest 中增加配置 <Capability Name="ID_CAP_MEDIALIB_AUDIO" /> * 2、音樂檔案只支援mp3和wma,且必須在 IsolatedStorage 下 * 3、音樂的封面檔案只支援jpg,且必須在 IsolatedStorage 下 *  *  * 另: * 1、播放音樂或視頻的話,需要在 manifest 中增加配置 <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" /> * 2、除了用 MediaElement 播放音樂外,還可以用 MediaPlayer(xna) 播放,參見:http://www.cnblogs.com/webabcd/archive/2011/07/11/2102713.html */    using System;using System.Collections.Generic;using System.Windows;using Microsoft.Phone.Controls;using Microsoft.Xna.Framework.Media;using Microsoft.Xna.Framework.Media.PhoneExtensions;using System.IO.IsolatedStorage;using System.IO;using Windows.Storage.Streams;using Windows.Storage;using System.Threading.Tasks;    namespace Demo.Media{    public partial class MusicMediaLibrary : PhoneApplicationPage    {        private Random _random = new Random();            public MusicMediaLibrary()        {            InitializeComponent();        }            private async void btnAdd_Click(object sender, RoutedEventArgs e)        {            // 將相關檔案複製到 ApplicationData 的 Local 目錄下            await CopyFileToApplicationData(new Uri("ms-appx:///Assets/Demo.mp3", UriKind.Absolute), "Demo.mp3");            await CopyFileToApplicationData(new Uri("ms-appx:///Assets/Son.jpg", UriKind.Absolute), "Son.jpg");                // 將相關檔案複製到 IsolatedStorage 的根目錄下            // CopyFileToIsolatedStorage(new Uri("Assets/Demo.mp3", UriKind.Relative), "Demo.mp3");            // CopyFileToIsolatedStorage(new Uri("Assets/Son.jpg", UriKind.Relative), "Son.jpg");                // 需要添加到音樂中心的音樂檔案僅支援mp3和wma,且必須在 ApplicationData 下,以下格式會先在 Local 目錄下找,找不到再到 Local/IsolatedStorage 目錄下找            Uri musicUri = new Uri("Demo.mp3", UriKind.Relative);            // 需要添加到音樂中心的音樂封面檔案僅支援jpg,且必須在 ApplicationData 下,以下格式會先在 Local 目錄下找,找不到再到 Local/IsolatedStorage 目錄下找            Uri picUri = new Uri("Son.jpg", UriKind.Relative);                // 構造 SongMetadata 對象            // 如果按以下內容設定 SongMetadata 對象,則音樂檔案在音樂中心的儲存路徑為:webabcd/webabcd album/music xxxx.mp3            SongMetadata sm = new SongMetadata();            sm.AlbumName = "webabcd album";            sm.ArtistName = "webabcd";            sm.GenreName = "rock";            sm.Name = "music " + _random.Next(1000, 10000).ToString();            sm.ArtistBackgroundUri = picUri;            sm.AlbumArtUri = picUri;            sm.AlbumArtistBackgroundUri = picUri;                MediaLibrary library = new MediaLibrary();                try            {                // 添加音樂檔案到音樂中心                Song song = library.SaveSong(musicUri, sm, SaveSongOperation.CopyToLibrary);            }            catch (Exception ex)            {                // 如果檔案已存在,則會拋出 System.InvalidOperationException 異常                MessageBox.Show(ex.Message);            }        }            private void btnDelete_Click(object sender, RoutedEventArgs e)        {            /*             * MediaLibrary - 媒體庫             *     Songs - 返迴音樂中心的 SongCollection             *     Albums - 返迴音樂中心的 AlbumCollection             *     Artists - 返迴音樂中心的 ArtistCollection             *     Genres - 返迴音樂中心的 GenreCollection             *     Playlists - 返迴音樂中心的 Playlists             */                MediaLibrary library = new MediaLibrary();                // 通過 MediaLibrary 遍曆音樂中心中的音樂檔案            foreach (Song song in library.Songs)            {                // 從音樂中心刪除音樂檔案                if (song.Artist.Name == "webabcd")                    library.Delete(song);            }        }                // 將檔案從 Package 複製到 IsolatedStorage 的根目錄下        private void CopyFileToIsolatedStorage(Uri sourceUri, string targetFileName)        {            IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();            using (Stream input = Application.GetResourceStream(sourceUri).Stream)            {                using (IsolatedStorageFileStream output = isf.CreateFile(targetFileName))                {                    byte[] readBuffer = new byte[4096];                    int bytesRead = -1;                        while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0)                    {                        output.Write(readBuffer, 0, bytesRead);                    }                }            }        }            // 將檔案從 Package 複製到 ApplicationData 的 Local 目錄下        private async Task CopyFileToApplicationData(Uri sourceUri, string targetFileName)        {            StorageFolder applicationFolder = ApplicationData.Current.LocalFolder;                StorageFile sourceFile = await StorageFile.GetFileFromApplicationUriAsync(sourceUri);            await sourceFile.CopyAsync(applicationFolder, targetFileName, NameCollisionOption.ReplaceExisting);        }    }}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.