应用关闭时继续播放音乐

时间:2013-07-26 16:31:24

标签: c# windows-phone-7 backgroundworker mediaelement

我正在开发一个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);

谢谢!

1 个答案:

答案 0 :(得分:1)

实施背景音频需要更多工作。有关演练,请参阅此文章:http://msdn.microsoft.com/EN-US/library/windowsphone/develop/hh202978(v=vs.105).aspx

请注意代理位于另一个进程中,我不确定SqlCe是否支持从不同进程同时访问同一个数据库。 IMO与后台代理通信的最佳方式是由命名System.Threading.Mutex保护的隔离存储文件(例如播放列表)。