5

Ich habe einen Audio-Player, der BackgroundAudioPlayer zusammen mit AudioPlayerAgent verwendet. Alles funktioniert gut, außer dass es einen Anwendungsfall gibt, mit dem ich nicht umgehen kann.Reagieren auf UserAction in AudioPlayerAgent, wenn App angehalten wird

Wenn ich eine Audiospur in meiner Anwendung spiele und der Benutzer dann zu einer anderen Anwendung wechselt, wird die Audiospur weiterhin im Hintergrund abgespielt - aber ich vermute, dass meine Anwendung jetzt in den Speicher verschoben wurde und unterbrochen wurde.

Meine Frage ist: Wenn der Benutzer jetzt beginnt, Musik in einer anderen App abzuspielen, bekomme ich die Aktion AudioPlayerAgent.UserAction.Stop als Rückruf an meine AudioAgent. Aber kann ich jetzt aus der Sicht meiner App etwas dagegen tun? Ich meine, ich möchte die Position der Audiowiedergabe speichern, wo der Benutzer in meiner App war, aber meine App wurde gesperrt, oder?

Wenn meine App im Vordergrund ist und der Ton stoppt, erhalte ich das Ereignis BackgroundAudioPlayer.Instance.PlayerState.Stopped. Hier speichere ich normalerweise die Position der Wiedergabe. Aber wenn der Benutzer zu einer anderen App wechselt, um Musik abzuspielen, bekomme ich dieses Ereignis nicht.

Also frage ich mich nur, wie man mit dieser Art von Fall umzugehen. Kann ich etwas tun, um die Benutzererfahrung zu verbessern?

+0

der einzige Weg, diese Position zu isolierten Speicher in dem Agenten Code zu speichern ist zu kommunizieren – onmyway133

+0

Nach dieser Frage zu schreiben, war ich auch an den isolierten Speicher denken. Ich war mir nicht sicher, ob das vom Agentencode aus erreichbar ist. Scheint es ist. Werde versuchen. Vielen Dank! –

+0

@JohanPaul - Stellen Sie sicher, dass Sie ein ['Mutex'] (http://msdn.microsoft.com/en-us/library/system.threading.utex%28v=vs.95%29.aspx) beim Zugriff auf die isolierter Speicher, andernfalls könnten Ihre Forgorund-App und Ihr Hintergrundagent versuchen, gleichzeitig auf sie zuzugreifen. –

Antwort

1

Die einzige Möglichkeit besteht darin, diese Position im Agentencode unter Isolated Storage zu speichern.

Sehen Sie diese very useful article of Paul wie Background Audio-Mittel zu verwenden und die Art und Weise zwischen UI und Agentenseite

+0

Wenn ich das PlayState.Stopped-Ereignis als Ergebnis der Wiedergabe einer externen App erhalte, scheint die Eigenschaft player.Position nicht mehr verfügbar zu sein. Irgendwelche Ideen, wie man die Position der Strecke vor dem gestoppten Ereignis (oder währenddessen ...) erreichen könnte? –