[WP7 Tips] Parar la música al partir si tu app reproduce media

Bueno, no sabía como llamarle al post, pero es simplemente eso, subí una aplicación al market y fue rechazada, el problema? es que se me debía dar la opción de parar la reproducción de media en el caso que se esté reproduciendo algo, mi app utiliza la reproducción de sonido mediante Microsoft.Xna.Framework.Media, entonces,  en pocas palabras, es requisito que manejemos la reproducción de audio en nuestras apps que también lo ocupan.

Entonces, lo que se puede hacer es consultar si es que se está reproduciendo media y si es así parar la reproducción de media, esto lo voy a hacer en el siguiente código:

public main()

{

   InitializeComponent();

    if (Microsoft.Xna.Framework.Media.MediaPlayer.State ==  Microsoft.Xna.Framework.Media.MediaState.Playing)

  {

     if (MessageBox.Show("Actualmente se esta reprouciendo Media, Desea pausar la reproducción? Haga Click en  "Aceptar" para pausar la reproducción en curso, "Cancelar" para seguir reproduciendo la música y continuar en Dead Dedo", "Reproducción de Media", MessageBoxButton.OKCancel) == MessageBoxResult.OK)

  {

   try

     {

        FrameworkDispatcher.Update();

        Microsoft.Xna.Framework.Media. MediaPlayer.Pause();

     }catch (Exception ex)

     {

        MessageBox.Show(ex.Message);

     }

   }

    else

      {

        App.Current.EnabledSound = false; 

      }

   }

}

Como vez inicialmente se consulta por que estado del mediaplayer, si esta reproduciendo, consultamos al usuario si es que desea pausar la música y seguir con la aplicación, en otro caso, se continuará con la reproducción de media y voy a parar el sonido de mi aplicación con el App.Current.EnabledSound=false, la cual no es nada más que una propiedad en el App.xaml.cs. Para acceder de manera más sencilla ocupo el siguiente código:

public static new App Current

{

    get { return Application.Current as App; }

}

 

public Boolean EnabledSound { get; set; }

Ahora antes de ejecutar un sonido , siempre consulto sobre el estado de la variable. Sin embargo en en algunos casos tenía atachado mediante código XAML el sonido a cierto comportamiento , como por ejemplo los botones:

 

<i:EventTrigger x:Name="trigger1"  EventName="Click"> 
    <eim:PlaySoundAction Volume="1" x:Name="lazer1" Souce="/sound/laser.mp3" />
</i:EventTrigger>

 

Le agregué al EventTrigger un nombre (x:Name) para que sea accesible fácilmente desde el código y poder deatacharlo:

 

if (!App.Current.EnabledSound)

{

     trigger1.Detach();

}

Bueno, luego de arreglar mi problema de esta manera, la aplicación fue aprobada Sonrisa

Espero que este tip te sea útil.

Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *