我正在开发一个应用程序来通过流媒体播放在线广播。我用过 MediaElement。但问题是播放器不在后台播放。我的意思是只要我点击手机上的“开始”或“返回”按钮,流媒体和音频就会停止。我没有在任何设备上测试过它,所以如果它确实发生在模拟器而不是设备上,请告诉我。这是我的代码..
private void Play()
{
if (mediaElement == null || mediaElement.CurrentState != MediaElementState.Playing)
{
if (SystemTray.ProgressIndicator == null)
SystemTray.ProgressIndicator = new ProgressIndicator();
SystemTray.ProgressIndicator.IsIndeterminate = true;
SystemTray.ProgressIndicator.IsVisible = true;
SystemTray.ProgressIndicator.Text = "Connecting to *********...";
mediaStream = new ********.RadioStream(uri);
mediaStream.StreamSetupComplete += (o, e) =>
{
Dispatcher.BeginInvoke(() =>
{
if (mediaElement != null)
{
LayoutRoot.Children.Remove(mediaElement);
}
mediaElement = new MediaElement();
mediaElement.Volume = 1.0;
LayoutRoot.Children.Add(mediaElement);
mediaElement.SetSource(mediaStream);
SystemTray.ProgressIndicator.IsVisible = false;
});
};
}
}
我想知道使它在后台播放的步骤。至少当用户按下“开始”按钮时,音频流不应该停止。
我还有一个问题是我添加了一个ApplicationBarMenu,其中有一个“退出”按钮。一旦用户单击此按钮,流应该停止并且应用程序应该自行关闭。我无法以编程方式关闭应用程序。代码如下..
void exit_Click(object sender, EventArgs e)
{
if (playing)
{
MessageBoxResult Choice;
Choice = MessageBox.Show("Media is currently playing, do you want to stop it?", "Stop Player", MessageBoxButton.OKCancel);
if (Choice == MessageBoxResult.OK)
{
ImageBrush brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri(@"Images/play.png", UriKind.Relative));
play.Background = brush;
Stop();
playing = false;
try
{
// if (NavigationService.CanGoBack)
// {
// while (NavigationService.RemoveBackEntry() != null)
// {
// NavigationService.RemoveBackEntry();
// }
// }
}
catch
{
}
}
else
{
}
}
}
请帮助我正确的代码。即使有除 MediaElement 之外的任何其他方式在后台流式传输媒体,也请提出建议.. 希望尽快回复。提前感谢大家。