背景音频与第三方音频库

时间:2018-04-16 15:34:51

标签: uwp win-universal-app

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

但是,大多数样本不支持背景音频播放。我试图在应用程序清单上添加背景音频功能,但它没有改变任何东西。

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

1 个答案:

答案 0 :(得分:0)

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

基于背景音频的文档,dev应该手动集成已包含在MediaPlayer中的SystemMediaTrnasportControl。

这是引用:

  

如果您未使用MediaPlayer提供的自动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
        });
    }