AudioPlayerAgent Streaming - Stop не удаляет буфер - PullRequest
1 голос
/ 01 февраля 2012

В настоящее время я занимаюсь разработкой приложения для веб-радио, и если пользователь нажимает клавишу паузы / остановки, поток должен прекратиться, и, конечно, когда он снова нажимает кнопку воспроизведения, поток должен продолжиться.

Проблема, с которой я столкнулся,, этот player.Stop () только приостанавливает дорожку.Если вы нажмете «Продолжить» еще раз, первые 5 секунд будут считаны не из потока, а из буфера, затем он не будет воспроизводить звук в течение нескольких секунд, а затем снова начнет читать из потока.

Это фатально дляприложение веб-радио.Как я могу это исправить?Или как я могу удалить буфер?

    protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
    {
        switch (playState)
        {
            case PlayState.TrackReady:
                player.Play();
                break;
            case PlayState.Stopped:
                player.Stop();
                break;
            case PlayState.Paused:
                player.Stop();
                break; 
        }

        NotifyComplete();
    }

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Хорошо ... просто, чтобы вы, ребята, знали, это то, что я сделал.Я не знаю, есть ли лучший способ, но это работает для меня:

        protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
    {
        switch (playState)
        {
            case PlayState.Stopped:
                track.BeginEdit();
                track.Tag = track.Source.OriginalString;
                track.Source = new Uri("http://127.0.0.1", UriKind.Absolute);
                track.EndEdit();

                player.Track = track;
                break;


        protected override void OnUserAction(BackgroundAudioPlayer player, AudioTrack track, UserAction action, object param)
    {
        switch (action)
        {
            case UserAction.Play:
                if (player.PlayerState != PlayState.Playing)
                {
                    try
                    {
                        player.Play();
                    }
                    catch(Exception)
                    {
                        track.BeginEdit();
                        track.Source = new Uri(player.Track.Tag, UriKind.Absolute);
                        track.EndEdit();

                        player.Track = track;
                        player.Play();
                    }
                }
                break;
            case UserAction.Stop:
            case UserAction.Pause:
                if (player.Track.Source.OriginalString != "http://127.0.0.1/")
                {
                    player.Stop();
                }
                break;
0 голосов
/ 01 февраля 2012

Как насчет того, чтобы прекратить все, когда вы останавливаетесь, и обновлять его снова, когда воспроизведение начинается снова? Кажется, используемая вами функциональность больше подходит для приостановки статического контента. Пауза не имеет большого смысла с радио.

...