如何在WindowsPhone中的AudioPlaybackAgent之间设置/获取全局变量

时间:2012-06-21 13:51:23

标签: c# windows-phone-7 background-audio

我正在尝试使用AudioPlaybackAgent作为微软在Samples中展示的小半径。在示例中,我们有一个adudios列表:

private static List<AudioTrack> _playList = new List<AudioTrack>
{
    new AudioTrack(new Uri("http://000.000.000.000/radio1.mp3", UriKind.Absolute),
    "Radio 1", null, null, null, null, EnabledPlayerControls.Pause),

    new AudioTrack(new Uri("http://000.000.000.000/radio2.mp3", UriKind.Absolute), 
    "Radio 2", null, null, null, null, EnabledPlayerControls.Pause)
};

在这里我会播放曲目:

private void PlayTrack(BackgroundAudioPlayer player)
{
    player.Track = _playList[VARIABLE];
}

On“VARIABLE”我想根据我在主项目中打开的页面放置一个变量。我怎么能这样做?我没有退出就尝试了很多东西。 Thnks !!

2 个答案:

答案 0 :(得分:1)

最后的答案:如果您不需要在后台使用音频,您可以简单地使用媒体元素,但如果您想使用它,您不能使用公共变量在后台代理和主项目之间进行交互,您必须使用音频播放器的Tag属性来存储和获取数据,如果这不起作用,你可以试试IsolatedStorge - Mutex。

答案 1 :(得分:0)

如果您想根据用户正在查看的页面播放音乐,则应使用MediaElement控件而不是音频代理。您可以将MediaElement的源设置为您想要的任何内容。你可以这样做是XAML或代码

<MediaElement x:Name="MyMediaElement" Source="{Binding YourProperty}"/>

MyMediaElement.Source = new Uri(model.YourProperty);
MyMediaElement.Volume = 1;
MyMediaElement.Play();

您还可以从应用程序

设置BackgroundAudioPlayer的轨道
var track = new AudioTrack(
        new Uri(AudioUri),
        "Some song",   // can be an empty string if no song title
        "Some artist", // can be an empty string if no artist name
        null, // album
        null, // album art
        );

BackgroundAudioPlayer.Instance.Track = track;
BackgroundAudioPlayer.Instance.Play();