WP7 - Управление BackgroundAudioPlayer из приложения Foreground - PullRequest
3 голосов
/ 13 октября 2011

Все сэмплы , которые я видел до сих пор, представляют собой агенты AudioPlaybackAgent с жестко закодированными списками песен.

Мне нужно контролировать список из приложения переднего плана. Кажется очевидным требованием ко мне.

API BackgroundAudioPlayer.Instance.Track создает видимость того, что вы можете добавить трек непосредственно в BackgroundPlayer из приложения Foreground, и они должны просто воспроизводиться. Это не похоже на работу

Что будет делать фоновый агент, если «список воспроизведения» - это всего лишь один трек?

Если список воспроизведения состоит из нескольких дорожек, и агент вызывается по его обратным вызовам для перемещения по списку, каков предлагаемый способ передачи списка воспроизведения из приложения переднего плана Агенту?

ТИА

Пэт Лонг

Ответы [ 3 ]

2 голосов
/ 18 августа 2012

Я обнаружил, что интерфейс между BackgroundAudioPlayer (BAP) и приложениями переднего плана - это, пожалуй, самый непродуманный элемент «разработки» в Windows Phone 7.x SDK. IsolatedStorage на самом деле не работает для меня, потому что мое приложение может загружать много файлов и воспроизводить только несколько за раз в «списке воспроизведения». Должен ли я временно скопировать эти файлы в «особое» место в IsolatedStorage, чтобы агент мог читать список воспроизведения оттуда? На 10 до 20 МБ поп, я так не думаю. Кроме того, если я хочу использовать службу фоновой передачи - которая работает довольно хорошо, кстати, - чтобы постепенно добавлять файлы в список воспроизведения, как бы я сказал агенту загружать больше дорожек по мере их загрузки? Если не соглашаться на какое-то соглашение, чтобы получить треки, созданные в правильном порядке, это не может быть сделано.

Пытался использовать статические элементы на агенте для добавления треков в список воспроизведения (как они предлагают в документах), и ... ммм ... да, это просто не стартер.

На данный момент я решил управлять списком воспроизведения в приложении переднего плана и передавать треки один за другим в BAP в зависимости от действий пользователя. Проблема в том, что это не работает с элементами управления BAP, показанными на экране блокировки. Не похоже, что он обрабатывает событие TrackEnded последовательно. Я в шаге от того, чтобы просто использовать MediaElement и полностью отказаться от фонового звука.

Надеюсь, тот, кто изобрел этот фарс API, не будет участвовать в будущих версиях WP.

1 голос
/ 13 октября 2011

Если вы работаете со списками воспроизведения, предполагается, что они будут добавлены / обновлены, даже если приложение не на переднем плане. В этом случае агент должен иметь возможность управлять списком воспроизведения.

Если вы просто воспроизводите одну дорожку за раз, тогда фоновому агенту просто нужно поддерживать воспроизведение дорожки, пока ваше приложение не на переднем плане.

Связь между приложением и агентом может быть в лучшем случае хитрой. Самый простой способ общения - это создать файлы в изолированном хранилище, которые один пишет, а другой читает (а затем удаляет) или через базу данных.

0 голосов
/ 30 июня 2013
AudioTrack audioTrack =
                new AudioTrack(new Uri("shared\\transfers\\1.mp3", UriKind.RelativeOrAbsolute), null,
                                null,
                                null,
                                null,
                                null,
                                EnabledPlayerControls.Pause);
 BackgroundAudioPlayer.Instance.Track = audioTrack;
                 BackgroundAudioPlayer.Instance.Play();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...