首页 文章

背景音频与第三方音频库

提问于
浏览
0

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

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

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

1 回答

  • 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
            });
        }
    

相关问题