我正在开发一个通过流媒体播放在线广播的应用程序。我使用过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,其中有一个“Exit”按钮。用户单击此按钮后,流媒体应立即停止,应用程序应自行关闭。我无法以编程方式关闭应用程序。代码如下:
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之外还有其他任何方式在媒体中流媒体,请同样建议.. 希望尽快回复。感谢所有提前。