2016-08-10 1 views
-1

J'ai créé une application UWP pour lire certaines pistes en arrière-plan. Fondamentalement en suivant ce lien: https://blogs.windows.com/buildingapps/2016/01/13/the-basics-of-background-audio/. Je veux définir le nombre de répétitions pour certaines chansons, donc si une chanson a le nombre de répétitions 10, cette chanson est censée être répétée 10 fois avant de passer à la chanson suivante dans la liste de lecture.Comment lire des morceaux en mode de répétition dans une application UWP

Sur la plate-forme Windows Phone 8.0, le AudioPlayerAgent avait l'événement suivant qui indiquait que l'état de lecture avait changé. Il était facile de remplacer cet événement et d'ajouter une logique personnalisée pour répéter des chansons.

protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState) 
{ 
    switch (playState) 
    { 
     case PlayState.TrackEnded: 

      // keep repeating the same track 
      player.Position = new TimeSpan(0, 0, (int)0); 
      // add custom logic here..  
      break; 
    } 
    NotifyComplete(); 
} 

Qu'est-ce qu'un événement équivalent dans la plateforme UWP? Jusqu'à présent, j'ai essayé les événements suivants sur la plate-forme UWP, mais en vain ..

BackgroundMediaPlayer.Current.CurrentStateChanged += Current_CurrentStateChanged; 
BackgroundMediaPlayer.Current.MediaEnded += Current_MediaEnded; 
BackgroundMediaPlayer.Current.MediaOpened += Current_MediaOpened; 
+0

Downvoter soin d'expliquer? – bit

Répondre

0

Avec Windows 10, la version 1607, un nouveau modèle unique processus a été mis en place qui simplifie considérablement le processus d'activation audio de fond. Les médias continuent de jouer lorsque votre application passe du premier plan à l'arrière-plan. Cela signifie que même après que l'utilisateur a réduit votre application, soit retourné à l'écran d'accueil ou ait quitté votre application d'une autre manière, votre application peut continuer à lire de l'audio.

À partir de Windows 10, la version 1607, la meilleure pratique pour la lecture des médias est d'utiliser la classe MediaPlayer au lieu de MediaElement

recommandée Lire un fichier multimédia avec MediaPlayer

_mediaPlayer = new MediaPlayer(); 
_mediaPlayer.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/example_video.mkv")); 
_mediaPlayer.Play(); 

MSDN: Play media in the background

Maintenant, votre application peut gérer la playlist ou les paramètres de boucle et utiliser l'instance du lecteur multimédia pour rappeler la méthode Play.

+1

Je ne vois pas comment cela vous permet de répéter une seule piste pour un nombre de fois désiré. – bit

+0

Puisque l'audio d'arrière-plan est maintenant dans l'application, l'application pourra rappeler la méthode Play. Cela peut être fait en utilisant la propriété Position de l'objet PlaybackSession dans l'événement Média terminé. (Remarque: vous devez maintenant utiliser la nouvelle classe MediaPlayer et non la classe backgroundaudioplayer) – Shubhan