locked
Problème avec le MediaElement et le BackgroundAudioPlayer RRS feed

  • Question

  • Bonjour,
    J'ai une question concernant la lecture de sons avec un MediaElement.

    Lorsque le téléphone joue une musique et qu'on démarre l'application, on doit vérifier si un son est en cours afin de l'arrêter ou non (recalage assuré sinon ;)). Auriez-vous des infos/code sur le sujet. J'ai essayé en vérifiant MediaPlayer.State, mais derrière ça plante mon appli.
    Je cherche à savoir si un son est en train de jouer, et ensuite l'arrêter ou jouer par dessus, en fonction de ce qui est techniquement faisable. Egalement, si je l'arrête, est-ce à moi de le redémarrer à la fin de mon application (je ne pense pas)
    De plus, le MediaPlayer est du Xna, est-ce que cela implique qu'il ne sera pas compatible WP8 ?
    Merci d'avance pour vos réponse.

    Olivier VILLEDIEU

    mercredi 16 janvier 2013 20:06

Réponses

  • Voici la solution à mon problème :

    bool forceSoundOff  = false;
    
    //Vérifie si une musique est en train de tourner : 
    if (MediaPlayer.State == MediaState.Playing)
    {
    	if (MessageBox.Show("Media is currently playing, do you want to stop it when the game is running ?", "Stop Player", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
    	{
    		forceSoundOff = true;
    	}
    }
    
    
    //Et plus tard quand on a besoin d'un son
    if (forceSoundOff)
    {
    	soundPlayer.Source = SoundSource;
    	FrameworkDispatcher.Update();
    	soundPlayer.Play();
    }

    Si vous voyez autre chose, je suis bien sûr preneur.


    Olivier VILLEDIEU

    jeudi 17 janvier 2013 07:23

Toutes les réponses

  • Pas de soucis entre XNA et WP8.

    Si je me rappelle bien, tu dois regarder si le MediaPlayer.State est égale à "Playing".

    Tu fais une messagebox pour demander au user si il veut l'arréter. Et tu n'as pas à relancer ensuite.

    XNA compatible WP8

    mercredi 16 janvier 2013 21:35
  • Si la MediaPlayer.State est à "Playing", je pose la question à l'utilisateur.

    S'il dit STOP, comment je peux arrêter le musique ? Mes tentatives me font tout planter... (ou je m'y prends mal, fort possible)

    Et sinon, je ne joue pas de son de mon côté, et seule la musique du MediaPlayer sera émise, c'est bien ça ?


    Olivier VILLEDIEU

    jeudi 17 janvier 2013 06:30
  • Voici la solution à mon problème :

    bool forceSoundOff  = false;
    
    //Vérifie si une musique est en train de tourner : 
    if (MediaPlayer.State == MediaState.Playing)
    {
    	if (MessageBox.Show("Media is currently playing, do you want to stop it when the game is running ?", "Stop Player", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
    	{
    		forceSoundOff = true;
    	}
    }
    
    
    //Et plus tard quand on a besoin d'un son
    if (forceSoundOff)
    {
    	soundPlayer.Source = SoundSource;
    	FrameworkDispatcher.Update();
    	soundPlayer.Play();
    }

    Si vous voyez autre chose, je suis bien sûr preneur.


    Olivier VILLEDIEU

    jeudi 17 janvier 2013 07:23
  • J'ai publié mon application hier ou avant hier je crois, donc je verrai si celle-ci sera acceptée.

    Elle a déjà été une première fois refusée à cause de ce problème de musique.

    Sinon, 

    Comme ils testent tout le temps les mêmes scénarios, et que ce sont souvent les mêmes erreurs qui reviennent (dark/light, musique, langue, ...). Comme ils nous envoient un super PDF décrivant leur jeu/étape de tests (un grand merci à eux au passage pour le professionnalisme et la profondeur des tests, c'est vraiment top). Pensez-vous qu'il peut être intéressant qu'en plus de ces résultats de tests, en cas de KO, qu'ils soient accompagné d'un bout de code, ou d'un lien vers un code d'exemple expliquant et corrigeant le problème (comme mon problème de musique), du moins pour les problèmes les plus récurrents. Cela permettrai de gagner du temps en recherche/correction et de publier une nouvelle version plus rapidement.

    Qu'en pensez-vous ?


    Olivier VILLEDIEU

    vendredi 18 janvier 2013 09:30
  • Bonjour,

    Et bien mon application "VintageGames" a correctement été validée hier. Donc vous pourrez retrouver plus haut la proposition de correction concernant mon problème que j'ai apporté.

    (Je ne pense pas que ce soit la meilleure solution, mais elle a fonctionné).

    Petite auto-promotion au passage :

    VintageGames


    Olivier VILLEDIEU

    mercredi 23 janvier 2013 10:06