5

Mam odtwarzacz audio, który używa BackgroundAudioPlayer wraz z AudioPlayerAgent. Wszystko działa dobrze, z wyjątkiem jednego przypadku użycia, którego nie potrafię obsłużyć.Reagowanie na UserAction w AudioPlayerAgent po zawieszeniu aplikacji

Jeśli odtwarzam ścieżkę dźwiękową w mojej aplikacji, a następnie użytkownik przełącza się do innej aplikacji, ścieżka audio nadal odtwarzana jest w tle tak jak powinna - ale domyślam się, że moja aplikacja została teraz zamieniona na pamięć i jest zawieszona.

Moje pytanie brzmi: jeśli użytkownik zaczyna teraz odtwarzać muzykę w innej aplikacji, otrzymuję akcję AudioPlayerAgent.UserAction.Stop jako oddzwonienie do mojej AudioAgent. Ale czy mogę teraz coś z tym zrobić z punktu widzenia mojej aplikacji? Chodzi mi o to, chciałbym zapisać pozycję odtwarzania dźwięku, w którym użytkownik był w mojej aplikacji, ale moja aplikacja została zawieszona, prawda?

Gdy moja aplikacja jest na pierwszym planie, a dźwięk się zatrzymuje, pojawia się zdarzenie BackgroundAudioPlayer.Instance.PlayerState.Stopped. To tutaj zwykle zapisuję pozycję odtwarzania. Ale jeśli użytkownik przełącza się do innej aplikacji, aby odtwarzać muzykę, nie otrzymam tego zdarzenia.

Zastanawiam się, jak sobie z tym poradzić. Czy jest coś, co mogę zrobić, aby poprawić komfort korzystania z witryny?

+0

jedynym sposobem jest zapisanie tej pozycji do pojedynczych Przechowywanie w kodzie agenta – onmyway133

+0

Po napisaniu to pytanie, byłem także myśl o odizolowanym magazynie. Po prostu nie był pewien, czy jest to dostępne z kodu agenta. Wygląda na to. Spróbuję. Dzięki! –

+0

@JohanPaul - Upewnij się, że używasz ['Mutex'] (http://msdn.microsoft.com/en-us/library/system.threading.mutex%28v=vs.95%29.aspx) podczas uzyskiwania dostępu do pojedyncze miejsce, w przeciwnym razie aplikacja foregorund i agent działający w tle mogą spróbować uzyskać do niego dostęp w tym samym czasie. –

Odpowiedz

1

Jedynym sposobem jest zapisanie tej pozycji do Isolated Storage w kodzie agenta.

Zobacz ten very useful article of Paul temat korzystania tle Agent audio i sposób komunikowania się między UI i agenta stronie

+0

Po pobraniu zdarzenia PlayState.Stopped w wyniku uruchomienia zewnętrznej aplikacji wydaje się, że właściwość player.Position nie jest już dostępna. Jakieś pomysły, jak zdobyć pozycję toru przed zdarzeniem zatrzymanym (lub podczas tego ...)? –

Powiązane problemy