2013-07-26 216 views
0

我正在開發wp7和某些部分的應用程序。當應用程序關閉時繼續播放音樂

我開始的MediaElement從孤立的存儲播放我的音樂文件,可用功能(播放,暫停,下一個,上,搜索)和一切都完美!

現在我想使應用程序繼續播放用戶退出或頁面卸載或類似的東西時的MediaElement已經在播放!在的Abobe

通知嘗試

 
list.playlist: is a list with audiotracks 
num_input: is the number of music file in list that will play, (get: from mediaelement) 
time_input: is the timespan from mediaelement before stop, (set: backgroundaudioplayer to start) 
play: is boolean variable, true if mediaelement plays 
Stop(): is function that stops mediaelement from playing 

這就是我試圖爲:

private void PhoneApplicationPage_Unloaded(object sender, RoutedEventArgs e) 
{ 
    if (play == true) 
    { 
     TimeSpan time_input = med.Position; 
     Stop(); 

     BackgroundAudioPlayer.Instance.Close(); 
     BackgroundAudioPlayer.Instance.Track = list.playlist[num_input]; 
     BackgroundAudioPlayer.Instance.Position = time_input; 
     if (PlayState.Playing == BackgroundAudioPlayer.Instance.PlayerState) {  BackgroundAudioPlayer.Instance.Pause(); } 
     else { BackgroundAudioPlayer.Instance.Play(); } 
     } 
} 

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

     case PlayState.Paused: 
     case PlayState.Stopped: 
      break; 
    } 
} 

的問題是,當應用程序頁面卸載(不是用戶出口,第一個問題) 背景audioplayer獲取名稱和EnabledControls和所有員工,但它不播放,即使我按播放按鈕(所以按鈕不工作,第二個問題)!

我也想控制我的那個球員(上,下一個,播放,暫停),即使應用程序被關閉旁邊的應用程序的列表!

所有的歌曲都位於隔離和我在數據庫中的歌曲名和文件名。音軌看起來像:

AudioTrack audiotrack1 = new AudioTrack(new Uri(emp.EmployeeFile + ".mp3", UriKind.Relative), emp.EmployeeName, null, null, null, null, EnabledPlayerControls.All); 

謝謝!

回答

1

實現背景音頻需要更多的工作。請參閱本文以進行演練:http://msdn.microsoft.com/EN-US/library/windowsphone/develop/hh202978(v=vs.105).aspx

請注意代理存在於另一個進程中,我不確定SqlCe是否支持從不同進程對同一數據庫的併發訪問。 IMO與後臺代理通信的最佳方式是由名爲System.Threading.Mutex保護的隔離存儲文件(例如播放列表)。

+0

請記住,代理程序將歌曲播放列表作爲變量而不是數據庫,就像您說的那樣!計劃(數據庫--->靜態變量列表--->代理),我已經看到這個文檔,但我不想通過應用程序控制代理,但通過代理關閉應用程序時的列表! –

+0

我的計劃是數據庫 - >列表(在GUI進程中) - >孤立的存儲文件 - >靜態列表(在代理程序中) - >背景音頻播放器。請記住,操作系統有時會終止您的GUI過程(例如,當用戶按下足夠多的次數或作爲墓碑的結果),同時代理程序將愉快地生活,播放您的音樂並響應通用音量控制的「下一次暫停」先前播放「按鈕。這就是爲什麼你需要在後臺進程中播放你的播放列表。 – Soonts

+0

我看到了,我也希望你知道我沒有任何例外音樂文件存在或類似的東西!那麼我怎樣才能在播放列表中設置播放列表? –

相關問題