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?
jedynym sposobem jest zapisanie tej pozycji do pojedynczych Przechowywanie w kodzie agenta – onmyway133
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! –
@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. –