与众不同 windows phone (15) - Media(媒体)之后台播放音频
生活随笔
收集整理的這篇文章主要介紹了
与众不同 windows phone (15) - Media(媒体)之后台播放音频
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文:與眾不同 windows phone (15) - Media(媒體)之后臺播放音頻
[索引頁]
[源碼下載]
作者:webabcd
介紹
與眾不同 windows phone 7.5 (sdk 7.1) 之媒體
- 通過 AudioPlayerAgent 實現(xiàn)在后臺播放音頻
示例
演示如何通過后臺代理的方式來實現(xiàn)音頻在后臺的播放
1、后臺代理
MyAudioPlayerAgent/AudioPlayer.cs
2、前臺調(diào)用后臺代理播放音頻
BackgroundAudio.xaml
BackgroundAudio.xaml.cs
/** 本例演示如何播放后臺音頻* * BackgroundAudioPlayer - 提供調(diào)用后臺播放音頻的相關(guān)功能* Instance - 返回 BackgroundAudioPlayer 實例* Track - 當(dāng)前的 AudioTrack 對象。說明參見:MyAudioPlayerAgent/AudioPlayer.cs* PlayerState - 播放器狀態(tài)(Microsoft.Phone.BackgroundAudio.PlayState 枚舉)。說明參見:MyAudioPlayerAgent/AudioPlayer.cs* Position - 當(dāng)前 AudioTrack 的播放位置* CanPause - 是否可暫停* CanSeek - 是否可以設(shè)置 Position 屬性* BufferingProgress - 緩沖百分比(0 - 1之間)* Volume - 音量(0 - 1之間,默認(rèn)值為 0.85)。注:目前 wp 沒有提供 uvc(Universal Volume Control) 的接口* * Play - 播放當(dāng)前 AudioTrack 的當(dāng)前位置* Pause - 暫停* Stop - 停止* Rewind - 快退* FastForward - 快進(jìn) * SkipPrevious - 跳至上一個音頻* SkipNext - 跳至下一個音頻* Close - 關(guān)閉并釋放所有資源* * PlayStateChanged - PlayState 發(fā)生改變時所觸發(fā)的事件*/using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls;using Microsoft.Phone.BackgroundAudio; using System.Windows.Navigation; using System.IO.IsolatedStorage; using System.Windows.Resources;namespace Demo.Media {public partial class BackgroundAudio : PhoneApplicationPage{public BackgroundAudio(){InitializeComponent();Init();}protected override void OnNavigatedTo(NavigationEventArgs e){ProcessPlayState();}private void Init(){// 由于播放本地音頻時只能從獨立存儲中播放,所以此處把示例用音頻文件從程序包中復(fù)制到獨立存儲using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication()){if (!storage.FileExists("SuperMario.mp3")){StreamResourceInfo resource = Application.GetResourceStream(new Uri("Assets/SuperMario.mp3", UriKind.Relative));using (IsolatedStorageFileStream file = storage.CreateFile("SuperMario.mp3")){int chunkSize = 4096;byte[] bytes = new byte[chunkSize];int byteCount;while ((byteCount = resource.Stream.Read(bytes, 0, chunkSize)) > 0){file.Write(bytes, 0, byteCount);}}}}CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);BackgroundAudioPlayer.Instance.PlayStateChanged += new EventHandler(Instance_PlayStateChanged);}// 實時更新當(dāng)前音頻播放的位置void CompositionTarget_Rendering(object sender, EventArgs e){if (BackgroundAudioPlayer.Instance != null)lblPosition.Text = BackgroundAudioPlayer.Instance.Position.TotalSeconds.ToString();}void Instance_PlayStateChanged(object sender, EventArgs e){ProcessPlayState();}void ProcessPlayState(){// 指定播放按鈕是顯示“播放”還是“暫停”switch (BackgroundAudioPlayer.Instance.PlayerState){case PlayState.Playing:btnPlay.Content = "暫停";break;case PlayState.Paused:case PlayState.Stopped:btnPlay.Content = "播放";break;}// 顯示音頻的 Title 和 Artistif (BackgroundAudioPlayer.Instance.Track != null)lblCurrentTrack.Text = BackgroundAudioPlayer.Instance.Track.Title + " by " + BackgroundAudioPlayer.Instance.Track.Artist;}// 播放或暫停音頻private void btnPlay_Click(object sender, RoutedEventArgs e){if (PlayState.Playing == BackgroundAudioPlayer.Instance.PlayerState){BackgroundAudioPlayer.Instance.Pause();}else{BackgroundAudioPlayer.Instance.Play();}}// 跳至下一首音頻private void btnNext_Click(object sender, RoutedEventArgs e){BackgroundAudioPlayer.Instance.SkipNext();}// 跳至上一首音頻private void btnPrev_Click(object sender, RoutedEventArgs e){BackgroundAudioPlayer.Instance.SkipPrevious();}// 快退private void btnRewind_Click(object sender, RoutedEventArgs e){if (PlayState.Playing == BackgroundAudioPlayer.Instance.PlayerState)BackgroundAudioPlayer.Instance.Rewind();}// 快進(jìn)private void btnFastForward_Click(object sender, RoutedEventArgs e){if (PlayState.Playing == BackgroundAudioPlayer.Instance.PlayerState)BackgroundAudioPlayer.Instance.FastForward();}} }
OK
[源碼下載]
總結(jié)
以上是生活随笔為你收集整理的与众不同 windows phone (15) - Media(媒体)之后台播放音频的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL中用户授权/删除授权的方法
- 下一篇: Unity学习入门