带有第三方音频库的背景音频



我正在开发一个显示音频频谱的音乐播放器。根据我的发现,可以使用Bass.dll(音频库)来做到这一点。

但是,这些示例中的大多数不支持后台音频播放。我尝试在应用程序清单上添加背景音频功能,但它没有改变任何内容。

如何使用第三方音频库以及支持背景音频播放?我做了一些研究,发现在自定义音频播放器中加入SystemMediaTransportControl可能是一种选择,但我不确定。如果有人能给我一个提示,将不胜感激

经过一番研究和实验,我终于找到了解决方案。

根据背景音频的文档,开发人员应该手动集成已经包含在MediaPlayer中的SystemMediaTrnasportControl。

这是报价:

如果您没有使用媒体播放器提供的自动 SMTC 集成,则必须手动与 SMTC 集成以启用背景音频。你的应用至少必须通过将 IsPlayEnabled 和 IsPauseEnabled 设置为 true 来启用播放和暂停按钮。你的应用还必须处理 ButtonPressed 事件。如果你的应用不满足这些要求,则当应用移动到后台时,音频播放将停止。

使用新的单进程模型作为背景音频的应用应通过调用 GetForCurrentView 来获取 SystemMediaTransportControls 的实例。对背景音频使用旧版双进程模型的应用必须使用 BackgroundMediaPlayer.Current.SystemMediaTransportControls 才能从其后台进程访问 SMTC。

简而言之,这是背景音频的两个最低代码

public BassAudioPlayer(CoreDispatcher dispatcher)
{
_dispatcher = dispatcher;
_smtc = SystemMediaTransportControls.GetForCurrentView();
_smtc.ButtonPressed += systemMediaControls_ButtonPressedAsync;
_smtc.IsPlayEnabled = true;
_smtc.IsPauseEnabled = true;
}
private async void systemMediaControls_ButtonPressedAsync(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args)
{
await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
//Whatever you want to add in
});
}

最新更新