摘要: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>做為參考。
小編寫的比較簡單,如果讀者想要更了解可以到此網頁學習學習。