Background Audio Player 應用

  • 872
  • 0

摘要:Background Audio 應用

前幾天小編在開發 Windows phone app的時候,本來是要找隱藏式播放的功能。

 

但卻意外的找到 Background Audio Player 這個應用,然後覺得很有用所以跟大家分享一下。

 

Background Audio Player 這個主要能在你播放音樂程式的時候,鎖上螢幕也能繼續播放音樂;

 

不會因為鎖頻就停止播放程式。以下就開始介紹Background Audio Player :

 

 

步驟一:在你的專案底下按右鍵新增一個資料夾,要存放音樂用的。

 

然後在此資料夾加入要播放的音樂後,要再選取音樂按右鍵轉到屬性頁面更改設定;

 

在  複製到輸出目錄  中,單擊下拉箭頭,然後選擇 有更新時才複製 。

 

 

步驟二:新增三個Button、一個Textblolck

 

分別是:btn_up、btn_play、btn_down(上一首、播放、下一首)與 txt_title

 

 

步驟三:在cs檔底下引用 BackgroundAudio

 


using Microsoft.Phone.BackgroundAudio;

 

步驟四:建立三個Button.Click事件並加入程式碼:

 


        private void btn_up_Click(object sender, RoutedEventArgs e)
        {
            BackgroundAudioPlayer.Instance.SkipPrevious();
        }

        private void btn_play_Click(object sender, RoutedEventArgs e)
        {
            if (PlayState.Playing == BackgroundAudioPlayer.Instance.PlayerState)
            {
                BackgroundAudioPlayer.Instance.Pause();
            }
            else
            {
                BackgroundAudioPlayer.Instance.Play();
            }
        }

        private void btn_down_Click(object sender, RoutedEventArgs e)
        {
            BackgroundAudioPlayer.Instance.SkipNext();
        }

 

這段程式碼意思一樣跟命名Button一樣,就是加入 上一首、播放、下一首  事件,

 

比較不同的在btn_play 多了判斷來切換要  播放 或 暫停 。

 

 

步驟五:在 MainPage() 加入下段程式碼,新增BackgroundAudioPlayer事件

 


BackgroundAudioPlayer.Instance.PlayStateChanged += new EventHandler(Instance_PlayStateChanged);

 

 

步驟六:新增Instance_PlayStateChanged事件

 


        void Instance_PlayStateChanged(object sender, EventArgs e)
        {
            switch (BackgroundAudioPlayer.Instance.PlayerState)
            {
                case PlayState.Playing:
                    btn_play.Content = "pause";
                    break;

                case PlayState.Paused:
                case PlayState.Stopped:
                    btn_play.Content = "play";
                    break;
            }

            if (null != BackgroundAudioPlayer.Instance.Track)
            {
                txt_title.Text = BackgroundAudioPlayer.Instance.Track.Title +
                                       " by " +
                                       BackgroundAudioPlayer.Instance.Track.Artist;
            }
        }

 

 

步驟七:我們要在 OnNavigatedTo 加入下段程式碼,因為在鎖頻畫面要回來應用程式裡面的時候,

 

要更新目前播放資訊,才不會切回應用程式的時候又變回一開始狀態。

 


        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (PlayState.Playing == BackgroundAudioPlayer.Instance.PlayerState)
            {
                btn_play.Content = "pause";
                txt_title.Text = BackgroundAudioPlayer.Instance.Track.Title +
                                       " by " +
                                       BackgroundAudioPlayer.Instance.Track.Artist;

            }
            else
            {
                btn_play.Content = "play";
                txt_title.Text = "";
            }
        }

 

 

現在可以休息一小段,到這邊已經完成了三分之一了!

 

接下來我們要到 APP.xaml.cs 裡面添加程式碼來作初始化。

 

 

首先第一步:先引入下列兩段程式碼

 


using System.IO.IsolatedStorage;
using System.Windows.Resources;

 

第二步:在APP class  新增下段程式碼

 


private void CopyToIsolatedStorage()
        {
            using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                string[] files = new string[] { "Ring01.wma", "Ring02.wma", "Ring03.wma" };

                foreach (var _fileName in files)
                {
                    if (!storage.FileExists(_fileName))
                    {
                        string _filePath = "Music/" + _fileName;
                        StreamResourceInfo resource = Application.GetResourceStream(new Uri(_filePath, UriKind.Relative));

                        using (IsolatedStorageFileStream file = storage.CreateFile(_fileName))
                        {
                            int chunkSize = 4096;
                            byte[] bytes = new byte[chunkSize];
                            int byteCount;

                            while ((byteCount = resource.Stream.Read(bytes, 0, chunkSize)) > 0)
                            {
                                file.Write(bytes, 0, byteCount);
                            }
                        }
                    }
                }
            }
        }

 

要注意的這段程式碼 string _filePath = "Audio/" + _fileName; 

 

在一開始新增的音樂資料夾,記得改成讀者的放音樂的資料夾名稱。

 

 

第三步:找到 public App() { } 添加下段程式碼,才能呼叫到第二步的程式。

 


CopyToIsolatedStorage();

 

 

到這邊已經完成了三分之二了,接下來我們只要在實作一個 後台播放器 就能完成此應用了!!

 

在來我們轉到  Background Audio Player 延伸  來,來繼續完成此應用!!也會附上此應用的效果截圖。

 

-------------------------------------

 

以上的內容我是以<How to play background audio for Windows Phone>做為參考。

 

小編寫的比較簡單,如果讀者想要更了解可以到此網頁學習學習。