如何在调用 Close 方法后重用BackgroundAudioPlayer

2023-12-04

我使用 MediaElement 来播放视频,使用 BackgroundAudioPlayer 来播放音频。

这是一个案例。

我正在通过 BackgroundAudioPlayer 播放远程音频。 然后我想播放视频,在 MediaElement 开始播放视频之前,我按照 BackgroundAudioPlayer 最佳实践中的建议调用 BackgroundAudioPlayer.Close。

MediaElement and the BackgroundAudioPlayer

Care must be taken when mixing BackgroundAudioPlayer and MediaElement for audio playback.

1. Close() must be called before switching to MediaElement playback.

2. There is only one media queue. Your application cannot pause background audio, play something with MediaElement then resume the background audio stream.

但是在播放视频后我想再次播放音频。

// Play audio result
BackgroundAudioPlayer.Instance.Track = new AudioTrack(new Uri(audioSearchResult.Url, UriKind.Absolute), audioSearchResult.Title, null, null, null, 
                AudioPlayer.TrackStateBuffering, EnabledPlayerControls.All);
BackgroundAudioPlayer.Instance.Play();

我越来越InvalidOperationException第一行代码显示“背景音频资源不再可用”。 那么,在使用 MediaElement 后,如何在我的应用程序中重用 BackgroundAudioPlayer 呢?

EDIT:

如果使用 MediaPlayerLauncher 而不是 MediaElement,它会在第二次播放音频时工作,因为 MediaPlayerLauncher 启动时应用程序将被逻辑删除。但是是否可以在一个应用程序中混合 MediaElement 和 BackgroundAudioPlayer!?!?! 似乎是 MS 的另一个噩梦:(


看起来,在使用 MediaElement 播放视频后,您需要在视频结束后和使用任何其他 BackgroundAudioPlayer 方法之前再次调用 BackgroundAudioPlayer.Instance.Close() 才能继续使用后台音频播放器。

你的例子应该是这样的:

// Play audio result
BackgroundAudioPlayer.Instance.Close();
BackgroundAudioPlayer.Instance.Track = new AudioTrack(new Uri(audioSearchResult.Url, UriKind.Absolute), audioSearchResult.Title, null, null, null, AudioPlayer.TrackStateBuffering, EnabledPlayerControls.All);
BackgroundAudioPlayer.Instance.Play();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在调用 Close 方法后重用BackgroundAudioPlayer 的相关文章

随机推荐