0

我正在 wp7 和某些部分开发一个应用程序。

我启动了一个 mediaelement 来从隔离存储中播放我的音乐文件,具有可用的功能(播放、暂停、下一个、上一个、查找),一切都很完美!

现在我想让应用程序继续在用户退出或页面卸载或类似媒体元素已经播放时播放!

注意在上面尝试

list.playlist:是一个包含音轨的列表
num_input:是列表中将要播放的音乐文件的数量,(获取:来自 mediaelement)
time_input:是媒体元素在停止之前的时间跨度,(设置:backgroundaudioplayer 开始)
play: 是布尔变量,如果 mediaelement 播放则为真
Stop():是停止媒体元素播放的函数

那就是我正在尝试的是:

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;
     }
}

问题是,当应用程序页面卸载时(不是在用户退出时,第一个问题)backgroundaudioplayer 获取名称和 EnabledControls 以及所有工作人员,但即使我按下播放按钮它也没有播放(所以按钮不起作用,第二个问题)!

此外,即使应用程序关闭,我也想控制该播放器旁边的应用程序列表(上一个、下一个、播放、暂停)!

所有歌曲都位于孤立的位置,我在数据库中有歌曲名和文件名。音轨看起来像:

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

谢谢!

4

1 回答 1

1

实现背景音频需要更多的工作。请参阅这篇文章了解演练: http: //msdn.microsoft.com/EN-US/library/windowsphone/develop/hh202978 (v=vs.105).aspx

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

于 2013-07-26T16:46:08.833 回答