[WP7] Detectar la reproducción de música

Uno de los puntos en los que tenemos que estar atentos para que nuestras aplicaciones logren pasar el proceso de certificación del MarketPlace es si el dispositivo está reproduciendo música en el momento de ejecutar nuestra aplicación.

En el caso de que el usuario esté escuchando música nuestra aplicación debería  pedirle permiso antes de poder cortar esa reproducción.

Detectar si se reproduce música es sencillo, simplemente vamos a añadir a la clase App.xaml.cs el namespace Microsoft.XNA.Framework.Media y así podremos hacer uso de una variable booleana MediaPlayer.GameHasControl esta variable nos dice si tu programa tiene el control sobre la reproducción de sonido.

El ejemplo que muestro a continuación lo he realizado usando Silverlight por lo que el namespace que indico arriba no viene por defecto , así que pulsamos con el botón derecho del ratón en la carpeta de referencias y pulsamos en agregar referencia y del listado que obtenemos usamos Microsoft.XNA.Framework.

Al añadir la referencia Visual Studio nos advierte de que pueden aparecer “rayos y centellas” cuando menos lo esperemos, no tengáis miedo y decidle que SI queréis continuar Sonrisa.

Es hora de abrir la clase App.xaml.cs y añadir el siguiente código al evento Application_Launching que ejecuta lo que sea necesario cuando se está iniciando la aplicación:

[sourcecode language=’c#’]
private void Application_Launching(object sender, LaunchingEventArgs e)
{
FrameworkDispatcher.Update();

if (MediaPlayer.GameHasControl==false)
{

if (MessageBox.Show(“Quieres cortar la reproducción de música en background”, “Aviso”, MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
{
Application.Current.Exit+=new EventHandler(Current_Exit);
}
}
}
[/sourcecode]

Antes de nada lo primero que podéis ver es la instrucción FrameworkDispacher.Update(). En XNA la clase Game se encarga automáticamente de llamar a este método para conocer el estado de diferentes componentes del dispositivo, como el proyecto lo estamos realizando con Silverlight debemos ser nosotros quienes llamemos al método en el momento que lo necesitemos.

A continuación pregunto por el control del sonido, en el caso de que no lo tenga mi aplicación lanzo un MessageBox, si el usuario pulsa “Ok” la aplicación corta automáticamente la reproducción de sonido en background y toma el control y en el caso de pulsar “Cancel” sale de la aplicación inmediatamente.

Creo que es la forma mas sencilla que tenemos de programar nuestra aplicación para que pase este punto de la certificación.

Espero que sirva, un saludo Sonrisa

 

cesar

 

Leave a Reply

Your email address will not be published. Required fields are marked *