我正在开发一个wp7和某个部分的应用程序。
我启动了一个媒体元素,可以从隔离存储中播放我的音乐文件,并提供可用的功能(播放,暂停,下一个,上一个,搜索),一切都很完美!
现在我想让应用程序继续在用户退出或页面卸载时播放,或者当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;
}
}
问题是当app页面卸载时(不是用户退出,第一个问题) backgroundaudioplayer获取名称和EnabledControls以及所有工作人员,但即使我按下播放按钮也没有播放(所以按钮不起作用,第二个问题)!
此外,我想控制该播放器旁边的应用列表(上一个,下一个,播放,暂停),即使该应用已关闭!
所有歌曲都是隔离的,我在数据库中有歌曲名称和文件名。音轨如下:
AudioTrack audiotrack1 = new AudioTrack(new Uri(emp.EmployeeFile + ".mp3", UriKind.Relative), emp.EmployeeName, null, null, null, null, EnabledPlayerControls.All);
谢谢!
答案 0 :(得分:1)
实施背景音频需要更多工作。有关演练,请参阅此文章:http://msdn.microsoft.com/EN-US/library/windowsphone/develop/hh202978(v=vs.105).aspx
请注意代理位于另一个进程中,我不确定SqlCe是否支持从不同进程同时访问同一个数据库。 IMO与后台代理通信的最佳方式是由命名System.Threading.Mutex
保护的隔离存储文件(例如播放列表)。