Developer's Diary

8 agosto, 2010

Reproducir sonidos en Windows Mobile

Si queremos reproducir sonidos en Windows Mobile, hay varias maneras de hacerlo. Que vamos a enumerar aquí:

Mediante la libreria wmp.dll

Podemos integrar en las referencias de nuestro proyecto la libreria wmp.dll, está es la libreria de windows media player y funciona de una manera parecida al control ActiveX.

Para reproducir sonidos por esta vía, solo tenemos que asignar la ruta del archivo a la propiedad Url y posteriormente llamar el método Play.

También podemos aumentar el volumen, por la propiedad Volume.

Ventajas:

Podemos también reproducir videos, grabar discos, ripear música. Esta libreria contiene gran cantidad de métodos, que no solo se quedan en reproducir música. No he tenido tiempo para poder usar todas esas funcionalidades adicionales.

Desventajas:

El tamaño de la liberia, que es aproximadamente unos díez megas.

Mediante llamadas a la Api.

Una segunda manera de poder reproducir sonidos, es mediante llamadas a la API de unas de las librerias que se encuentran incluidas dentro de nuestros dispositivos móviles. Nos permite reproducir varios tipos de sonidos (.mp3 , .wav , .wma)

Las llamadas deben hacerse en la libreria aygshel.dll, hay que recordar que para poder hacer llamadas a API, es necesario importar el espacio de nombres System.Runtime.InteropServices.

Este es el código que debeis integrar si quereis usar el método.

[DllImport(“aygshell.dll”)]
static extern uint SndOpen(string pszSoundFile, ref IntPtr phSound);

[DllImport(“aygshell.dll”)]
static extern uint SndPlayAsync(IntPtr hSound, uint dwFlags);

[DllImport(“aygshell.dll”)]
static extern uint SndClose(IntPtr hSound);

[DllImport(“aygshell.dll”)]
static extern uint SndStop(int SoundScope, IntPtr hSound);

[DllImport(“aygshell.dll”)]
static extern uint SndPlaySync(string pszSoundFile, uint dwFlags);

const int SND_SCOPE_PROCESS = 0x1;

Mediante la función SndOpen, le pasamos la ruta del sonido y un puntero a integer. Como el puntero a integer se le pasa mediante referencia, recuperaremos un valor. Ese valor se lo pasaríamos o a SndPlayAsync o SndPlaySync. Que es el verdadero encargado reproducir el sonido.

Ventajas:

La integración es limpia en nuestra aplicación, no aumenta excesivamente el tamaño, no añadimos nada nuevo al proyecto, aprovechamos lo que nos ofrece nuestro dispositivo.

Desventajas:

Aunque sea una API fácil. Si no estás acostumbrado en el uso y llamadas de API a las librerias, puede resultarte ciertamente difícil. Recomiendo estudiar llamadas a la API de Windows para familiarizarse con esta metodología de programación.

Mediante el espacio de nombres System.Media

Este espacio de nombres que pertenece al Framework, nos permite reproducir sonidos, eso sí, solo de formato .wav.

Para poder hacer uso de esta metodología solo tenemos que instanciar una clase incluida dentro de este espacio de nombres, llamada SoundPlayer.  Para reproducir el sonido, solo tenemos que llamar al método SoundPlayer que tiene varias sobrecargas. La más simple es pasarle un objeto de tipo String, que es la ruta del fichero .wav. Posteriormente solo será necesario hacer una llamada al método Play que se encargara de reproducir el sonido.

Ventajas:

Uso de las funcionalidades que nos permite el framework. Sin tener que hacer referencia a otros valores, siendo más segura su ejecución.

Desventajas:

Solo nos permite reproducir archivos con extensión .wav. Esto nos limita bastante las posibilidades.

Estas son tres de las muchisimas maneras de las que podemos reproducir sonidos. Estas vías también pueden ser usadas en aplicaciones de Windows Forms, exceptuando la segunda. Debido a que son llamadas a la API de Windows Mobile y no de Windows. No obstante, habrá una llamada a alguna de las APIs de Windows que también nos permita hacer algo similar.

Os dejo aquí un código de prueba con las tres maneras de reproducir un mismo sonido.

Saludos!




Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: