【问题标题】:Background audio not working背景音频不工作
【发布时间】:2015-10-28 18:12:26
【问题描述】:

我有几页,其中一页是图书馆页面。在那个库页面上,我得到了从我网站上的 php 文件反序列化的歌曲,并且该 php 文件从 mysql 数据库请求歌曲标题、艺术家姓名等。

当我尝试将歌曲添加到 itemGridView 时,一切正常。当我从 itemGridView(Windows phone 10 和 Windows 10 上的背景)中选择一首歌曲时,一切正常。

问题是,当我尝试从轨道切换时,传输控件卡住了,2 秒后它消失了。我做错什么了吗?我只是从背景样本中复制了所有内容。

这是我将歌曲添加到 gridView 时的代码:

    private HttpClient httpClient;
    public start()
    {
        this.InitializeComponent();
        httpClient = new HttpClient();
        // Limit the max buffer size for the response so we don't get overwhelmed
        httpClient.MaxResponseContentBufferSize = 256000;
        httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
         this.NavigationCacheMode = NavigationCacheMode.Required; 
        Instance = this;
        Loaded += Start_Loaded;     
        initializeSongs();
        backgroundAudioTaskStarted = new AutoResetEvent(false);
        itemGridView.ItemsSource = Songs;
    }


async void initializeSongs()
    {
        try
        {

            HttpResponseMessage response = await httpClient.GetAsync("http://www.myproductsofficial.eu/testt.php");
            string array = await response.Content.ReadAsStringAsync();
            string json = array;
            MessageDialog mes = new MessageDialog(json);
            await mes.ShowAsync();
            var xdd = JsonConvert.DeserializeObject<List<RootObject>>(json);
            foreach (var xd in xdd)
            {
                var song = new SongModel();
                song.Title = xd.SongName;
                song.Artist = xd.ArtistName;
                song.Listens = xd.Listens;
                song.AlbumArtUri = new Uri(xd.Thumbnail);
                song.MediaUri = new Uri(xd.MediaLink);
                Songs.Add(song);

            }
            foreach (var song in Songs)
            {
                var bitmap = new BitmapImage();
                bitmap.UriSource = song.AlbumArtUri;
                albumArtCache[song.AlbumArtUri.ToString()] = bitmap;
            }
        }
        catch (Exception e1)
        {
            MessageDialog mes = new MessageDialog(e1.Message);
            mes.ShowAsync();
        }

    }

   private void itemGridView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var song = itemGridView.SelectedItem as SongModel;
        Debug.WriteLine("Clicked item from App: " + song.MediaUri.ToString());

        // Start the background task if it wasn't running
        if (!IsMyBackgroundTaskRunning || MediaPlayerState.Closed == BackgroundMediaPlayer.Current.CurrentState)
        {
            // First update the persisted start track
            ApplicationSettingsHelper.SaveSettingsValue(ApplicationSettingsConstants.TrackId, song.MediaUri.ToString());
            ApplicationSettingsHelper.SaveSettingsValue(ApplicationSettingsConstants.Position, new TimeSpan().ToString());

            // Start task
            StartBackgroundAudioTask();
        }
        else
        {
            // Switch to the selected track
            MessageService.SendMessageToBackground(new TrackChangedMessage(song.MediaUri));
        }

        if (MediaPlayerState.Paused == BackgroundMediaPlayer.Current.CurrentState)
        {
            BackgroundMediaPlayer.Current.Play();
        }
    }

我检查了应用程序是否进入暂停模式和恢复模式。我还检查了背景音频的声明选项卡,入口点是:BackgroundAudioTask.MyBackgroundAudioTask

项目截图:http://prntscr.com/81mrlq BackgroundAudioTask:Windows 运行时组件 BackgroundAudioShared:类库(DLL)

【问题讨论】:

  • 请说明您的问题,这太宽泛了。 Look here how to ask a good question。 Plus SO并不是真的打算找一个“老师”。如果您可以像上面的链接中描述的那样缩小您的问题范围,人们可能会帮助您。不过,您可能需要问不止一个问题。此外,可能已经回答了特定问题,这通常很有帮助,因为它们经过了编辑,并且在问题和答案方面可能具有更高的质量。尝试使用搜索,您会惊讶地发现您经常能找到一些东西。
  • @FrankJ 坦率地说,我问了太多问题但没有得到一个答案!!!
  • @FrankJ 更新了它。更好?
  • @Christos 没有得到答案是一个相当强烈的指标,表明问题写得不好,但还不足以吸引反对票或被关闭。他们只是被忽略了,这可能更糟。如果您想获得答案,您应该真的阅读编写好问题的指南。段落、标点符号、避免绒毛也有帮助
  • @PanagiotisKanavos 是的,但我的帖子真的很难理解吗,我的意思是:我只想让后台音频任务正常运行!

标签: c# uwp


【解决方案1】:

在这里回答一个老问题。通过 Win10 周年更新(内部版本 14393),我们显着简化了背景媒体播放的模型。

MSDN 文档: https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/background-audio

示例应用: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BackgroundMediaPlayback

谢谢, Stefan Wick - Windows 开发者平台

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    相关资源
    最近更新 更多